agentic-workflows-portfolio

Meeting Notetaker

Automatically joins your video calls, turns every meeting into a clean summary with action items and highlights, and drops the tasks straight into your to-do list.

hero

The Problem

I was using a popular free AI notetaker, but it capped me at five 1-hour meetings per month. Paid plans were expensive for what I actually needed. Worse:

So meetings kept generating friction: the notes existed, but the follow-through didn’t.

The Solution

Meeting Notetaker runs in the background and handles the whole lifecycle:

  1. Joining. Either automatically from a calendar event, or on demand: paste a meeting link into Telegram and send /join.
  2. Recording. A bot joins the call, records, and transcribes the whole thing.
  3. Processing. When the meeting ends, the system generates a structured summary: what happened, who committed to what, key decisions, highlights.
  4. Routing. Action items that belong to me land directly in my personal task inbox. The full summary lands in my personal knowledge base, searchable alongside everything else I’ve captured.
  5. Browsing. A local dashboard gives me a fast way to flip through any past meeting, transcript, action items, highlights, metadata, without digging through files.

Screenshots

The dashboard index: every processed meeting, one click to the detail view.

Cross-meeting action items, grouped by owner. This is the view I actually check every morning.

Per-meeting tabs: transcript, action items, highlights, meta.

Result

Key Decisions

Under the Hood

Stack: Claude Code (orchestration), Recall.ai (meeting bot), Deepgram nova-3 multilingual (live transcription), Groq Whisper-large-v3 (local recovery transcription), Telegram Bot API (command surface), Open Brain MCP (personal knowledge base + GTD), Next.js (dashboard), Python (deterministic tools), Google Calendar (auto-join), Supabase (queue + state), Claude Sonnet 4 via OpenRouter (summarization).

Bot dispatch is handled by the Telegram router edge function (Supabase) which tells Recall to use Deepgram nova-3 with language: "multi" so Spanish, English, and code-switched meetings all transcribe cleanly. Processing runs locally via drain_notetaker_jobs.py (launchd, every 60s): polls Recall API for finished bots, fetches transcripts, summarizes via Claude Sonnet 4 (~$0.10-0.30/meeting), writes output files, downloads the mixed-mono audio for local archive, and pushes to Open Brain + GTD. If a transcript ever needs rebuilding, tools/retranscribe_meeting.py re-runs the saved audio through Groq Whisper-large-v3 and remaps onto the original speaker turns. All credentials live in .env, never checked in, never shown.

How to Demo It

  1. Open Telegram. Paste a Google Meet link and send /join <url>.
  2. Show the bot dialing into the call.
  3. End the call. Within a minute or two, the system processes the transcript.
  4. Switch to the dashboard. The new meeting is at the top of the index.
  5. Open it. Show the tabs: transcript, action items (grouped by owner), highlights, meta.
  6. Switch to the cross-meeting action items page. Point out that tasks assigned to me are already queued in my to-do inbox.

Limitations & Setup

Demo Pitch

If you sit through a lot of calls and you’re constantly losing track of what you committed to, this records every meeting, turns it into a clean summary in whatever language the meeting was actually held in, and drops your action items straight into your task list, without you doing anything. It pays for itself in about a week of meetings.

Changelog

2026-05-20: Multilingual transcription fix and stricter summaries