BhashaBridge

AI · 2025 · Built alone, August to October 2025

BhashaBridge

A spoken English tutor I made for someone in my house, not for a demo account.

Duolingo was not the conversation I wanted

August 2025 I was watching someone I love tap through language drills and then freeze the moment a real person said hello. I did not want another streak. I wanted a tutor that would sit at the table, speak Bangla when an explanation needed it, and let her interrupt. The first version had to work in our flat, on a laptop that already had too many things open.

I called the voice Rima. The app is BhashaBridge. Tauri and React on the outside, a Rust proxy in the middle so the OpenAI key never lands in the frontend. WebRTC to the Realtime API, WebSocket if the browser gets precious, a first-run level check from A1 to C2, a timer so sessions do not dissolve into an hour of polite panic.

Then the wifi died and I built the twin

October arrived and so did a week of bad internet. The cloud tutor is useless if the packet never comes back. So I made BashaBridge PC, the same teaching idea with the lights off: llama.cpp running Qwen2.5-7B on Metal, whisper.cpp listening, Piper talking, lessons that follow Presentation, Practice, Production, and a small SRS deck in SQLite. After the models download it does not ask the outside world for permission.

The cloud app still wins for warmth. Two corrections a turn, not a red flood. Captions you can read while you listen. History that stays on the machine. The offline app wins for pride. I can watch a seven billion parameter model do homework on a Mac and not send a sentence to Virginia.

The nights it actually worked

I still remember the first time she barged in mid-sentence and Rima waited. That is a small thing in a spec and a large thing in a kitchen. Two months of work, two runtimes, one person I could not afford to ship a toy to. If you want to know how I think about AI products, start here: a real learner, a security boundary, and a second version for when the network lies.

TauriRustReactTypeScriptOpenAI Realtimellama.cppSQLiteWhisperPiper