🇫🇷 Stop studying French. Start speaking it.
Seven years of French class, and you still freeze when a waiter asks you a question. Language apps grade what's easy to grade (multiple-choice taps). Fluency comes from talking out loud and getting corrected. So we built the partner we wished existed: always awake, never judges your accent, and explains things in your language, not just English.
📈 Traction (live on the App Store since Sept 20, 2026)
- 137 active users and 128 new customers in the first 28 days
- $305 in revenue and 4 paying subscribers in month one ($42 MRR)
- 486 lessons completed, with an average score of 89/100
- 575 words saved by learners to their personal vocabulary
- Learners from Spanish-, English-, French- and Chinese-speaking backgrounds
🗣️ What it does
- Talk: AI roleplay scenes (café, airport, job interview, first date…). You speak out loud, the character answers in natural French at your level, then you get the transcript and gentle corrections.
- Pronunciation: a real per-phoneme score, not just right or wrong.
- Lessons: 55 bite-size lessons (beginner to expert) written by a real French teacher.
- Vocabulary & flashcards: tap any word for an AI explanation in your language, then review it with spaced repetition.
- Streaks, XP and 24 badges to turn five minutes a day into a habit.
- 7 interface languages: EN, FR, ES, DE, IT, PT, ZH.
💸 Monetization with RevenueCat
Freemium with a custom paywall shown at 11 natural moments (daily lesson limit, Talk limit, level test, word lookup…), a 3-day free trial, and monthly and yearly plans under a single Pro entitlement. Every paywall view is tagged with its source, so we know exactly which moment converts.
🛠️ How we built it
React Native + Expo SDK 55 (new architecture), strict TypeScript, Expo Router, Zustand and Reanimated. Supabase (Postgres with row-level security, auth, storage) plus Deno edge functions. Every AI call runs server-side, so no key ships in the app: Claude for conversations and explanations, ElevenLabs for voice and speech-to-text, Azure for pronunciation. Shared caches (voice clips, word explanations, translations) mean the first learner pays for a model call and everyone after gets it free.
🧗 Challenges
- Latency is the product. A 4-second pause feels like nobody is listening. Streaming, audio caching and picking a fast model over a big one fixed it.
- Honest pronunciation feedback. Raw phoneme scores are noisy. Tuning them so a good attempt never shows a harsh red score took real iteration.
- Seven languages of content. Solved with lazy translation: translated once by Claude on first request, then stored for everyone.
🏆 What we're proud of
A conversation that actually feels like one with 57 % stickiness from our first users 🥰, real teacher-written content, and a backend that gets cheaper per user as it grows.
🚀 What's next
Scoring rubrics for each scene, spaced repetition fed by the mistakes you make out loud, live pronunciation coaching, and more target languages (the whole pipeline is language-agnostic).
Built With
- android
- anthropic
- azure-speech
- claude
- deno
- docker
- edge-functions
- elevenlabs
- expo-router
- expo.io
- figma
- i18next
- ios
- jest
- postgresql
- posthog
- react
- react-native
- react-native-reanimated
- revenuecat
- supabase
- typescript
- zustand

Log in or sign up for Devpost to join the conversation.