Skip to content
← All projects

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.

Role
Full-Stack Developer
Platform
iOS
Stack
SwiftUI, Fastify, OpenAI
Speak Lock product screens

Why Speak Lock exists

The challenge

Speaking improves through regular practice, but it is hard to make practice part of a daily routine.

The approach

Use selected app locks as a cue to complete a short tailored speaking rep and get immediate feedback.

How it works

Speak Lock: Open a selected app
01

Open a selected app

Screen Time presents a speaking rep before selected apps can open.

Speak Lock: Open a selected app
02

Get a matched scenario

A deterministic selector picks from 500+ scenarios based on your goal, difficulty, streak, and recent practice.

Speak Lock: Get a matched scenario
03

Speak for up to 30 seconds

Start speaking. Every rep stays short enough to fit into a daily routine.

Speak Lock: Speak for up to 30 seconds
04

Get feedback and unlock

Get clear next steps and a suggested rewrite, then unlock the app when the rep is complete.

Speak Lock: Get feedback and unlock

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.