Christian Obora
Chicago--:--CT
WorkAboutContact
← All work03 / 05

VoiceMirror

An AI communication coach that learns your voice.

Role
Co-founder
Years
2026 — now
Live
voicemirror.io ↗
voicemirror / voice coach
● recording
Unit 2 · First dateslvl 7 · 🔥 12

“So what got you into climbing?”

warmth 82clarity 91+20 xp

● Overview

Duolingo-style lessons for how you talk: a skill-tree learning path, AI-scored practice, and free practice with a text coach, a voice coach and AI avatar calls. Native iOS with one backend behind it.

● The hard part

Coaching only works if feedback is fast, safe and personal, and a mobile app can't hold provider keys. Every model, transcription and speech call had to move server-side without making the app feel slower.

iOS
native SwiftUI
19
node skill tree
0
provider keys on device

● What I built

  1. 01

    SwiftUI app

    An iOS 17+ app with a skill-tree Learn path, XP, levels and streaks, voice practice and avatar calls, plus RevenueCat subscriptions and PostHog analytics.

  2. 02

    One AI gateway

    A NestJS API owns auth, content, scoring, caps and the paywall, and is the only thing that talks to OpenAI and ElevenLabs. The app ships zero provider keys.

  3. 03

    Keyless development

    A deterministic fake AI provider runs every route with no external keys, and config refuses it outside development, so the whole product can be built and end-to-end tested offline.

  4. 04

    From microservices to one API

    The first version was a Go middleman with a safety gate in front of Python text, voice and avatar coach services with RAG memory. I collapsed it into a single backend that's easier to ship and to reason about.

● Stack

  • Swift
  • SwiftUI
  • NestJS
  • PostgreSQL
  • Go
  • Python
  • OpenAI
  • ElevenLabs
  • RevenueCat
  • Next.js
Next projectMOLC Solutions→Private AI infrastructure for sensitive workloads.