Notari — voice notes that never leave your phone, structured by Gemma 4 Notari is an Android app that records, transcribes, and structures voice notes into Markdown format entirely on-device, without ever writing audio to disk or requesting internet permission. The app uses Android's SpeechRecognizer for transcription and Google's Gemma 4 E2B model running locally via LiteRT-LM to convert transcripts into structured JSON notes. All processing occurs locally on the device, with the audio held only in RAM and the app's privacy guarantees being verifiable through airplane mode testing, manifest inspection, and network monitoring. This is a submission for the Gemma 4 Challenge: Build with Gemma 4 Notari is an Android app that records a voice note, transcribes it, and turns it into a clean, structured Markdown note — entirely on-device. The audio is held in RAM, never written to disk, and the app doesn't even request the INTERNET permission. I keep voice memos: meeting decisions, half-formed ideas at 11pm, reminders I'll forget by the time I'm home. The two app categories that should solve this don't: So I built the third option. Voice notes are the kind of content where privacy isn't a marketing veneer — it's a precondition for using the tool at all. If the app feels like it might leak, I won't dictate the thing that matters most. So the privacy guarantee had to be load-bearing, not optional. The pipeline is short on purpose: Mic ─▶ Android SpeechRecognizer ─▶ Gemma 4 E2B LiteRT-LM ─▶ JSON ─▶ Room SpeechRecognizer runs in continuous-listen mode so the user can pause naturally without the recognizer giving up. The OS owns the audio buffer; the app only ever sees the text Flow.mentions , a Markdown body — and nothing else.No step touches the network. The INTERNET permission isn't declared in the merged manifest, and a CI gate fails the build if anyone ever adds it. docs/ in the repoThe privacy promise is verifiable. Run it in airplane mode. Inspect the manifest. Sniff the network. Nothing leaves the device — that's the whole point. I chose Gemma 4 E2B Effective-2B, INT4-quantized, ~1.5 GB on disk running locally via LiteRT-LM. Three reasons made E2B the right fit — not E4B, not a cloud model: com.google.ai.edge.litertlm:litertlm-android reads .litertlm files directly, supports GPU and CPU backends, and exposes the Engine / Session API the rest of the app is built around.The app is opinionated: it transforms the transcript faithfully, never paraphrases meaning, and never invents dates, names, or facts. That guarantee is enforced by the prompt and verified by adversarial fixtures in core/inference/src/test/resources/prompt-eval/ . The model is asked for one thing: a JSON object matching a fixed schema. No prose, no Markdown fences, no "Sure Here's the structured note:" preamble. { "language": "