🦥 MCop: My AI Meeting Copilot That Lets Me Half-Listen
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady
What I Built
Most meetings have about four minutes that matter to you and fifty-six that don't.
I built MCop (Meeting Copilot), a local AI meeting assistant for people who would rather not listen to the other fifty-six.
MCop listens to the audio coming out of my laptop — whether it's a Chrome meeting, lecture, or webinar — and transcribes it live. It watches for my name, and when someone says it, the sidebar turns red, plays an alert, and shows the last 30 seconds of conversation so I can jump back in knowing what was just asked.
Every 90 seconds, it also generates a short summary containing:
- 📌 Key points
- 🧠 Decisions
- ✅ Action items
The sloth rule:
I stay half-attentive, and MCop taps me on the shoulder only when it matters.
Demo
The demo shows a long, boring meeting playing while I do something else. When my name comes up, MCop detects it, the sidebar goes red, and the recent conversation appears so I can immediately understand the context.
Code
The project is intentionally small and readable, with the core implementation kept to roughly 150 lines of Python.
How I Built It
Everything runs locally on my laptop:
- NVIDIA RTX 3050 Laptop GPU — 4 GB VRAM
- 16 GB RAM
- 12th-gen Intel Core i7
- Windows
The main design challenge was fitting the AI pipeline into 4 GB of VRAM, so I gave each component a different job — and a different chip.
| Job | Tool | Runs on |
|---|---|---|
| Capture meeting audio |
soundcard + Windows WASAPI loopback |
CPU |
| Speech to text |
faster-whisper (small) |
GPU |
| Name detection | Fuzzy string matching with difflib
|
CPU |
| Summaries & action items | Gemma 3 1B through Ollama | CPU |
| Sidebar UI | tkinter |
CPU |
Why these choices?
Name detection uses no LLM.
A simple fuzzy match runs on every transcript chunk. This is fast enough to continuously check for my name and can handle small transcription variations such as:
Selwyn
Selvin
Selwin
The LLM doesn't sit in the critical alert path, so detecting my name doesn't have to wait for an AI response.
Gemma runs on the CPU.
Gemma is only needed for higher-level understanding such as summaries, decisions, and action items. Running it on the CPU leaves the RTX 3050 available for Whisper.
Capture and transcription are separated.
Audio capture and transcription run independently so a slower transcription step doesn't block the audio stream.
The basic name-alert path is deliberately simple:
for w in re.findall(r"[a-zA-Z']+", text.lower()):
if any(difflib.SequenceMatcher(None, w, n).ratio() >= 0.8 for n in MY_NAMES):
ui_q.put(("alert", last_30_seconds))
The Numbers
I tested the live transcription pipeline on my RTX 3050.
For a 15-second captured audio sample:
- 🎙️ Audio captured: 15.0 seconds
- ⚡ Whisper inference time: 1.18 seconds
- 🚀 Real-time factor: approximately 12.8× faster than real time
- 🧠 Model:
faster-whisper small - 🎮 Device: RTX 3050 Laptop GPU
- 💾 VRAM: 4 GB
During a longer live test, MCop continuously processed 5-second audio chunks, with Whisper inference taking roughly 0.47–0.85 seconds per chunk.
That means the core transcription loop has enough headroom to keep up with real-time speech on my laptop.
Why Does Open Innovation Matter?
Meeting audio is some of the most sensitive data we create: salaries, client names, private discussions, unfinished ideas, and opinions.
A cloud transcription service means sending that conversation to someone else's server.
MCop takes a different approach.
🔒 Nothing needs to leave the laptop
Whisper runs locally and Gemma runs locally through Ollama. The meeting audio doesn't need to be uploaded to a cloud AI service just to understand what was said.
📴 Local inference
The core AI pipeline is designed around local inference rather than depending on a remote transcription API.
💰 No per-meeting API cost
There is no transcription API charge for every hour of conversation.
The cost of running MCop is essentially the electricity used by my own laptop.
🛠️ I control the pipeline
Because the models run locally, I can change the Whisper model, change the LLM, adjust the name-matching threshold, add aliases, or modify how the assistant behaves.
That's the part I like most about open AI: the model isn't a black box sitting behind someone else's API. I can build the pipeline around my own machine and my own use case.
For something as private as a meeting, that makes a meaningful difference.
The Lazy Payoff
MCop is built around a simple idea:
You shouldn't have to pay attention to everything just because something important might happen.
Instead of constantly monitoring a meeting for the moment someone says your name, MCop does the boring part.
I can:
Half-listen → Let MCop monitor → Get alerted → Read the context → Respond.
The goal isn't to replace attending a meeting.
It's to make being distracted during the boring parts less risky. 🦥
Honest Limitations
MCop is deliberately a small first version, so it has limitations:
- It currently hears the system audio, not my own microphone.
- A name split across two transcription chunks can be missed.
- A passing mention of my name currently triggers the same initial alert as a direct question.
- The current version doesn't yet perform full speaker identification.
- The summary/action-item layer is intentionally lightweight.
These are areas I'd improve in a larger version.
What's Next?
The next version could make the alerts much smarter by using the local LLM to distinguish:
"Selwyn will be presenting tomorrow."
from:
"Selwyn, can you present this tomorrow?"
Only the second one should interrupt me.
Other possible improvements include speaker identification, better cross-chunk name detection, smarter personal action-item extraction, and integrations with meeting platforms.
Prize Categories
- Best Use of Gemma — Gemma 3 1B runs locally through Ollama to generate meeting summaries, decisions, and action items.
MCop — Your meeting is talking. You don't have to listen to all of it. 🦥
Top comments (0)