Skip to content
All work

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.

2026LiveOpen Peeka
  • 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.

01

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
02

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
03

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
04

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.