All projects

JustCall - reliable voice practice

A voice-first language-practice product with a React Native app, authenticated TypeScript backend, real-time AI conversation, and explicit session-reliability safeguards.

TypeScriptReact NativeHonoSupabaseVoice AITesting
Independent project · Active development
Interface visual · Product interface based on the current implementation

The problem

A useful speaking product needs more than a working voice SDK: the learner must be authenticated, the microphone and provider lifecycle must stay predictable, and later feedback must remain tied to the correct conversation evidence.

My contribution

  1. 01

    Defined and built the product as an independent, story-by-story full-stack project.

  2. 02

    Built the Expo and React Native mobile flow for microphone permission, learner identity, call controls, recovery states, and post-call source status.

  3. 03

    Built a TypeScript API with Hono, Zod, Supabase JWT verification, PostgreSQL-backed conversation ownership, and short-lived provider sessions.

  4. 04

    Integrated ElevenLabs through a native iOS bridge after reproducing and isolating a reliability issue in the original React Native transport.

  5. 05

    Designed the feedback boundary so model proposals are checked against owned source evidence before they can be presented to a learner.

Technical approach

  1. 01

    Keep mobile UI, backend use cases, authentication, provider transport, and persistence behind explicit boundaries.

  2. 02

    Use attempt identity, cancellation, request deadlines, and provider cleanup to prevent late async work from reopening an ended call.

  3. 03

    Treat AI output as a proposal over traceable evidence, with deterministic validation and honest insufficiency states.

  4. 04

    Ship one approved vertical slice at a time and keep production, provider, data-retention, and release gates explicit.

How I checked it

  1. 01

    Unit, interaction, API-contract, authorization, cancellation, and database tests cover deterministic product and session behaviour.

  2. 02

    Ten consecutive two-way calls passed on an iPhone 12 without restarting the app; permission denial, cancellation, retry, network-loss recovery, and app-close cleanup were also walked through on-device.

  3. 03

    Current automated evaluation checks evidence binding, parsing, rubric limits, unsupported inputs, and safe failure paths for the first feedback slice.

  4. 04

    Production deployment, broader learner calibration, linguistic effectiveness, and long-term learning outcomes remain unvalidated and are not claimed.

Discuss this work.

I can share additional context about the engineering decisions and my contribution where confidentiality allows.

Book a conversation