TR
← All work

Own product · iOS

SpeakTable

Live voice role-play rooms for language practice. Real people and AI personas share a scene while a private coach whispers corrections to each learner.

Role
Founder & lead engineer — agents, API, mobile, infra
Year
2026
Status
In App Store review
Links
Clay-style illustration of the flat-viewing scene — a living room with a sofa, bookshelf and window
1.14 s
voice pipeline p50, end of speech → first reply
≈ $0.50
model cost of a 15-minute session
18
scenarios through an LLM lint + rehearsal pipeline
4
UI languages incl. Arabic (RTL)

The problem

One-to-one AI conversation partners are everywhere now. Human-only practice groups exist too. The intersection — practising with people while an AI runs the scene and coaches you privately — was almost empty. That is the product.

A room has up to four seats. Each seat holds a human or an agent. “1 human + 3 agents” and “3 humans + 1 agent” are the same engine with a different seating plan. If no one joins within two minutes, empty seats fill with personas and the scene starts.

Why not a speech-to-speech model

Speech-to-speech models sound great but are built for one voice in, one voice out. A room needs several humans with known identities, several personas with different voices, someone deciding whose turn it is, and a side channel for private corrections. So the voice path is a cascaded pipeline — STT → director → LLM → TTS — where every layer sits behind an interface and can be swapped per language.

  • Room: LiveKit. Every participant arrives on their own audio track, so speaker identity is free — no diarization.
  • Director: mostly deterministic code. It hands out the floor, pulls quiet learners in, breaks silences, advances phases and handles barge-in. Personas never decide on their own to speak.
  • Personas: an LLM prompt per role, scenario and learner level.
  • Coach: reads the transcript off the hot path and sends at most one important correction per line, only to that learner’s screen. Nobody is corrected in front of the room.

Prompts ask; code guarantees. Turn order, reply length, phase timers, daily limits and moderation all live in code.

Measured, not guessed

Latency was the riskiest item, so it was measured first. After the user clearly finishes, the pipeline answers in 1.14 s p50; with level-aware patience for A1–A2 learners the end-to-end median is longer on purpose. A 15-minute session costs about $0.50 in model spend, TTS being the biggest share. Those two numbers set the subscription price.

A content pipeline instead of hand-written scenes

Scenarios are data (YAML with roles, phases, intake questions and target phrases per CEFR level). Three CLI tools make the catalog scale: scenario-gen drafts them, scenario-lint validates the contract, and scenario-rehearse plays a full scene with a simulated learner and an LLM judge. Only scenes that pass all three — and a human — ship.

Shipping it

NestJS API with Prisma and Postgres, Redis-backed matchmaking, Sign in with Apple/Google verified in our own API, RevenueCat subscriptions, a two-layer moderation filter, and everything self-hosted on Hetzner behind Caddy. The Expo app ships in Turkish, English, Arabic and German. App Review has been a project of its own — background audio modes, AI data disclosure and consent all had to be redesigned and documented.

Contact

Tell me about
your problem.

A few lines are enough. I reply within one working day — with questions, a rough plan, or an honest “AI is not the answer here”.

Or reach me directlyhello@erenakay.com
WhatsApp ↗