Local Meeting Copilot
What is this?
A privacy-first meeting assistant that runs entirely on your machine — no cloud APIs, no data leaving your network. Built on LangGraph and Ollama, it covers the full meeting lifecycle:
- Live transcription — manual entry or live microphone via Whisper with Silero-VAD filtering out silence
- Topic detection — LLM-driven sliding-window analysis that detects when meeting topics shift
- Proactive retrieval — automatically surfaces relevant documents as new topics emerge, no user action needed
- PII redaction — optional pre-storage scrubbing of emails, phone numbers, SSNs, and credit cards
- Post-meeting — cleaned transcript, meeting summary, minutes of meeting, follow-up email draft, and personal debrief
- Debug UI — collapsible panel showing LangGraph state, topic history, retrieval results, and graph visualization
Everything persists to SQLite + ChromaDB and exports as a Markdown bundle (transcript, MoM with decisions, Q&A log, intelligence summary).
Why I wanted to do it
When I’m in a meeting, I may come across something that’s unclear, confusing, or that I just want to have context for given the scope of the meeting. It’s distracting to everybody to interject with questions, to be searching google, or pre-meeting docs to find important information. I thought it would be valuable to have a process run in the background that keeps track of what’s being discussed, how it relates to the meeting’s over-arching context, and a little bit more background on what we’re discussing. The key constraint was privacy — meeting content is sensitive, and I didn’t want any of it hitting external APIs. Running the whole pipeline locally with Ollama solves that.
The LangGraph agent architecture made it possible to route different tasks (topic detection, doc search, web search, summaries, cleanup) through a single graph with streaming and retry policies baked in. The project is evolving, but it’s a case where a local LLM might be good enough, and it’s been fun to learn more about agent orchestration. I’ve also never used Streamlit, it seems like a solid use case for me. I typically focus on front-end work, but for this, it’s running in the background, I just want a tool that works well enough for my use.
If this continues to evolve, I think it might be worth packaging up for sale. I’m also considering adding a separate feature: c-suite babel fish. The real-time translation of word salad into real, meaningful sentences that an actual human being can follow.
What I’m learning
- Building multi-node LangGraph agents with streaming, retry policies, and per-session thread isolation
- Hybrid retrieval combining ChromaDB vectors, BM25, and recency decay for meeting-context Q&A
- LLM-driven topic detection using sliding-window transcript analysis and debounced proactive retrieval
- Voice activity detection with Silero-VAD to filter silence before Whisper transcription
- Real-time audio processing with faster-whisper and sounddevice for live transcription
- VADER sentiment analysis and NLP-based live tracking (commitments, contradictions, jargon)
- Designing a Streamlit UI with a three-phase flow (setup → live → summary) and a debug panel for LangGraph state inspection