"Dictate messy. Paste clean."
Mistr Flow is a tiny Windows dictation app with manners. Press a hotkey, speak naturally, and it transcribes, lightly polishes, and pastes the result into whatever app you are already using.
No voice-control grammar. No command language. No SaaS dashboard. Just a cheerful little gentleman tidying your rambling into usable text.
This is a personal project, actively used day to day, and still evolving as the rough edges reveal themselves.
- Starts dictation from a global hotkey:
Ctrl+Alt+D. - Records until you press the hotkey again.
- Sends the audio to OpenAI Whisper for transcription.
- Uses an LLM polish pass for punctuation, grammar, and spoken-list formatting.
- Copies the polished text to the clipboard and pastes it into the active app.
- Shows a small always-on-top overlay so you know what state it is in.
- Mutes system audio while recording by default, then restores it afterward.
The polish step is deliberately conservative: it should clean up words, not reinterpret them. Mistr Flow is meant to be a valet, not a ghostwriter.
The overlay is intentionally small and expressive. The mascot gives just enough feedback to be reassuring without stealing attention.
Mistr Flow is a personal Windows-first Electron app built with TypeScript. It currently assumes:
- Windows desktop.
- An OpenAI API key.
- English dictation.
- A hand-edited JSON config file rather than a settings UI.
Install dependencies:
npm installCreate the config file at %APPDATA%\MistrFlow\config.json:
{
"openaiApiKey": "sk-...",
"muteSystemAudioWhileRecording": true
}Build and run:
npm run build
npm startOnce running, press Ctrl+Alt+D to start recording, press it again to stop, and press Esc during a recording to cancel.
npm run test
npm run typecheck
npm run buildThe production entry point is src/main.ts; the overlay lives in public/overlay.html and public/overlay-renderer.js. Design references and extracted mascot assets live under docs/design/.
The joke makes the tool lovable, but it must never slow the user down. The mascot is delightful seasoning — not the meal.

