Case study · Our app
Dose.
One standard for every shot.
An app for scoring espresso. A guided tasting resolves to one calibrated score on one shared standard, with a feed for purists and a map of where the great pulls are. Free on the App Store.
- Role
- Product, brand, design, engineering
- Platform
- iOS, web
- Stack
- Swift, SwiftUI, Supabase, Next.js
- Status
- Live on the App Store

The problem
Coffee ratings online are vibes — stars, hearts, “it was good.” Nothing means the same thing twice. Espresso deserved a real standard: rigorous enough for a professional, learnable on a first pull.
The standard
Dose turns the way specialty cuppers evaluate a shot into a guided tasting. Six dimensions resolve into one calibrated score that reads the same everywhere — one shot, measured against one standard, not one person’s taste.
The system
Five parts. One product.
Inside Dose
- 01
The instrument
A guided tasting, not a form. Each dimension is checked the way a cupper checks it — aroma, acidity, sweetness, body, balance, finish — then weighed into one honest read of what’s in the glass.
- 02
The standard
Calibration is shared. A score in one city means what it means in another, so the number can be trusted, compared, and argued over.
- 03
The community
A feed for purists. Profiles, stories, and shareable score cards. Score together at the same café — one post, one common score.
- 04
The map
Every score feeds an open directory: cafés, the roasters behind them, and the beans in the hopper. Local first, nationwide, kept current.
- 05
The infrastructure
Native Swift on iOS. A web app at dose.city on Next.js. One Supabase backend — Postgres, auth, row-level security — shared by both.
One
Calibrated score per shot
6
Dimensions cuppers use
iOS
Free on the App Store