The challenge
Case Study
Speak Lock
Short speaking reps that make daily practice stick.
Choose a speaking goal, complete a 30 second scenario, get feedback, then unlock selected apps.
Why Speak Lock exists
The approach
Use selected app locks as a cue to complete a short tailored speaking rep and get immediate feedback.
How it works
Open a selected app
Screen Time presents a speaking rep before selected apps can open.
Get a matched scenario
A deterministic selector picks from 500+ scenarios based on your goal, difficulty, streak, and recent practice.
Speak for up to 30 seconds
Start speaking. Every rep stays short enough to fit into a daily routine.
Get feedback and unlock
Get clear next steps and a suggested rewrite, then unlock the app when the rep is complete.
What I built
An iOS app and API that turn selected app locks into short, tailored speaking practice.
Frontend / App
- Built the native iOS flow for onboarding, goals, progress, speaking reps, and app unlocks.
- Built the Screen Time shields, 30 second recording flow, live transcripts, retries, and unlock states.
Backend / Systems
- Built the API layer for session creation, feedback, validation, logging, and error handling.
- Connected the app to GPT-4o Transcribe through WebRTC so transcription can begin while the user speaks.
AI / Feedback
- Used GPT-4o Transcribe for a reliable transcript, then GPT 5.6 Luna for feedback on the text.
- Generated 500+ scenarios and built deterministic matching around goals, difficulty, streak, history, and recent feedback.
Engineering decisions
The choices that make feedback fast, scenarios relevant, and daily practice easy to repeat.
Stream transcription, then score the text
WebRTC starts GPT-4o Transcribe as the user speaks. GPT 5.6 Luna then evaluates the finished transcript, reducing wait time and improving feedback.
Match scenarios with a deterministic system
A library of 500+ scenarios can be matched by goals, preferences, difficulty, history, streak, and recent feedback without relying on a new AI prompt each time.
Keep every rep short
Reps are capped at 30 seconds. The lock only works as a daily practice cue if the rep feels easy to start and finish.