Case study · Our own product
One confident pick, and never the same suggestion twice.
Frame The Night is an AI film and series concierge we built as our own product. It learns your taste, gives you a single pick for tonight with a reason, ratings and the trailer, and guarantees it will never suggest something you've already seen or turned down. It's also a working example of how we build AI features that have to be fast, honest and cheap to run.




The problem
Everyone knows the forty-minute scroll that ends with nothing watched. Streaming apps optimise for browsing, not deciding. The recommendation apps that exist are endless swipe decks with no explanation, and most of them happily suggest the film you watched last week.
We wanted the opposite: an app that makes the decision for you, shows its reasoning, and treats "I've seen it" as a promise rather than a hint.
The approach
We started with market research on what people actually complain about in this category, then wrote the brief around three commitments: decision-first, visible reasoning, and a hard never-repeat guarantee. The guarantee is enforced in the database, not by the AI, and it's tested adversarially.
Everything else was shaped by production data. We shipped early to friends and family, logged every AI call, and changed the architecture when the numbers said to.
What we built
A mobile app on a serverless backend, with the AI doing exactly one job: proposing titles. Everything that has to be true is checked by code.
The card
Every suggestion arrives as a card: poster, year, runtime, genres, IMDb and Rotten Tomatoes side by side, the trailer playable in place, a spoiler-free "what it's about", and the signature line, "why you might like it", written for you from your own history. Four reactions, one tap each: Later, Seen it, Not sure, Not for me. "I'll watch this" is the win state. Next time you open the app it asks how it went, and the answer feeds your taste profile.
- Suggestions stream in card by card as the AI thinks, with honest elapsed time rather than a fake progress bar
- Your watchlist is ranked for tonight while you wait, so the screen is never empty
- Every deck includes one wildcard outside your usual lanes, so taste never narrows into a rut


Built for real movie nights
Tell it who's watching. Solo, with a partner, or with friends, and the picks change character, with each context learning separately from history. Link a partner's account and couple nights draw on both tastes and exclude what either of you has seen. Series get their own journey, with check-ins on how the show is going rather than a single "watched" tick. Comfort night serves instant picks from the films you'd happily rewatch, with no AI call at all.

Private by design
No ads, no trackers, nothing sold. Sign in with an email and a one-time code, no password anywhere, with an optional fingerprint or face lock on the phone. Delete everything in one tap, and it really is everything: the deletion was verified row by row in a full security review before the first store submission.
- Crash reporting configured with no personal data and no screen recording
- Sign-in emails sent from the app's own domain, so its reputation never touches anyone else's mail

The AI engineering
The interesting work was making a language model behave like a product feature: fast enough, right every time on the things that matter, and cheap enough to give away.
- Code guarantees, AI proposesThe model suggests titles. A database check removes anything seen or rejected, every time, and the exclusion is tested adversarially
- Two-stage decksAsk for 40 titles only, validate them against the film database and the exclusion list, then write prose for the ten survivors. Replaced one-shot prompts that collapsed to empty decks
- Two models, one job eachA fast model on Cloudflare Workers AI serves live requests; a stronger model prebuilds decks in the background. Chosen from a week of production timing data
- Automatic cascadeIf either engine fails, times out or returns garbage, the other takes over before the user sees anything
Measured, not guessed
Every AI call is logged with its provider, timing and token counts. When the primary model missed the first-card deadline on most requests, the logs made the switch obvious. Model options are benchmarked against the real prompt and a real two-hundred-title avoid list before anything changes.
Cheap enough to give away
A typical AI call costs under a tenth of a cent. The whole stack, Workers, the database, email and both models, runs for about a dollar a month at friends-and-family scale, with per-user and global daily budgets so a bad day can't become a bad bill.
How it's built and run
The same platform choices we make for clients, applied to our own product and run in production.
- Expo + React NativeOne codebase for iOS and Android with over-the-air updates
- Cloudflare Workers + D1The entire API and a 65,000-title catalogue, serverless
- Workers AI + MiniMaxFast lane and deep lane, swappable by configuration
- TMDB + OMDbPosters, metadata, trailers, and IMDb and Rotten Tomatoes ratings, cached
Hardened before the store
A full security review before submission, then edge rate limiting on the API's own subdomain, revocable sessions with "sign out other devices", health alerting that emails us when AI failures or budgets cross a threshold, and crash reporting.
Where it is now
In closed testing on Google Play with a complete catalogue, real sign-in email and store listing in place. An App Store release follows once the Android round has run its course.
AI in your product
AI features that behave.
If you want a language model inside your product without the latency, the cost surprises or the made-up answers, this is the kind of work we do.