← Home

Case studies

What each project shows

Every project shows one or more parts of product work. Build covers anything I made, from shipped apps to a concept site. Teardown takes apart a product I use and proposes a fix. Documents marks product documents published in full, such as a PRD, test cases or release notes. API marks a published API design. RAG marks retrieval-augmented generation: answers drawn from a set of documents and cited back to them. MCP marks a Model Context Protocol server: tools an AI assistant such as Claude can call directly. Eval marks an evaluation: a system scored against an answer key written before it ran. Each card says exactly what it holds.

Show projects with

Skills by project

The case studies

Prize Stats: a football resting on a white yard line on a grass field at golden hour, seen from above
Every blank, filled.

Prize Stats

A stats API that fills the weekly fantasy football prize results two league platforms could not answer, backtested against weeks I had already settled by hand.

Backtested · PRD · APITypeScript · Postgres (Neon)
Anomaly Upload Validator: a beam of light passes a sphere through two glass funnels, turning it into a cube and then a pyramid, one shape per taxonomy
Findings in, findings converted.

Anomaly Upload Validator

Checks wind turbine blade inspection findings for required fields and automates the two-step damage taxonomy conversion, taking customer success out of manual validation and engineering off the critical path. The tool is internal; the specification documents are published.

In production useInternal tool · Documentation public
Ask the Spec: a hand lifts one blank index card from an open drawer of a wooden library card catalog
Cited answers, honest limits.

Ask the Spec

A retrieval tool that answers questions about the Anomaly Upload Validator's published specification, cites the exact section, and says so when the documents don't have the answer.

Live · RAG · EvaluatedClaude · Voyage embeddings · Vercel
Ask the Spec in Claude: a braided cloth cord ends in a brass plug fitted into a brass socket on the front of a dark wooden card catalog drawer
Same answers, new door.

Ask the Spec in Claude

An MCP server that lets Claude search, read and question the same published specification as Ask the Spec, with the same citations and the same refusals.

Live · MCP · TestedMCP TypeScript SDK · Vercel
RefCycle eval: three unlabeled waste carts, blue, green and grey, at the edge of a rain-wet street at dusk, with tropical plants behind
Safe before smart.

RefCycle eval

One slice of RefCycle built twice from the same brief, once with Claude Code and once with Codex, and scored against an answer key I wrote by hand. RefCycle began as a student concept by a five-person team in the Berkeley UX/UI Boot Camp, UC Berkeley Extension, January 2024. This rebuild and evaluation are solo work.

Eval · Held-out finalClaude Code · Codex · Cursor
Google Maps Edits screen: a road name correction marked Not accepted, with no reason given. The road name is blurred.

Google Maps: road name corrections

An independent product proposal: residents with the official record of their road's name have no way to hand it to the map. Built from my own rejected corrections and a county records inquiry.

Proposal · Existing productNot affiliated with Google
Get to the Point: a speaker seen from behind, addressing a packed auditorium
Say it once, say it clearly.

Get to the Point

A spoken-communication coach that scores a delivery on six metrics and highlights exactly where it drifted.

In production · Invite-onlyClaude API · Server-side
FleetServ: a row of white box trucks seen from above in an open yard, one hood propped open and a mechanic walking the line
Fleet-wide maintenance.

FleetServ

An inspection platform for a fleet-maintenance business specced before the business existed: the truck's condition on the record first, with quoting, scheduling, and invoicing as what a finding turns into.

0→1 · Working prototypeClaude + Claude Code · Custom design system
Gridledger: wind turbines on a ridge, a solar farm, a battery storage yard and a substation with transmission towers, four asset types in one landscape
Every asset, one data layer.

Gridledger

A product thesis for an open data layer across renewable energy assets: one asset model, open adapters for any vendor format, and eight stakeholder roles defined end to end.

Concept · Product thesisKimi K3 · Higgsfield
Off the Shelf: a shopper loads grocery bags into a pickup truck bed beside a cooler, outside a small island store
Every store, one trip.

Off the Shelf

A household shopping PWA built for multi-store island runs: aisle-sorted lists, heat-safe trip sequencing, and a purchase memory that answers "have we tried this?" in the aisle.

Four iterations · Not yet adoptedReact PWA · Supabase
Foreground: a hand writing a short list in a paper planner, the top item circled and the next crossed out
Surfacing buried tasks.

Foreground

A WSJF-based prioritization engine that surfaces the work you keep putting off, and manages its own roadmap as a groomed backlog.

Live demo · Open source (MIT)Built with Claude Code · End-to-end tested

Internal builds I can't show in public are shared by email.