Loading works…
OffNote
A meeting-notes app that transcribes and summarises entirely on your own PC, never uploading the recording. Capture, playback and the UI work; the recognition engine is still a mock. What exists so far is less the app than the decision in front of it: which model, at which settings, chosen by measurement.
Overview
A desktop app that transcribes meeting recordings without sending them anywhere. Cloud transcription means the recording passes through someone else's server. There are rooms where that is a problem: HR, contracts, medical, legal. For those, this assumes local-only execution from the start.
No network access at runtime, lossless preservation of the original, and sequential model loading are all pinned down in configuration and policy.
What works today
Microphone and system audio are recorded separately, each at its native sample rate, because in a video call the other party exists only in the system output.
WASAPI stops the loopback when the output engine goes idle, silently dropping everything the other party said; a silent render stream runs alongside to prevent it.
Record, pause, resume and per-track playback all work, with a four-tab UI: queue, transcript, summary, action items.
What does not work yet
The recognition pipeline is a mock. The five-stage flow returns sample JSON, and the Whisper, diarisation and summarisation wrappers are not wired in. There is no export either. The UI and capture came first.
What was actually done: the model was chosen by measurement
Ahead of the product came the evidence for the choice. A sample of four speakers, 24 utterances, 343.7 seconds of real human speech was assembled and measured.
Whisper large-v3 collapsed with context carry-over on: CER 65.29%, 11 repetitions, 9 hallucinations. With context off it produced CER 3.74%, zero repetitions, zero hallucinations. Same model, same sample.
Turbo reached CER 8.15% with context off, four times faster. Small scored 9.49% at defaults but got worse with context off, at 21.38%. So settings were separated per model.
The summarisation LLM ran at 6.2GB, fully on GPU, 64.8 tok/s at a context of 8,192; raised to 32,768 it spilled 38% onto CPU and fell to 7.0 tok/s. That is why the ceiling is fixed at 8,192.
Model selection puts a licence gate ahead of accuracy: commercial use, redistribution, attribution obligations, acceptable-use terms and rights over derived output. Fail any of the five and the model is dropped regardless of how well it scores. It is going to be sold, so that comes first.
Status
17 Python files, roughly 2,000 lines, and a nine-chapter design document. UI strings are split into locale JSON, but only Korean is filled in, so multilingual support is structure and not yet a feature.