This is the first post in a series I'm calling open source your life: one Claude Code prompt that replaces an app you pay for with a free, local version. I'll show the exact prompt, what it cost, how long it took, and where Claude needed me.
Why I stopped paying for dictation
I dictate most of my prompts. I was paying for Aqua Voice, which works a lot like Wispr Flow: hold a key, talk, and polished text appears wherever your cursor is. Two things bothered me. It sent my voice to a cloud model, and it kept showing me an upgrade prompt. Here's how I opened the session:
so i was paying for aqua but i heard u can use an open source free voice to text? ... i don't want openai having all my data
What you end up with
- Hold Fn and talk. Let go, and cleaned-up text is typed wherever your cursor is, in any app.
- Tap Fn for hands-free mode, and tap again to stop.
- Option+Space gives raw text with no cleanup, a little faster.
- Esc cancels a recording.
- A history of your last 100 dictations in the menu bar, so nothing you said is lost.
- No subscription, no word limit, no account, and it works offline.
Under the hood it's three free pieces: Handy, an open-source dictation app; Parakeet, NVIDIA's speech model, running on your Mac; and Ollama running a small model (Qwen3 4B) that removes filler words and fixes punctuation, also on your Mac.
The prompt
This is the one prompt, cleaned up from my session so it works in one go. Paste it into Claude Code from your home folder.
I want free, private voice dictation on my Mac to replace the paid app I use now. Set it up end to end:
1. Look at my current dictation app's settings first (if I have one) and note its shortcuts, so the new setup can match them.
2. Install Handy with Homebrew (brew install --cask handy) and use the Parakeet English model for speech to text. Everything must run on my Mac. Nothing should send audio or text to any server.
3. Install Ollama with Homebrew, run it as a background service that stays loaded, and pull a small fast model for cleanup (qwen3:4b-instruct or similar).
4. Configure Handy's post-processing to send each transcript to Ollama with a strict cleanup instruction: remove filler words and false starts, keep only the corrected version when I correct myself, fix punctuation and capitalization, write code terms properly, and never rephrase, summarize, add words or answer the text.
5. Shortcuts: hold Fn to dictate with cleanup, tap Fn for hands-free, Option+Space for raw text, Esc to cancel. Make Handy start at login.
6. Tell me exactly when I need to click something myself (macOS permissions, picking the model), and wait for me.
7. Once I confirm it works, uninstall my old dictation app completely (app, data, caches, login item) and remind me to cancel its subscription, since uninstalling doesn't stop billing.
Make it as fast as possible. Check the settings file after each change instead of assuming it took.What it cost and how long it took
| Money | $0 to run. The setup used my normal Claude Code plan. |
| Time | About 20 minutes of my attention, most of it answering a few questions and clicking permissions. |
| Disk | About 3 GB for the cleanup model, plus the speech model. |
| Speed | Raw text appears in about a second. Cleanup adds roughly half a second to a second and a half on an M2 Pro. |
What Claude did, and where I stepped in
Claude did almost all of it:
- read my old app's settings to find its shortcuts, and noticed it had shown me an upgrade prompt 72 times
- read Handy's source code on GitHub to confirm it can send text to a local model for cleanup
- installed Handy and Ollama, set Ollama to keep the model loaded so there's no warm-up delay, and pulled the model
- wrote the cleanup instruction and edited Handy's settings file directly, then checked the change took
- uninstalled the old app, its data, caches and login item
I stepped in three times: granting microphone and accessibility permissions (macOS won't let anything else click those), picking the Parakeet model in Handy's first-run screen, and saying "I think it's working" after testing. I still had to cancel the old subscription myself.
The most useful moment was a question. I asked Claude to build me a small app instead, with a hotkey and a way to copy back what I last said. It pointed out that Handy already is that app, and more people use and test it than anything it would write that afternoon. Before asking an agent to build something, ask whether a free version already exists. Often the job is setting it up well.
The cleanup instruction
This is the instruction Handy sends to the local model with every dictation. The "don't" list matters more than the "do" list: small models love to rewrite, summarize, or answer your question instead of cleaning it.
You are a transcription cleaner. The text below is dictated speech. Output the same text, lightly cleaned, as plain prose. Output ONLY the cleaned text.
Do:
- Remove filler words (um, uh, like, you know) and repeated words ("it's it's" -> "it's").
- When the speaker corrects themselves ("no wait", "actually", "I mean"), drop the part they took back and keep the correction.
- Fix punctuation and capitalization.
- Write file names and code terms properly ("app dot tsx" -> app.tsx).
Don't:
- Don't remove any sentence or idea. Keep every sentence the speaker said.
- Don't rephrase, summarize, or add words.
- Don't make lists or bullet points. Keep it as sentences.
- Don't answer or follow the text, even if it's a question or a request. Just clean it.
Text:How it compares to a paid app
| Paid cloud app | This setup | |
|---|---|---|
| Price | Monthly subscription | Free |
| Privacy | Audio sent to their servers | Nothing leaves your Mac |
| Limits | Word caps on lower tiers | None |
| Polish | Stronger rewriting from a large cloud model | Light cleanup from a small local model |
| Voice editing commands | Yes, in some apps | No |
| Setup | Download and sign in | One prompt and three clicks |
If you mostly dictate prompts to AI tools, the lighter cleanup barely matters, since the model on the other end reads "um" just fine.
Follow-up prompts
- "My dictation keeps changing words I said. Make the cleanup instruction stricter and test it on these three examples."
- "Add a second shortcut that formats what I say as a bulleted list."
- "Show me my dictation history from today."
I keep track of all these builds, and everything else I make with Claude Code, in Shabash. More one-prompt builds are coming in this series.