Talkspring - train your voice, sharpen your thoughts, and speak with confidence
Talkspring is a daily habit app for becoming a clearer, more confident speaker.
Record yourself speaking for sixty seconds and Talkspring creates an instant, scored Speech Profile showing how fast you talk, how often you use fillers like um, how much you hedge or repeat yourself, and the exact moments in the recording where those behaviours happened.
It then prescribes three short daily Games based on the skills you most need to improve. Complete your workout, maintain your streak, and come back tomorrow.
Built solo in five weeks. iOS only for V1. Your voice never leaves your phone.
Inspiration
I've sat in enough meetings to realise that most people have no idea how they actually sound.
You might know that you feel nervous, but you probably don't know that you said "kind of" eleven times or started speaking at 210 words per minute when you became stressed.
Nobody tells you, because it's awkward.
So the feedback loop that could help you improve never closes.
I also found that many speaking apps introduce another problem: they ask you to create an account or subscribe before you've experienced any value, upload recordings for server-side processing, or give you a score without explaining where it came from.
Three principles came out of that frustration and became the constitution of Talkspring:
- Aha before ask. You experience a real analysis of your own speech before any payment or signup conversation.
- Audio never leaves the device. Not as a privacy setting, but as a product promise.
- Every score is explainable. If Talkspring says you hedge too much, it should be able to show you the exact moment you did it.
That last principle also shaped the personality of the app.
"You said um 21 times" is a fact. Talkspring delivers feedback that way: blunt, specific and occasionally uncomfortable, rather than wrapping everything in generic encouragement.
What it does
- Baseline Speech Profile — record for sixty seconds during onboarding and receive your analysis before creating an account or seeing a paywall.
- Daily Challenge — one shared speaking topic every day, revealed when the microphone opens. Sixty seconds. One take. Completing it maintains your streak.
- Today's Workout — three Games prescribed from your weakest skills, what is due for retraining, and enough variety to avoid repetition.
- 28-game library across five Skills: Fluency, Clarity, Delivery, Structure and Expression.
- Voice exercises including Filler Killer, Pause Power and Slow Burn, alongside hand-authored exercises where speech measurement isn't appropriate.
- Progress tracking through historical Speech Profiles, streaks, XP and milestones.
- Social loops including shareable results and Challenge a Friend.
- Free plan with the Daily Challenge, daily Workout and one practice Game. Premium unlocks the full library.
How I built it
Stack
Talkspring is built with Expo and TypeScript, with Supabase for accounts and sync and RevenueCat for subscriptions.
Speech recognition happens entirely on-device. Recordings are never uploaded or stored on a server.
Scoring
The speech engine gives Talkspring words and timings. It doesn't know what "clarity" or "fluency" mean.
The scoring system is my own layer built on top of that transcript.
Talkspring analyses areas including:
- speaking pace
- pauses
- filler words
- hedging
- repetition
Fillers, hedges and repetition are normalised against word count so longer recordings aren't automatically penalised simply for containing more words.
Pace is measured against an ideal speaking range, while pauses have their own scoring model so the app doesn't accidentally reward one behaviour while penalising the other.
Vocabulary is deliberately reported separately rather than folded into the overall score. Using more sophisticated words isn't inherently better in the same way that avoiding excessive filler words usually is.
The scoring system isn't treated as finished. I've already re-tuned it after testing exposed cases where obviously hesitant speech could still receive an unrealistically high score, and it will continue to be calibrated against real recordings.
Monetisation
The paywall appears after the baseline Speech Profile, never before it.
Users can choose monthly or annual Premium, with a seven-day trial available on both plans. Annual is highlighted as the better-value option, but monthly remains immediately accessible.
Declining the paywall simply continues onboarding onto the free plan.
That was intentional. Talkspring should demonstrate its value before asking for money, and choosing not to subscribe shouldn't make the product unusable.
Process
I built Talkspring with Claude Code in the development loop, but the most important part of the process became documenting decisions.
The repository now contains more than one hundred numbered product decisions and over twenty Architecture Decision Records.
When a decision changes, the new one explicitly supersedes the old one.
That made it possible to throw away an entire product direction five weeks into development without losing the reasoning or underlying work that was still valuable.
Challenges
The speech engine was deleting the most important word
One of Talkspring's most important measurements is filler-word usage.
The first transcription engine quietly cleaned up words like um and uh. Every transcript looked artificially perfect, which meant one of the biggest components of the Speech Profile silently returned full marks.
Fixing it required changing the transcription layer and ultimately shipping two on-device speech engines rather than one.
It also reinforced an important engineering lesson: when documentation and runtime behaviour disagree, inspect the source.
Pace and pauses were fighting each other
The first version calculated speaking pace using the entire recording duration, including silence.
That created a contradiction: Talkspring encouraged you to pause, then effectively penalised you for pausing because those seconds reduced your words-per-minute score.
The model now separates the two:
Pause owns the silence. Pace owns the talking.
Nothing is counted twice.
Explainability sometimes beats technical precision
I found a technically more precise way of measuring active speaking time.
I rejected it.
It produced a better number, but that number couldn't be mapped cleanly back to something the user could inspect in their recording.
Principle three won: if Talkspring can't explain a judgement, it shouldn't make it.
I deleted the lesson system five weeks in
The original product revolved around a Daily Lesson, twenty-five lesson templates, a seven-day progression, a personalised plan and a learning path.
Then I built a competing model around daily workouts and a game library and used both versions on-device for a week.
The workout model was simply better.
So the lesson system was deleted rather than hidden behind a feature flag.
The drills, scoring and streak systems survived. The product frame didn't.
The free plan arrived late
Talkspring originally had no free tier.
Building the Game library created a natural dividing line: the Daily Challenge, Workout and one practice Game could remain free, while Premium unlocked the full library.
Because subscription access had been designed around a single entitlement layer, making that product change required surprisingly little engineering work.
What I learned
- Write principles before you need them. Decisions around the paywall became much easier because "no dark patterns" had already been established as a product principle.
- On-device processing is a product feature, not just an implementation choice. Giving up access
Built With
- apple
- apple-push-notifications
- expo.io
- ios
- noise
- posthog
- react-native
- revenuecat
- supabase
- swift
- swiftui
Log in or sign up for Devpost to join the conversation.