AI / Desktop

Transcribe

A local-first desktop app for recording and transcribing work conversations: Whisper on the user’s own GPU, live phrase-by-phrase transcription, structured AI summaries, and no audio ever leaving the machine.

Context

Meetings, interviews and client calls carry decisions that nobody writes down. Hosted transcription services solve that at the price of sending every recording to a third party — a non-starter for conversations under NDA, for regulated work, or simply for Romanian, where hosted quality is uneven.

The engineering problem is reliability on a laptop rather than cloud scale: a recording has to survive a browser crash or the lid closing, the speech model has to run on whatever GPU the machine has, and the summary layer has to treat the transcript as untrusted input.

What we built

The application covers live recording, batch transcription of existing files, structured summaries and search across everything recorded — all on the user’s machine.

  • Backend-agnostic speech engine — one interface auto-selects the Whisper backend for Apple Metal, CUDA or CPU, with fallback, so the same codebase ships on macOS and Windows without a fork.
  • Crash-proof live recording — audio is journalled as numbered, idempotent chunks, each written with fsync, alongside a heartbeat and a durable manifest; a crash or sleep mode loses seconds, not the session, and interrupted jobs resume at startup.
  • Two-pass transcription — a fast live pass shows phrases as you speak, tuned against drift, while the saved transcript comes from a separate full-quality pass over the whole audio, with voice activity detection and hallucination thresholds.
  • Sandboxed summaries — structured summaries (title, key points, decisions, actions) and chat over transcripts run either on local models or through vendor CLIs in a read-only sandbox with tools disabled, because transcript text is untrusted input.
  • Fail-loud limits — the app refuses prompts that exceed a local model’s context instead of letting the model silently drop instructions and produce a confident but incorrect summary.

Stack

Python with Flask bound to localhost, Whisper via mlx-whisper or faster-whisper, ffmpeg for decoding, denoising and loudness normalisation, local models through Ollama or the Claude and Codex CLIs for summaries, a dependency-free vanilla JavaScript interface, and durable JSON plus audio files on disk instead of a database. Packaged as a desktop app for macOS and Windows. The offline test suite uses fault injection (corrupt state, failed writes, concurrent completions) and static contracts for accessibility and translation parity.

Status

Internal product. Available as a private build on request; the same approach applies to any workflow where audio cannot leave the premises.

Have something worth building?

Start a project