Recordy is a menu bar app that records, transcribes, and summarizes meetings entirely on-device. No audio leaves the machine. No cloud service, no account required.
Built for professionals with a hard constraint: lawyers, therapists, financial advisors, and HR teams who need accurate meeting records but cannot route audio through a cloud service for security compliance. Most alternatives either send audio to external servers or stay local at the cost of usability and setup overhead. I designed Recordy around the opposite: it captures both sides of a call, transcribes locally, and exports a transcript with no configuration required.
I approached speaker separation by leaning on what macOS already provides. The microphone captures the user; system audio captures the far end of the call. I routed each stream through its own transcription pass, producing a naturally labeled transcript. [You] and [Them] are determined by audio source, which means no configuration and no ambiguity.
I designed the panel to stay open during a call, not disappear into the background. It gives continuous visual confirmation that recording is running, and stays accessible whenever the user needs to interact with it mid-call.
Each session exports a WAV audio file for playback reference and a Markdown file as the written record, including speaker labels, timestamps, and a summary. The audio is there if you need to reference something with accuracy; the transcript is used for quick search reference, or even for AI summaries.
When a room goes quiet, the transcription model can invent words that were never spoken, filling the silence with text that sounds real. A single volume cutoff could not catch this everywhere, since every room is different. So I added a series of filters that each catch a different kind of false output.
Issues rarely had a single cause. A problem in transcription often traced back to how audio was being routed, or how the engine was initialized. Live testing during real calls was the only way to surface what static testing couldn't. Fixing one thing consistently exposed something else. The process forced a much deeper understanding of how each piece depended on the others than I had anticipated going in.