Independent project · Active development
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.
Speak naturally. Your session stays linked to your learner identity.
00 — Context
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.
01 — Role
My contribution
- 01
Defined and built the product as an independent, story-by-story full-stack project.
- 02
Built the Expo and React Native mobile flow for microphone permission, learner identity, call controls, recovery states, and post-call source status.
- 03
Built a TypeScript API with Hono, Zod, Supabase JWT verification, PostgreSQL-backed conversation ownership, and short-lived provider sessions.
- 04
Integrated ElevenLabs through a native iOS bridge after reproducing and isolating a reliability issue in the original React Native transport.
- 05
Designed the feedback boundary so model proposals are checked against owned source evidence before they can be presented to a learner.
02 — Engineering
Technical approach
- 01
Keep mobile UI, backend use cases, authentication, provider transport, and persistence behind explicit boundaries.
- 02
Use attempt identity, cancellation, request deadlines, and provider cleanup to prevent late async work from reopening an ended call.
- 03
Treat AI output as a proposal over traceable evidence, with deterministic validation and honest insufficiency states.
- 04
Ship one approved vertical slice at a time and keep production, provider, data-retention, and release gates explicit.
03 — Quality
How I checked it
- 01
Unit, interaction, API-contract, authorization, cancellation, and database tests cover deterministic product and session behaviour.
- 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.
- 03
Current automated evaluation checks evidence binding, parsing, rubric limits, unsupported inputs, and safe failure paths for the first feedback slice.
- 04
Production deployment, broader learner calibration, linguistic effectiveness, and long-term learning outcomes remain unvalidated and are not claimed.
Continue the conversation
Discuss this work.
I can share additional context about the engineering decisions and my contribution where confidentiality allows.