"What did we decide about the auth flow 3 months ago?" My client asked during a call. I typed the question into Claude, and 8 seconds later had the exact answer: with the date, who said it, and the reasoning behind the decision. No searching through notes. No scrolling through Slack. Just the answer.
The Problem
Meeting context disappears. You have a great discussion, make decisions, assign action items, and two weeks later, nobody remembers the details. I was a copy-paste monkey between Otter.ai and Claude, manually feeding transcripts into conversations to get answers about past meetings.
Decisions made in meetings vanish within days
Action items fall through the cracks
Context gets lost between calls: same discussions repeat
Manual transcript searching is slow and unreliable
What I Tried First
Before building this system, I tried the obvious solutions:
Better note-taking: inconsistent. Some meetings got detailed notes, others got nothing. Depends entirely on discipline in the moment.
Otter.ai / Fireflies: good transcription, but your data is locked in their system. For a Swiss healthcare client, that's a non-starter. Data sovereignty matters.
Manual summaries in Notion: time-consuming, always behind, and searching across months of notes is painful.
The Architecture That Works
After months of iteration, I landed on a five-component pipeline. Each piece does one thing well.
Recording
A macOS menu bar app. One click starts recording both system audio and microphone. No browser extensions, no meeting bot joining your call. Works with Zoom, Teams, Google Meet, phone calls: anything that makes sound.
Transcription
Whisper running locally on my machine. Speaker diarization identifies who said what. No audio ever leaves the computer. The entire transcription pipeline runs on-device, critical for clients in regulated industries.
Analysis
LLM processing via Gemini Flash through n8n. The transcript gets broken down into: summary, action items, decisions made, open questions, sentiment analysis, and topic tags. Structured output, every time.
Storage
PostgreSQL with pgvector for semantic search. Both raw transcript chunks and structured analysis are stored with embeddings. This means you can search by meaning, not just keywords: "discussions about authentication" finds results even if nobody used that exact word.
Retrieval
An MCP server connecting directly to Claude. Ask a question in natural language, get an answer with source attribution: which meeting, which speaker, what date. No extra UI needed, it lives right where I already work.
The Privacy Piece
This was non-negotiable, especially for Swiss healthcare clients:
No audio leaves the computer: Whisper runs 100% locally
Only structured text output goes to PostgreSQL on controlled infrastructure
No third-party transcription services in the loop
Full control over data retention and deletion
When a client asks where their meeting data lives, the answer is simple: on infrastructure we control, processed on-device.
What Changed
The day-to-day difference is significant:
Meeting prep takes 2 minutes: ask "what happened in my last 3 calls with Client X?" and get a complete briefing
Follow-ups don't slip: every action item is captured and searchable
Full context in every call: I can reference specific decisions from months ago with confidence
Onboarding new team members is faster: they can query the entire meeting history for a project
Rough Edges (Honest Assessment)
This system works well, but it's not polished software. Here's what's still rough:
UI is bare-bones: it's a menu bar app and a CLI. No fancy dashboard.
Speaker diarization is about 80% accurate: good enough for search, not perfect for attribution.
n8n needs nudges on long transcripts: anything over 90 minutes sometimes requires manual re-processing of chunks.
Initial setup takes a weekend: Whisper, PostgreSQL, n8n, MCP server all need configuration.
Build Your Own
You don't need to replicate my exact setup. Start simple and expand. Here are the components:
Local transcription: noScribe (free, open source) or Whisper directly
Storage: PostgreSQL + pgvector (free, handles semantic search)
Processing: n8n (self-hosted, visual workflow builder)
Retrieval: MCP server (connect to Claude or any LLM client)
Start with just local transcription. Even without the full pipeline, having searchable transcripts of every meeting changes how you work.
How we work · Work · Insights