Inspiration
I live in Germany. Every few weeks an official letter lands in my mailbox: the Finanzamt, the health insurance, the city. Around me, friends who moved here get the same letters and cannot read them. There is a ritual every expat knows: photograph the letter, send it to the one German friend, and write "sorry to bother you AGAIN, what does this one want from me?" The fear is real. Words like "Letzte Mahnung" ruin evenings.
I built Brievly to end the friend tax. Including for the friends.
What it does
Point your camera at any official letter. In seconds, Brievly tells you three things, in your language:
- What the letter says, as a short human summary
- What you have to do
- When it is due, with the deadline added to your calendar in one tap
Beyond that: deadline reminders, asking the letter questions ("can I object to this?"), AI reply drafts, and Seal and Send: your reply gets printed and posted as a real paper letter, worldwide, no printer or stamp involved. Letters with payment details produce a ready payment code. Households share one mailbox, so the person who reads German and the person who doesn't see the same letters.
Privacy is the foundation, not a feature flag: EU-hosted end to end, AI running in EU data centers, and letter content never appears in logs or analytics.
How I built it
Solo founder, one codebase, real production stack:
- Expo + React Native, responsive across iPhone, iPad, Android and Apple Silicon Macs
- Supabase (EU): Postgres with row-level security on every table, Auth, Storage, and Deno Edge Functions
- The app never talks to an AI provider directly. Every scan goes through one Edge Function with a zod-validated contract; Mistral (EU-hosted) returns structured output or the scan fails honestly instead of guessing
- RevenueCat for everything money: subscriptions and free trials, paywall placements driven by remote config (SKUs, preselection and highlighting live in server-side JSON, so paywall experiments are config changes, not releases), entitlements enforced server-side by syncing RevenueCat webhooks into Postgres, and RevenueCat's server-side purchase events feeding attribution
- typesafe-i18n (English and German), self-hosted OTA updates, and Pingen for physical letter delivery
Challenges I ran into
- Making AI output trustworthy enough to put deadlines in someone's calendar: strict schemas, structured output, and a visible "failed" state instead of a plausible guess
- Premium that cannot be spoofed: client checks are UX only; Edge Functions verify entitlements in Postgres, kept fresh by RevenueCat webhooks
- One binary that behaves on a phone, a tablet, and a resizable desktop window
- Being a solo growth team: store review sagas, SKAN, attribution plumbing, and learning that every ad platform's "automated" mode is a trap when you have no conversion history yet
Accomplishments that I'm proud of
Brievly is not a demo. It has been live worldwide on the App Store and Google Play since July 2026, with real users scanning real letters they were afraid to open.
What I learned
People install Brievly the day a scary letter arrives, not the day they see an ad. That gap between hearing about the app and needing it is the entire growth problem, and it reshaped how I think about onboarding, paywalls and reminders.
What's next
First-scan activation, paywall placement experiments (config changes thanks to RevenueCat, not app releases), more languages, and growing from the German beachhead to every country where official mail is scarier than it needs to be.
Built With
- claude
- deno
- expo.io
- mistral
- pingen
- postgresql
- react
- react-native
- revenuecat
- stripe
- supabase
- typescript
- vercel