Jaden Flanery

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

01

One button. Talk, or drop in a file.

LocalFlow's main screen: a single record button on a dark surface, with an option to upload a video
The entire app is a single choice: hit record and speak, or upload a recording. Everything after that — the transcribing, the cleanup — happens on its own.
02

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

LocalFlow showing a finished transcript of a two-person meeting, split into color-coded turns labeled by speaker name
A messy back-and-forth comes back neatly split by speaker and color-coded, ready to copy — turning a recording into something you can actually read at a glance.
03

Or just a quick note to yourself.

LocalFlow showing a single voice note cleaned up into clear written text, with a copy button
A one-off thought spoken on the go comes back tidied into clean writing — the rambling and filler smoothed out, but never reworded into something you didn’t say.
04

Everything you’ve captured, saved.

LocalFlow history panel listing past transcripts — a meeting, an idea note, and a to-do list
Every recording lands in a searchable history, so a thought from last week or a meeting from this morning is one tap away — nothing lost, nothing to file.

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.

Stack

Vanilla JSPWAVercel FunctionsDeepgramGroq