- Client
- In-house product (private beta)
- Industry
- Consumer product
- Services
- Product design & build, Offline-first PWA (Astro + Svelte), Edge backend (Cloudflare Workers + Durable Objects), Real-time sync & client-side encryption, LLM content generation
- Works fully offline and installs like a native app
- Two phones, one session, updating in real time
- Cloud sync with zero-knowledge, client-side encryption
- Fresh questions generated and tuned to each couple
- Running on a global edge; now in private beta
Most of our case studies are client work. This one is ours. We build and run our own products too, and Tell Me is the one we can show off the full-stack and product side with: not a Salesforce org this time, but a real app designed, built, and shipped end to end.
Tell Me is a date-night app. Pick a vibe, take turns answering questions, and the conversation deepens as you go. Simple on the surface, and that was the point. The hard part is everything that has to be true underneath for it to feel effortless on a couch with two phones and a spotty connection.
What we wanted
A few things were non-negotiable from the start.
It had to work with no internet. A date-night app that needs a strong signal is a date-night app you stop opening. So it had to be offline-first and installable, like an app from a store, without being one.
It had to feel personal over time. The same hundred questions get old. We wanted the app to learn what a couple enjoys and keep the prompts feeling fresh and tuned to them.
And it had to work across two phones, together, in the same room or across the country, without either person setting up an account.
How we built it
The app is an offline-first progressive web app, built with Astro and Svelte and packaged so it installs to a phone’s home screen and runs with no connection. A couple’s history, favorites, and settings live on the device first, so the core experience never waits on a network.
The backend runs entirely on the edge, on Cloudflare Workers, with Durable Objects for the stateful pieces. There is no traditional server and no always-on database to babysit. Idle sessions cost nothing, and the app is close to its users everywhere because the code runs at the edge rather than in one region.
For the questions, we wired in a language model that generates fresh prompts in the app’s voice and quietly tunes them to feedback as a couple plays, so a deck keeps feeling new instead of looping. A deterministic pacing engine still decides when to go deeper, so the night has a shape rather than a random shuffle.
The parts we are proud of
Two phones, one session, in real time. Couples who want to answer privately and reveal together can pair two phones with a short code. A Durable Object holds the shared session and pushes each prompt to both devices over a WebSocket, so a tap on one phone shows up on the other instantly. We designed it so the host drives and the partner follows, and it survives reconnects without losing the thread.
Cloud sync without us ever seeing the data. Syncing a couple’s private history across their devices is a trust problem, not just a technical one. So we made it zero-knowledge: the data is encrypted on the device before it ever leaves, and the edge only ever stores ciphertext. We hold no key and can read nothing. The sync also merges cleanly when both devices have made changes, including deletions, so nothing silently reappears.
It keeps the night going. A recent piece of player feedback asked for a way to change the vibe mid-session without starting over. We shipped it: a menu that swaps to a different deck and carries your place and depth across, so the conversation continues instead of resetting.
How it holds together
Everything quality-sensitive is tested and reviewed before it ships. The merge logic that keeps two devices in sync, the encryption, the pacing engine, and the real-time session all carry their own tests, and each change goes through an automated build, test, and review pass before it goes out to the edge. That discipline is what lets a two-person product move quickly without breaking the parts couples actually rely on.
Where it is now
Tell Me is in private beta with a small group of testers while we shape it on real use. It runs offline, syncs privately across devices, plays across two phones in real time, and generates its own content, all on a backend that costs almost nothing when no one is playing.
This is the product and full-stack side of what we do: not just configuring a platform, but designing and shipping a real app, on modern edge infrastructure, with the engineering discipline to keep it trustworthy. If you have a product idea that needs that kind of build, let’s talk.