Things I've built
A selection of projects I've built, spanning AI agents, machine learning, and full-stack apps.
AIFeaturedIn Progress
Transformer From Scratch
A GPT-style language model built by hand in PyTorch — attention and all.
A small GPT-style transformer implemented from scratch in PyTorch — multi-head self-attention, the causal mask, the training loop, and text generation all hand-written rather than pulled from a library. Progresses from a char-level model on Shakespeare to a BPE tokenizer on a real corpus, with modern upgrades (RoPE, weight tying, RMSNorm) evaluated through measured ablations.
PythonPyTorchTransformersBPE Tokenization
AIFeaturedLive
Docs Navigator
Ask a question about a library's docs — get a source-cited answer.
A multi-library RAG documentation assistant (Next.js, LangChain, LlamaIndex, Haystack) that answers natural-language questions with grounded, source-cited answers. BGE-M3 hybrid retrieval over Qdrant, cross-encoder reranking, and Claude for generation — FastAPI backend, Next.js frontend, Dockerized on Render. Built a 70-question benchmark and evaluation harness (recall@k, MRR, faithfulness, out-of-scope refusal) and used controlled ablations to select the pipeline, improving section-level recall@3 from 58% to 73%.
◆70-question eval harness
PythonFastAPIBGE-M3QdrantClaudeDockerNext.js
AIFeaturedLive
SempAI
An AI agent that plans your week of meals and orders the groceries.
Turns your dietary preferences and spare ingredients into a full weekly meal plan, then auto-populates a Kroger cart for delivery — orchestrating Claude, recipe search, and grocery fulfillment end to end.
ReactTypeScriptViteZustandNode.jsExpressClaude APITavily APIKroger API
ML
Diabetic Retinopathy Classifier
A CNN that grades diabetic-retinopathy severity from retinal images.
A convolutional neural network with batch normalization and max pooling that classifies diabetic-retinopathy severity levels, built through USC's Center for AI in Society (CAIS++), a 30-member cohort selected from 300+ applicants.
◆73.77% accuracy
PythonPyTorch
WebLive
Spardle!
Real-time multiplayer Wordle with live head-to-head play.
A multiplayer take on Wordle — race an opponent in real time with live state sync and a clean competitive UI.
◆3,000+ users at peak
ReactNode.jsSocket.IO