Inspiration
Most people know exactly what they want to say. They just lose the words out loud: mid-sentence, in the room, when it counts. Practising alone is awkward, and nobody gives you an honest read on how you actually sound. We built Clarity so that eight minutes a day of talking out loud, alone, comes with feedback you can trust.
One rule shaped the whole app: no false claims with no backing. Every number Clarity shows comes from a recording of your own voice. No made-up percentages, no invented testimonials.
What it does
Clarity is a subscription speaking-practice app for iPhone, live on the App Store.
- A measured baseline. In onboarding you record yourself once. Clarity scores it, and every later result is compared against that first recording.
- A daily plan of short lessons. Guided drills, a diction warm-up, shadowing (hear a line, say it back), vocabulary building with Wordcraft, and a "cleaner take" mode to re-record an answer and see what improved.
- Word clarity. Unclear words are underlined, and filler words are counted, including drawn-out ones like "ummm" and "uhhh".
- Conversation mode. Practise real conversations out loud with live AI voice partners, Kit and Pandora: a job interview, asking for a pay rise, speaking up in a meeting, a difficult conversation with a colleague, small talk. Afterwards you get a debrief: what landed, and cleaner ways you could have said it.
- Warm limits, not error screens. A daily practice cap keeps costs and habits healthy, and when you hit it the app says "come back tomorrow" rather than failing.
How we built it (and where RevenueCat fits)
Clarity is built with Expo, React Native and TypeScript. RevenueCat is the backbone of the business model, not just the paywall:
- Paywall and plans. A yearly plan with a 7-day free trial (shown only when StoreKit reports the customer is eligible) and a weekly plan with no trial. Prices are always the App Store's localized strings, never hard-coded, and purchases and Restore go through RevenueCat.
- Server-side entitlement gating. Live voice conversations and transcription are our expensive features. Before any paid speech or AI provider is touched, our backend asks RevenueCat whether the user's entitlement is active. Our voice service exposes that check to our other services over a private service binding, so the RevenueCat secret key lives in exactly one place. A lapsed or free user costs us nothing.
- Cost control tied to the RevenueCat ID. Each subscriber's monthly voice allowance and daily practice cap live in a per-subscriber Durable Object on Cloudflare Workers, keyed to their anonymous RevenueCat ID, so a reinstall can't reset them and two phones can't run two calls at once. Before subscribing, users get a small daily preview, just enough for the onboarding baseline, with a hard shared ceiling.
- Marketing attribution. The onboarding question "How did you hear about Clarity?" is sent to RevenueCat as the customer's media source, so we can see which channels bring people who start trials and subscribe, not just installs.
- Live voice pipeline. The phone streams audio to a Cloudflare Worker, which runs speech recognition, an LLM for the partner's replies, and text-to-speech, with end-of-turn detection tuned so replies come back in roughly half a second to a second.
Challenges we ran into
- Latency. A conversation only feels real if the partner answers quickly. We measured every stage and tuned end-of-turn detection and reply length.
- Trust and privacy. Recordings aren't kept on our server after transcription, history stays on the phone, and we opted out of provider model training on every request. Then we made the privacy policy, the App Privacy answers and the store listing all say the same thing.
- App Review. We were rejected for pre-permission wording (guideline 5.1.1) and for not labelling paid features (2.3.2). We fixed both, and added tests that fail if that wording ever comes back.
- Honesty. We deleted every piece of placeholder data that wasn't backed by something real, even when it made the screens look fuller.
What we learned
Putting the subscription check on the server, before the costly call, made a voice product with real AI running costs viable. Small, warm limits work better than hard walls. And people trust a number more when they know it came from their own recording.
What's next
- Android.
- A day-4-and-later progress view comparing each recording against the onboarding baseline, so people see real improvement before their trial ends.
- More diction and shadowing content, and longer sessions.
Built With
- cloudflare-workers
- durable-objects
- expo.io
- ios
- llm
- react-native
- revenuecat
- speech-recognition
- text-to-speech
- typescript
Log in or sign up for Devpost to join the conversation.