MeetMemo is an AI meeting assistant — it joins your Zoom, Meet, or Teams call, records, transcribes, diarises, and produces templated summaries you can chat with afterwards. There’s a lot of product space here already (Fireflies, Read.ai, Otter), so the thing that matters isn’t the category but the engineering underneath. I built the whole stack — bot fleet, orchestration, transcription pipeline, memory layer, dashboards, DevOps.
The bot fleet
A meeting bot sounds simple until you look at the edge cases. The bot is a headless browser in a container that navigates to a meeting URL, handles the join flow (waiting rooms, host approvals, permission dialogs, auto-denied joins, spontaneous host-left-the-call states), starts recording screen + audio, and keeps track of who’s speaking by continuously reading the DOM of the active participant tile. Each of those steps has a dozen ways to fail, and they fail differently across Zoom, Meet, and Teams.
The orchestrator
Bots run on a pool of nodes. I built an orchestrator that distinguishes between two node types: perma-nodes (always on, statically scaled to baseline capacity) and temp-nodes (spawn above a threshold, drain and terminate when demand falls). Temp-node spawn time is optimised to about 55 seconds from cold, with an additional pre-warm buffer so calls never queue behind a cold start. The scheduler load-balances joins across the pool and handles bot crashes mid-meeting by re-spawning against a frozen participant state.
Transcription and diarisation
I use Whisper for timestamped transcription but build diarisation on top by correlating the audio timestamps with the bot’s live observation of the meeting UI — which tile is highlighted, when speakers change, who’s muted. This gives diarisation accuracy well above what audio-only speaker-clustering can produce, especially on 4+ person calls. All languages Whisper supports are supported.
Memory and Spaces
The output layer is more interesting than the recording layer. Every meeting is indexed into the user’s Memory — a retrievable, cross-meeting knowledge store. You can chat against a single meeting, against a Space (a user-created group of meetings — a project, a client, a deal), or against your whole Memory. Behind the scenes it’s a RAG pipeline with template-aware summarisation (action items, highlights, decisions, topics), chart generation from numeric content mentioned in calls, and a custom prompt layer that maintains speaker attribution through the retrieval step so the answers cite who said what.
Ops
Calendar sync, org-level team management, subscription billing, usage analytics, webhook integrations. Fully deployed under a partner company’s umbrella with live customers.