Wrapping up meeting notes after a meeting eats time. A one-hour meeting takes another hour to summarize.
So I’d been using Notta — a meeting transcription SaaS — on a yearly subscription. Genuinely useful. But the renewal date was creeping up, and shelling out for another year felt wasteful…
“Why not have an AI sit in on the meeting and write the notes? Just throw it on my home server?”
That’s the thinking I started with. Bottom line up front: it has never worked cleanly even once. Here’s an honest breakdown of where it broke, case by case.
What I tried: a “meeting notes bot”
The picture I wanted:
1. Throw a meeting link at the bot
2. Bot joins the meeting on its own
3. After the meeting ends, notes show up in chat
Supported platforms: Google Meet, Microsoft Teams, Cisco Webex. (Zoom — code’s there, but I don’t use it personally so it’s untested.)
Failure case 1: can’t get into the meeting room
The first wall. Each platform has its own way of letting you in, and each one breaks differently.

Google Meet — outside-org users blocked
If a company uses Google Workspace, an external bot is just blocked. “Users outside the organization can’t join.” End of story.
The workaround would be to have the bot log in with my own Google account. Once you log in, a cookie (a small piece of info the browser uses to remember “I know who you are”) gets saved, and the bot uses that to enter from then on.
But hooking my company Google account up to a bot felt sketchy. Security-wise iffy, plus 2-step verification (that thing where you also have to enter a code from your phone) trips it up every time. So I just gave up on Google Meet. Even though most of my work meetings are on Meet.

Teams — CAPTCHA shows up
“Type the characters you see.” That CAPTCHA (the thing websites use to check “are you actually human?” with distorted text). It pops up 100% of the time the bot tries to join.
The fix: feed the CAPTCHA image to Gemini Vision (an AI that can read text out of images) and have it type the answer. If the first attempt fails, refresh and try again. Up to 3 tries, then give up.
I have this coded in, but Gemini occasionally reads the wrong letters. Not smooth.

Webex — everything’s inside a frame-within-a-frame
Webex runs the entire meeting UI inside an iframe (a structure where one full webpage is embedded inside another — think picture-in-picture). When the bot tries to find a “mute mic” button on the outer page, it’s not there. You have to dig into the inner frame.
Debugging this took 5 separate “snap a screenshot at this step” hooks in the code. (“Did we grab the inner frame?” → “Inner frame loaded too slow, retry” → “Still no inner frame? One more time…”). If the frame fails to load, fall back to plan B; if plan B also fails, plan C. I keep adding workaround code per case.
Common: 5-minute host approval timeout
Even after all of that, you land in the lobby. The host has to click “Admit” before you’re in.
The bot waits up to 5 minutes and then bails. If the host starts the meeting 5 minutes late? The bot’s already gone. Have to send it again.
What it looks like in practice: “Sent the bot, the meeting ended, and I got a chat saying it never made it in.”
Failure case 2: recording saved as a 0KB file
This is the one that happened most often.
The bot got into the meeting. The bot’s status said “Recording.” But the file I got back after the meeting? A zero-second empty file.
Cause: how the audio is captured. The bot drops a tiny “hook” into the audio stream (“hook” in the dev sense — code that latches onto data flowing past, like a fishing line) inside the meeting page to record. But meeting sites change their internal structure constantly, so the hook lands in the wrong spot and pulls in nothing. The bot reports “recording started!” while the actual file is 0 seconds long.
After eating this a few times I added a backup move (if plan A fails, automatically try plan B). It still hands me empty files now and then.
What it looks like in practice: “Hour-long meeting wraps up, chat pings me — file is 0KB. Thought it was recording. It was 0 from the start.”
Failure case 3: no place to type in attendee names
This problem sat unfixed for a long time.
The whole point of meeting notes is who said what. The bot does try to read speaker names off the screen automatically, but if someone has their camera off or the layout changes in a way the bot can’t see, the name doesn’t get caught.
So a human has to fill in names afterward. The old version had no step for that at all. Bot ends meeting → instantly generates notes → done. If a name was wrong, no recovery.
I recently added a flow where, after the meeting, the bot pauses and waits for me to chat back the attendee list (“attendees are Mr. Kim and Ms. Lee”), and only then generates the notes.
But I haven’t actually tested this fix. Case 2 above (the 0KB recording) keeps blowing up on Webex, and if there’s no recording there’s no notes to attach names to — so the new feature can’t be verified.
What it looks like in practice: “Fixed one thing, but something else is broken downstream so I can’t even test the new feature.”
Failure case 4: the one set of notes I did get back was mediocre
After clearing all the above, I’ve actually received meeting notes exactly once — from Webex. (Meet: gave up. Teams: CAPTCHA solved but the recording broke after.) That single set of notes had two problems.
I had Gemini Flash (Google’s free AI) generate the notes.
1. The writing quality is meh
Run the same transcript through Gemini Pro and the notes come out much more natural, with the key points actually surfaced. Flash is free, which is great, but the notes feel awkward and the gist gets blurred.
2. Markdown shows up raw in Telegram
Gemini outputs notes in Markdown (a convention where “two asterisks = bold”, “hash = heading”, etc. The format Notion or GitHub silently renders for you), but Telegram doesn’t render it. So I get this on screen:
## Decisions
- **Option A approved**
- ~~Option B~~ on hold
Hard to read. I asked for clean notes; what I get looks like raw scribbles with asterisks and hash marks.
What it looks like in practice: “Notes generated, but the writing’s awkward and Markdown symbols sit there raw. Not readable.”
So where am I now
Honestly, I have never had a meeting → automatic notes flow run end-to-end cleanly. One of the four failure modes above hits every single time.
What I’m currently working around / fixing:
- Joining meetings: I gave up on full automation entirely. Manual approval per meeting + secondary account.
- 0KB recordings: still patching the audio-capture fallback. Still drops files occasionally.
- Attendee-name step: built. Just need Webex recording to stabilize before I can verify it.
- Notes quality: trying Gemini Pro and weighing cost vs. quality. Planning to add Markdown → HTML conversion before sending to Telegram.
Wrapping up
Why write this if nothing’s actually finished? Two reasons.
- To give anyone trying to build the same thing a heads-up: “this is harder than it looks, plan for the time.”
- So that later, when it actually works, I can write a “back then it was all broken, now it looks like this” follow-up.
For now, I’m leaning on Notta to get through actual work, and pushing on the meeting bot in the background. Building it from scratch made me appreciate why Notta charges what it does — you have to clear every one of these cases before you reach that level.
I’ll write a follow-up once it’s actually usable. When all four cases pass reliably and I can finish a meeting and have the notes show up without touching anything.
Automation isn’t a one-shot achievement — it’s slow improvement, case by case, hitting walls and routing around them. I can’t code, but I keep asking AI “why doesn’t this work?” and inching forward step by step.
Next post will be on something a bit cleaner.