Case studyConsumer AI product
Peeka
Point a phone at an animal, tap once, and it speaks. A vision model reads the photo and writes two or three first-person sentences as that animal, built as an installable web app with real subscription and consumable billing behind it.
- Next.js
- TypeScript
- Claude Vision
- Supabase / Postgres
- Stripe
- PWA
- from camera to result
- 1 tapfrom camera to result
- runtime dependencies shipped
- 0runtime dependencies shipped
- independent revenue lines
- 2independent revenue lines
- money proven end to end
- Livemoney proven end to end
Peeka is a consumer product built to answer one question: can a single tap produce something genuinely delightful? The user points a phone at an animal, taps once, and the app writes two or three sentences in that animal's voice — grounded in what is actually visible in the photo. Everything else Hart & Heim built into the product exists to protect that one interaction.
The prompt is the product
Most of the quality in Peeka comes from prompt architecture rather than model choice. The order of the fields the model fills in is load-bearing: observations are written first, so that everything after them is reasoning the model can actually use. Moving that single field earlier measurably improved the writing.
- Field order enforces observation before verdict — the model describes what it sees before it decides what it is looking at
- Constraints were tested rather than assumed: forcing the description to mention both the animal and its setting made the output worse, because the model box-ticks and drops its best detail
- The loading state is filled with the model's real streaming observations, not canned copy — there is no fake content anywhere in the product
Billing that survives contact with reality
A consumer app that calls a paid model on every interaction has to treat metering as a correctness problem, not a business afterthought. Peeka's entitlement is derived entirely on the server; a client that claims a higher tier is ignored.
- Quota is consumed through an atomic database function before the model is called — not after, and not in application memory
- Prepaid packs sit behind the daily plan allowance and never expire, so a purchase can never be devalued by a reset
- A credit is always worth at least the better read, so buying a pack on a free account upgrades the result rather than merely extending it
- Refunds and chargebacks claw credits back and floor the balance at zero, and the whole path — purchase, grant, refund, revoke — was verified against real money on a live account
Failing without charging
The failure case that matters most in a metered AI product is the upstream one. If the model is overloaded, the user has already paid for something they did not receive.
- Upstream refusals and overload responses are caught both before the stream opens and mid-stream, once tokens have started arriving
- Either path refunds the consumed credit and returns a retry hint rather than an opaque error
- Demand is measured honestly: refused attempts are counted separately from served ones, because a counter that saturates at the cap only ever records the demand that was satisfied
Delivery
Peeka ships as an installable progressive web app with no runtime dependencies at all — no CSS framework, no component library. Every style is hand-written. That is a deliberate constraint: a consumer app that spawns a model call per interaction cannot also afford a heavy client.