Second Voice: Facing the Conversations That Haunt You, with Gemma Running Offline on Your Phone A developer built Second Voice, an Expo/React Native app that runs Google's open-weight Gemma 3 1B model (Q4_K_M GGUF, ~806 MB) entirely on a phone via llama.rn to help users rehearse difficult conversations, with nothing uploaded and no account or analytics. The app uses JSON-Schema-constrained decoding to force the model's output into a fixed rehearsal structure, then validates responses and issues repair prompts at lower temperature for up to three retries when drafts are duplicated or drift into medical, legal, therapy or hostile advice. When the model isn't downloaded, it falls back to six hand-written scenarios, each labelled with what produced it. This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine https://dev.to/challenges/hacktoberfest-week4-2026-10-26 Everyone has a ghost like this. It's the conversation you keep not having. Asking your manager for the raise you've earned. Telling your mom that five calls a day during work is too many. Apologizing to the friend whose birthday dinner you skipped. Texting your landlord that rent will be four days late. It doesn't make noise. It just comes back: in the shower, on the commute, at 2 AM, rehearsing itself in your head with worse and worse wording. Second Voice is a private rehearsal room for those conversations. You describe the situation in your own words, by voice or text, and an open-weight model running on your phone helps you find a clear, kind way to say it: Then you can practice it out loud . Second Voice reads the draft back to you, you record yourself, and it gives gentle notes on pacing, filler words, clarity, and confidence. I took the theme literally: the ghost in the machine is the conversation that keeps haunting you, and the machine is a phone that can finally help you put it to rest, without anyone else ever hearing it. A private, offline rehearsal room for the conversations you keep avoiding. Describe the conversation that's been haunting you — asking for a raise, setting a boundary with a parent, apologizing to a friend, telling your landlord the rent will be late. Second Voice runs Google Gemma 3 1B, open-weight on your phone to help you find a clear, kind way to say it, then lets you practice out loud. Nothing is uploaded. There is no account, no analytics, and nothing is ever sent on your behalf. Second Voice is a communication preparation tool. It does not provide therapy, counseling, medical, or legal advice. Stack: Expo SDK 58 + React Native + TypeScript, Expo Router, Zustand, SQLite. The open pieces doing the work: | Piece | What it does | |---|---| | Gemma 3 1B Instruct Q4 K M GGUF, ~806 MB | Generates the whole rehearsal | | llama.rn llama.cpp for React Native | Runs Gemma on the phone, GPU-offloaded where available | | JSON-Schema constrained decoding | Forces Gemma's output to match the rehearsal shape | | On-device speech recognition | Turns voice notes into text with requiresOnDeviceRecognition: true | php flowchart LR A Voice note or text -- |on-device STT| B Your words B -- C Prompt: audience · goal · tone C -- D Gemma 3 1B via llama.rn