Available for internships & new grad roles

I'm Baran Dursun.
I build and ship data-heavy products.

McGill CS & Economics '26. I ship full-stack, data-heavy products end to end — an App Store app and three live data platforms, from ingestion pipelines to the interfaces on top of them.

Baran Dursun
Open to work

About me

Software engineer who ships data-heavy products

I'm a software engineer in Montreal studying CS & Economics at McGill (graduating Dec 2026). I build full-stack, data-heavy products and take them all the way to production — an iOS app live on the App Store and three deployed data platforms, from ingestion pipelines to the interfaces on top of them.

The through-line in my work is data: I like building the whole path, from ingestion pipelines and databases up to the product on top. My coursework spans Algorithms & Data Structures, Software Systems, Computer Systems, Programming Languages, Theory of Computation, Probability, and Econometrics. Earlier, I interned as a software & IT systems intern at Advanced Information Modeling and a data & business systems intern at Duronm Textile.

I'm fluent in English and Turkish, with intermediate French. Active in the McGill Consulting Association and the Economics Student Association.

Let's talk →

Skills & tools

Python TypeScript SQL Java React / React Native Node.js / Express FastAPI Hono PostgreSQL Docker GitHub Actions XGBoost / scikit-learn

Career

Experience

Software & IT Systems Intern

Advanced Information Modeling Inc

Jun – Aug 2026

St. Petersburg, FL (Remote)

  • Built a Python script to parse application log files and group recurring errors by type, making it faster for the team to spot repeat crashes.
  • Queried and summarized system data with SQL for weekly reports and team reviews.
  • Developed automated Python tests to verify data-import outputs and invalid-input handling before each production release.
PythonSQLTesting

Data & Business Systems Intern

Duronm Textile Company

Jun – Aug 2025

Izmir, Turkey

  • Extracted textile order and billing data with SQL for the finance team's weekly reports.
  • Created Excel reports with pivot tables and lookups to track invoices and payments, replacing manual copy-paste tracking.
  • Automated order-data preparation with Python scripts to clean and combine exported datasets before analysis.
PythonSQLExcel

Portfolio

Selected projects

All repos on GitHub →

FragMance mobile app screenshot showing the fragrance discovery interface App Store 01

FragMance

A full-stack social iOS app for fragrance discovery and collection — built solo, live on the App Store.

Problem

Fragrance enthusiasts track their collections across scattered notes and spreadsheets, with no single place to identify a bottle, log what they wear, or see what friends are wearing.

Build

Solo end to end: a 58-endpoint Node.js/Express REST backend with Redis caching behind a React Native (Expo) client — ~18K lines of TypeScript. Barcode scanning and free-text lookup run on PostgreSQL trigram (pg_trgm) search with a custom confidence-ranking layer over 63,751 fragrances across 1,772 brands and 1,861 scent notes; a content-based recommender ranks by IDF-weighted scent-note overlap scaled by brand-tier affinity.

Status

Live on the App Store, shipped through CI with 528 automated tests and a schema-drift guard. A self-initiated security audit of the app in production uncovered a PII exposure in its auto-generated REST API — fixed at the Postgres grant/RLS layer with a regression test. Also ships B2B analytics endpoints designed for fragrance houses.

React NativeExpoTypeScriptNode.jsPostgreSQLRedis
Recap Engine showing a spoiler-bounded Chernobyl recap up to episode S1E3 Live 02

Recap Engine

Spoiler-free TV recaps bounded to exactly where you are in a show — with a companion browser extension that knows which episode you're on.

Problem

Coming back to a series after a break, you want the story so far — but every recap, wiki, and search result is a minefield of spoilers for episodes you haven't reached yet.

Build

TypeScript end to end: a Hono + PostgreSQL (drizzle-orm) API behind a React 19 web app and a Chrome MV3 extension — roughly 6,600 lines with 184 automated tests. Plot events are extracted on demand from episode synopses with the Claude API and streamed back as catch-up recaps (three lengths), single-episode summaries, and spoiler-bounded character cards. The extension's content scripts read your current episode straight from the Netflix, Prime Video, Disney+, and Max players.

Status

Live at recapengine.com behind Google sign-in, deployed on Railway. The interesting constraint: spoiler-safety is a database invariant, not a filter bolted on afterward. Every episode carries a contiguous order number, and a single query — the only path from stored events into any prompt — clips everything past your position, so leaking a future event is structurally impossible. Episodes ahead of you are never even read until a later boundary needs them.

TypeScriptReactHonoPostgreSQLChrome MV3Claude API
EconSight dashboard showing Canadian macro indicators and forecasts Live 03

EconSight

A Canadian macro-intelligence platform with forecasting and natural-language Q&A.

Problem

Canadian macro data is scattered across Statistics Canada and the Bank of Canada in incompatible formats, making it slow to combine indicators or reason about scenarios.

Build

Ingests 9 indicators into a PostgreSQL medallion (bronze / silver / gold) warehouse, then runs VAR + XGBoost forecasting with Monte Carlo scenario bands behind a FastAPI + React dashboard. The interesting part was layering RAG natural-language Q&A over the same warehouse the numeric models read from.

Status

Live, serving a composite health score, scenario forecasts, natural-language Q&A, and one-click PDF reports.

PythonFastAPIXGBoostPostgreSQLReactRAG
Personalized Newspaper rendered as a dense three-column broadsheet Live 04

Personalized Newspaper

An AI-curated daily broadsheet, rebuilt on a schedule.

Problem

Feeds and news sites optimize for engagement, burying the signal under clickbait and the same story duplicated across sources.

Build

A scheduled pipeline polls Finnhub, RSS feeds, and Hacker News, scores every article for relevance and clickbait with the Claude API, and renders a dense three-column broadsheet from Postgres. The whole thing runs as a single Railway service.

Status

Live on Railway, regenerating the front page on a schedule.

Next.jsTypeScriptDrizzlePostgreSQLClaude APITailwind

More on GitHub →

Contact

Let's connect

Interested in working together or just want to say hi? I'm happy to hear from you.