How it is built
Keep the user’s keyboard. A bubble owned by Accessibility listens, tidies words on the phone, and inserts them. Not a keyboard.
1. Where it sits
The speech engine is outside our process. INTERNET is declared. That is not the same as “audio never leaves.”
YouTap the bubble. Speak.
↓
Other appNotes, chat, browser — your keyboard stays.
↓
Open FlowBubble + app. Accessibility overlay. Insert only.
↓
Phone speechOn-device if the phone has it. Often still Google. May leave the device.
2. One dictation
1 · TapStart listening
2 · SpeakPhone speech engine
3 · Tap againOr hold-to-talk, then release
4 · CleanupDictionary → snippet → rules → style
5 · InsertInto the focused field
6 · HistorySaved on this phone, unless you chose never
X while listening throws the words away. The bubble stays while the keyboard is up.
3. Cleanup on the phone
All on the phone. No language model. Style runs last.
| Step | What it does |
|---|---|
| Raw speech | Whatever the phone recognizer returned |
| Dictionary | One word → another word |
| Snippet | Exact trigger → a whole block |
| Cleanup | None / Light / Medium / High (rules) |
| Style | Formal / Casual / Very casual / Excited / Custom |
4. Main pieces
| Piece | Job |
|---|---|
| App screens | Walkthrough, setup, Home, History, Dictionary, Settings |
| Accessibility service | Bubble, field detect, listen, insert |
| Speech | Phone SpeechRecognizer. Fast / Balanced / Accurate |
| Room database | History, dictionary, snippets — on this phone |
| Hide rules | Hide on banks. Skip passwords. |