CoffeeShelf— camera-first specialty coffee capture.
Photograph a specialty-coffee bag, extract structured metadata, research uncertain fields, review the draft and save it into a private taste history. The interaction starts with the physical object and makes model uncertainty explicit before persistence.
- SwiftUI
- SwiftData
- CloudKit
- Supabase
- App Attest
- Sign in with Apple
- Cloudflare Workers
- AI vision + research
Stack
Engineering evolution
Reconstructed from source, architecture notes and commit history. The sequence is simplified where multiple branches of work landed together.
The package already contains most of the useful metadata. Image capture reduces manual entry for roaster, origin, process, variety and tasting notes while keeping the real-world object central to the flow.
Vision output is useful but not canonical. The flow became capture → suggested fields → editable review → save, making uncertainty a visible state rather than silently committing model output.
Taste ratings and a user's shelf belong to private CloudKit. Reusable coffee, roaster and community entities benefit from a shared Supabase layer. A single datastore would have been simpler but would blur privacy and ownership boundaries.
App Attest and the shared Cloudflare gateway remove provider secrets from the binary and centralize model policy, budgets and abuse controls.
Recent work focused on regression coverage around shelf, profile, roaster and discovery data — the class of boundary failure that becomes important as soon as multiple identities share a product.
The next milestone is whether people repeatedly scan bags, correct model output when needed and return to their taste history. Further feature work should be driven by that evidence.