* ABOUT
I build full-stack applications and AI-powered systems. Sometimes they even deploy on the first try.
I enjoy debugging. This says more about me than I'd like.
My work spans the entire stack, frontend interfaces, ML pipelines, APIs, infrastructure. The parts in between too.
When models misbehave or systems fall over (and they do), I'm the person who figures out why.
[ Tech I Work With ]
Languages: Python • JavaScript • SQL
Full Stack: Node.js • REST APIs • Elasticsearch
AI/ML: Model deployment • Feature engineering • ML pipelines
Infrastructure: Docker • Kubernetes • Terraform • AWS • GCP
Data: Spark • Airflow • DBT • Postgres • MongoDB • Redis
* PROJECTS
Selected work from GitHub:
> GO Transit Reliability Router
Reliability-first trip planner for GO Transit buses. Ranks routes by real-world likelihood of working, not just scheduled time. Accounts for no-shows, alerts, and risky transfers.
Python · FastAPI · Next.js · TypeScript · PostgreSQL · GTFS-RT
[Frontend →] [Backend →]> Olympic Weightlifting Program Generator
AI-powered training program generator for Olympic weightlifting. Ingests coaching literature into a hybrid vector + structured database, then generates personalised mesocycle programs grounded in Prilepin's chart, extracted programming principles, and athlete-specific maxes and goals.
Python · OpenAI · Anthropic · RAG · HTML
[GitHub →]> System Design MCQ Generator
Converts system design articles into multiple-choice questions using a local LLM. Deterministic pipeline with chunking, dedup, and a FastAPI + single-file web UI.
Python · uv · Ollama · SQLite · FastAPI
[GitHub →]> Chinese Anki Builder
Generate Anki flashcard decks from Chinese EPUB/PDF books using jieba, CC-CEDICT, and pypinyin.
Python · jieba · genanki · pypinyin · CC-CEDICT
[GitHub →]> Plate Converter
Barbell plate calculator for both kg and lbs. Enter a target weight, get the exact plates to load. No fuss.
React · TypeScript · Vite · Tailwind CSS
[GitHub →] [Live →]> Django Sudoku Solver
Sudoku puzzle solver with a playable browser interface. Enter a puzzle, get the solution.
Python · Django
[GitHub →] [Live →]> Bust-A-Move
Port of an old-school arcade bubble-shooter. Match 3+ same-colored bubbles, clear the board. 12 levels, hex grid, recursive color-matching, dynamic music.
JavaScript · HTML5
[GitHub →] [Live →]