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.

Case studymacOSBuilt with Claude
RoleDesigner
Built withClaude
Based onGamezxz's Whisper
Time2 weeks
Press and hold
Slack message…Translated

Two weeks, 33 releases, and I tried every one first

587commits in two weeks
33tagged releases
16languages, auto-detected
572automated tests

From the app's git history, 29 Sep 2026. Claude wrote the code; the first 23 commits are the original app.

Before
  • Second-guess every word
  • Copy-paste through a translator
  • Rewrite until it sounds right
With Momo
  • 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.

What I added
  • 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.

01

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.

Tone picker from the Momo Whisper site.
02

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.

Dictionary the misheard word on the left, the fix on the right.
03

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.
04

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.
nabhak.github.io/Momo-Whisper
The site live at nabhak.github.io/Momo-Whisper.
Film review pause, box a spot, write a note, like PinPoint for video. The note here is a sample.

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.

AI
  • Writes the Swift code and tests
  • Fixes what code review flags
  • Builds, signs, installs each version
  • Builds the site and film from my picks
Me
  • 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.