AI-assisted development turned a lot of coding into writing. The input is English. The keyboard is the bottleneck.
The bottleneck moved to prompts
A good request to Cursor or Claude Code carries context, constraints and acceptance criteria. That material is still mostly typed.
Take a 300-word prompt, about the size of a real feature spec. It takes minutes to type. Spoken, it takes a fraction of that, before you edit it. Your mileage will vary, and editing narrows the gap. But prompts are the input dictation handles best: no symbols, no casing, little syntax.
The three levels of voice-to-code
- Docs, comments, commit messages. Low-risk, reviewable text: README sections, doc comments, PR descriptions, review feedback, commit messages longer than “fix stuff.” If you adopt nothing else, adopt this.
- AI-assistant prompts. The big one. “Here’s the file layout, here’s what’s broken, here’s what I tried, here’s what done looks like.” Painful to type, easy to say. The tool owns the syntax; you own the intent.
- Actual code. Possible with the right commands, and worth it for boilerplate, tests, config and SQL. Dense algorithmic code may still be faster to type, or to generate and correct. What makes it work at all is casing and symbols.
The casing problem, and the commands that solve it
Ask anyone who tried dictating code years ago what broke. Identifiers. “getUserName” came out as “get user name” or “Getusername,” and most people went back to the keyboard.
The fix is a case command: say the casing, then the words.
| Command | You say | You get |
|---|---|---|
| camel case | “camel case get user name” | getUserName |
| pascal case | “pascal case get user name” | GetUserName |
| snake case | “snake case get user name” | get_user_name |
| constant case | “constant case get user name” | GET_USER_NAME |
| kebab case | “kebab case get user name” | get-user-name |
With those five, identifiers stop sending you back to the keyboard. It feels awkward for a day. Then it doesn’t.
Spoken symbols
The other half of code-shaped text. In the Coding profile, LockedIn Flow maps the names programmers already say out loud to the symbols they mean, and number words come out as digits.
- open / close paren
- ( )
- open / close brace
- { }
- open / close bracket
- [ ]
- open / close angle
- < >
- arrow
- ->
- fat arrow
- =>
- single / double quote
- ' "
- backtick
- `
- slash / backslash
- / \
- underscore
- _
- pipe
- |
- ampersand
- &
- caret
- ^
- tilde
- ~
- hash
- #
- at sign
- @
- dollar sign
- $
- percent sign
- %
- star
- *
- equals / equals equals
- = ==
- plus / plus plus
- + ++
- minus
- -
- semicolon / colon
- ; :
- comma / period
- , .
- new line
- ↵
Plus less than, greater than, question mark, exclamation point, tab and “no space”: 46 spoken symbol phrases in all, and five case styles. Like the cleanup rules, they’re written for English.
Why local matters more for developers
Think about what codebase-adjacent audio contains: internal API names, unreleased feature names, a customer’s name read off a ticket, the odd connection string you said instead of typed. With cloud dictation, all of it goes to a third-party server. Your security policy may well restrict that path.
With on-device dictation, the dictation vendor is out of the audio path. LockedIn Flow records, recognizes and cleans up on your Mac, and your audio is never saved and never sent.
For the full side-by-side, read the Wispr Flow comparison. To verify the “nothing leaves” part instead of believing it, here’s how to test any dictation app, including us.
A workflow that actually works
Dictate the prompt. Generate the code. Dictate the review. Use voice where it’s strongest, for intent, context, constraints and feedback, and let the AI tool own the syntax.
- Speak the intent. A paragraph of context and constraints into Cursor or Claude Code.
- Let it write. The assistant drafts the change.
- Speak the review. Dictate comments on the diff. Keyboard for the genuinely code-shaped fraction.
LockedIn Flow pastes at your cursor in the editor, terminal or chat field in front of you, wherever ⌘V would insert text, with no product-specific integration. Every transcript is saved to History first, so a paste that doesn’t land never costs you the words. It’s free under the MIT License: request a build for your team and try it in your own editor.
Product details updated October 6, 2026. Tool names and capabilities change fast; the workflow advice ages better than the product names.