Side project, a Mac app built with Claude
Hold fn. Talk. It types.
English was never my strong suit — a short Slack message could eat half my morning. So I made a menu-bar helper: hold Fn, speak Thai, and clean English lands where my cursor is.
Two weeks, 33 releases, and I tried every one first
From the app's git history, 29 Sep 2026. Claude wrote the code; the first 23 commits are the original app.
- Second-guess every word
- Copy-paste through a translator
- Rewrite until it sounds right
- Speak Thai, get English
- Lands right at the cursor
- Pick a tone, it sticks
A short Slack message could eat half my morning.
I work at an international company, and a quick email meant second-guessing every word.
Gamezxz's open-source Whisper already did hold-a-key-and-talk, so I forked it and added translation and tone — I designed it, Claude built it. Friends kept asking to try it, so now it's free for anyone.
- Fn + Shift to speak one language, type another.
- Highlight to translate, in any app.
- Six tones, from Email to No filter.
- A new look, Momo the cat, and a site to share it.
How it works
Four moves: two in the app, two around it. The keycap at the top of the page is the app itself.
Pick the vibe once
Same words, right outfit — Email, Professional, Workplace Chat, Casual, AI prompt, No filter. Pick once and every dictation after matches it.
One Thai sentence, written as an email.
Teach it a word once
Speech recognition mangles names and jargon. Add the right spelling once and Momo fixes it before it pastes — my list has 200+ fixes already, like คลอส to Claude.
Thai-aware, so a short word never breaks a longer one.
Nothing ships until I've used it
Claude builds each feature on its own branch and installs it on my Mac. I use it for real work first, and only I decide when it ships.
AI buildsA new branch per feature, with tests, signed and installed on my Mac.I use itReal messages, real emails — I flag anything that sounds off.AI fixesSame branch, next build, until it feels right.I say goOnly then it merges and goes out as a release.The site and a launch film, with AI as the editor
Same recipe both times: I pick the references and lock the look, Claude builds the rest — family.co for feel, Wispr Flow for the hero. The launch film is 65 seconds, in 16:9 for LinkedIn and 9:16 for Reels, built as HTML instead of in a video app.
The film isn't rendered yet. Music and the final export come next.
I pick refsA few launch videos I like, plus a short brief on tone and length.AI measuresTimings and easings, frame by frame, into a library of 41 transitions.I lock one shotThe hardest shot first — nothing else gets built until it's right.AI builds, I pinThe whole film, then my notes pinned on the frames, sent in one batch.Who does what
I set the mood and tone by hand, then hand AI the heavy, boring part. I still check all of it — I'm the one who explains it.
- Writes the Swift code and tests
- Fixes what code review flags
- Builds, signs, installs each version
- Builds the site and film from my picks
- The flow: key, popup, paste
- The six tones' voice
- The look: Momo, and the references
- Testing every build first
Honest limits
1Your Mac frowns at it first
Momo isn't notarized ($99/year from Apple) — it's free, so the first launch shows a warning you click past once.
2The smart part needs Groq
Translation and tones run on a free Groq key — hit the daily limit and Momo shows a countdown, dictation keeps working.
3Offline still mixes scripts
Without internet, English words can come out in Thai letters — a fix is on a branch, waiting for me to test it.
Next project
Typing in your second language too?
Happy to show you Momo Whisper, or how I build tools like this with Claude.
