ai · July 2026
Mia
Mia (მია) is an Android-first voice assistant built for Georgian speakers. Tap the animated orb or say “Hey Mia” — even with the app closed — to ask for alarms, timers, weather, music, calculations, or a live Georgian ↔ Russian/English interpretation. A signed v1.1.0 APK is available directly from this portfolio.
Tornike Kalandadze — software engineer & technical lead, client delivery since 2019 · Tbilisi (GMT+4)
Android build
Mia-v1.1.0.apk
Problem
Mainstream voice assistants do not provide a native Georgian conversation experience. Georgian speakers still need hands-free access to everyday actions — alarms, timers, weather, music, calculations, and interpretation — without changing language or translating every request first.
Approach
Split the voice loop at the right trust and latency boundaries. Wake-word inference, microphone control, alarm scheduling, playback, and local history stay on Android. The Next.js API sends recorded speech to Google Chirp 2, streams OpenAI tool-calling output back over SSE, and proxies ElevenLabs speech per sentence. A foreground MediaSource player reduces time-to-first-audio, while a complete-file path keeps background and fallback playback reliable.
Impact
Mia now ships as a signed, directly installable v1.1.0 Android artifact with five current device captures and a production API host. The release demonstrates the complete Georgian voice loop, hands-free follow-up, native alarms and timers, and two-way interpretation; Play Store submission remains the next distribution milestone.
Through every lens
02 · Mobile
A bare React Native 0.85.2 Android app with a real signed release: on-device “Hey Mia,” native background alarms and timers through Notifee, interruption-safe hands-free follow-ups, local conversation history, amplitude-driven orb animation, and foreground streaming audio with a screen-off file fallback.
06 · AI
A staged voice-agent pipeline: Google Chirp 2 transcribes Georgian, OpenAI streams tool-calling decisions and response tokens over SSE, and ElevenLabs eleven_v3 speaks complete sentences as they arrive. Wake-word inference stays local ONNX; the cloud voice pipeline begins only after activation.
Built with
React Native 0.85.2 · TypeScript · Zustand 5 · Reanimated 4 · Notifee · openWakeWord (ONNX) · Next.js 16 · Server-Sent Events · Google Cloud Speech (Chirp 2) · OpenAI tool calling · ElevenLabs eleven_v3 · Docker · Caddy · Hetzner · Sentry
Notes
A voice assistant that starts with Georgian
Mia treats Georgian as the product language, not a translated settings option. The full Android interface is Georgian, from the animated home orb and prompt suggestions to alarms, timers, history, settings, and interpreter mode. The two-way interpreter gives each participant a dedicated microphone and voices the translated result between Georgian and Russian or English.
One voice turn, streamed in stages
The React Native app records PCM16 audio and sends it over HTTPS to a Next.js API. Google Cloud Speech Chirp 2 produces the transcript; OpenAI chooses and drives tools for weather, alarms, timers, music, time, and math; chat tokens return to the phone over Server-Sent Events. As complete sentences arrive, ElevenLabs eleven_v3 synthesizes them in parallel. The foreground orb uses a WebView MediaSource path to begin playing streamed MP3 bytes early, with a complete-file fallback for screen-off and unsupported playback paths.
After Mia answers, the hands-free loop reopens the microphone for a follow-up instead of forcing another tap. Every asynchronous turn carries a monotonic ID, so interruption can cancel stale chat, speech, and playback before an older response leaks into the next conversation.
Native where it matters
“Hey Mia” runs on-device through an openWakeWord ONNX model and a native Android service, so wake-word detection does not send ambient audio to a cloud provider. Voice-created alarms and timers are scheduled as native Notifee notifications that can ring in the background. Conversation history persists locally, location powers spoken weather, and Sentry captures release crashes.
Release 1.1.0
The portfolio installer is the signed Android release for ge.mia.app: version code 2, Android 7.0+ (API 24), arm64-v8a. The APK is published as a versioned GitHub Release asset and verified with SHA-256 9d4356d6d451b236e67ca1009b2f11b4e81ce5f34e2dcdd32b7ba7f6a32e3968. The Next.js API runs in Docker behind Caddy on a Hetzner VPS; Play Store submission is the next distribution step.