Project 6 of 10
LocalFlow
A dictation PWA that turns voice notes and hour-long recordings into clean, speaker-labeled text.
Ever try to save a thought while driving, or stare down an hour-long recording you don’t have time to type up? What if you could just talk, and get back clean text with who-said-what already sorted out?
See it work
One button. Talk, or drop in a file.

Get back clean text, who-said-what sorted.

Or just a quick note to yourself.

Everything you’ve captured, saved.

The goal
Capture a thought by voice anywhere — or drop in an hour-long recording — and get back text that's ready to paste. Solo notes come back lightly cleaned; conversations come back as verbatim, speaker-labeled turns with suggested names.
The fidelity guarantee is the point: conversation turns are never rewritten by a model, and solo cleanup stays light-touch. What you said is what you get, just readable.
Background
LocalFlow is deliberately minimal: a no-framework, no-build-step PWA in plain HTML, CSS, and JavaScript, backed by two serverless functions. The interesting engineering hides in the pipeline — audio is re-encoded in the browser to compact Opus with WebCodecs, and hour-plus videos stream through demuxing with bounded memory instead of loading whole files.
Transcription runs on Deepgram's Nova-3 with diarization, falling back to Whisper on Groq, with every endpoint passcode-gated and uploaded audio deleted right after transcription. History syncs through Supabase with a per-device local fallback.
Built with AI
I directed the whole build — architecture choices, the WebCodecs encoding path, the streaming pipeline for large files — through AI, keeping the constraint that the app stays dependency-light and framework-free.
The process handled real-world iteration too: when the cleanup model got too aggressive and reorganized a note (a bug I hit as the app's own user), the fix went through the same spec-and-review loop as any feature, and the fidelity guarantee got written into the project's rules so it can't regress.