Automated workflow · n8n + Claude

Meeting Notes & Action Items

The moment a video call ends, a notetaker bot hands its transcript straight to this workflow — every action item comes out automatically: task, owner, due date, priority, and a drafted follow-up message, before anyone has to comb back through the transcript by hand.

2
high priority
2
medium priority
2
low priority

How each item gets classified

Claude reads the transcript once and, for every action item it finds, makes two calls: how urgent is this, and does it already have an owner? The second call decides which message gets drafted next.

Low
Medium
High
Low
No deadline pressure, explicitly "no rush" or "eventually" language, low business impact.
Medium
A soft deadline or moderate stakes — worth tracking, not worth an alarm.
High
A hard deadline, explicit urgency ("immediately," "blocking," "time-sensitive"), or real customer/revenue impact.
Owner named or clearly implied
Claude drafts a short, friendly Slack/email DM addressed to that person by name — a reminder of the task and due date, in a casual internal tone.
No specific person named
Claude drafts an internal triage alert to the meeting organizer instead, flagging that the item has no owner yet and needs to be assigned.

How a transcript moves through it

One straight path from intake to extraction, then the array of action items splits into individual items that fan out to two places at once: the archive, and the response.

In production, a notetaker bot calls the webhook automatically the moment a real meeting ends — no one pastes anything in. A second webhook exists purely so this page can demo the pipeline without a live call to trigger it.

01a · trigger (automated)
Notetaker Bot Webhook
POST /webhook/meeting-transcript-ready — a Fireflies/Otter/Read.ai-style bot calls this the moment it finishes transcribing a live call, with the transcript plus the participant list and host.
01b · trigger (demo only)
Meeting Notes Webhook
POST /webhook/meeting-notes — lets this page trigger the same pipeline manually, for demo purposes, without a real bot involved.
Merge Triggers
Combines both trigger paths into one stream, so everything downstream runs identically regardless of which one fired.
02 · normalize
Normalize Input
Cleans the payload; defaults the meeting date to today if none was supplied, and carries participants/host through if the automated trigger provided them.
Extract Action Items
One Claude call reads the whole transcript, pulls out every action item, and drafts each one's follow-up message — nothing runs twice.
03 · fan out
Split Out Action Items
Turns the one array of items Claude returned into separate items, one per action item, each carrying the meeting title along.
Flatten Action Item
Pulls each item's fields up to the top level so downstream nodes can reference them plainly.
for every item, in parallel
Save Action Item
Archived to the meeting_action_items Data Table, one row per action item.
Collect Action Items
Re-combines every item back into a single array.
Respond With Action Items
Sends the full list — tasks, owners, due dates, drafted messages — back in one response.
automated trigger only
Check Has Participants
If the payload carried a participant list (i.e. the real notetaker-bot trigger, not this page's manual demo path), continue — otherwise stop here.
Build Meeting Recap
One plain-text recap: meeting title, every action item with its owner and due date, deduplicated against the per-owner DMs already sent.
Send Recap Email
Emails that recap to every participant plus the host in one message — the shared summary, on top of (not instead of) each person's individual DM.

Six action items, extracted live

The meetings and transcripts below are made-up test data, not real conversations. The extracted tasks, owners, due dates, and drafted messages are genuine, unscripted output — each one is what Claude actually produced from running that transcript through the live workflow.

Update the 2.4 release changelog
Eng Team Sync · Aug 24
Medium Owner: Sarah
Source quote
"Sarah, can you update the changelog for the 2.4 release before it ships Friday? — Sure, I'll knock that out Thursday."
Due: Aug 27, 2026
Priority: Medium
Automated message · Slack/email DM to Sarah
DM → Sarahauto-drafted
Hey Sarah! 😊 Just a friendly reminder from today's sync — you're on the hook for updating the 2.4 release changelog. You said you'd get it done Thursday (Aug 27), before the Friday ship date. Let me know if you need anything from the team!
Send the security questionnaire to Northwind
Northwind Retail Renewal Call · Aug 25
High Owner: Dana
Source quote
"...finance wants a security questionnaire filled out first. — Got it, I'll send that over today."
Due: Aug 25, 2026 (today)
Priority: High
Automated message · Slack/email DM to Dana
DM → Danaauto-drafted
Hey Dana! 👋 Quick reminder — you committed to sending the security questionnaire to Northwind Retail today (Aug 25) during the renewal call. Finance needs it before they can greenlight the renewal. Lmk if you need anything to get it out the door!
Review the office lease renewal terms
Weekly Ops Sync · Aug 26
Low Owner: Jordan
Source quote
"Jordan, you were going to review the terms... — Yeah, I'll get through it, no rush on my end, maybe sometime next month."
Due: not specified
Priority: Low
Automated message · Slack/email DM to Jordan
DM → Jordanauto-drafted
Hey Jordan! 👋 Just a quick reminder that you're on the hook for reviewing the office lease renewal terms. Alex flagged it as low priority with no hard deadline, but wanted to make sure it stays on your radar. Let us know if you need anything to get started!
Walk Northwind's analyst through the reporting dashboard
Northwind Retail Renewal Call · Aug 25
Medium No owner
Source quote
"can someone from your support team walk us through the new reporting dashboard? — I don't have anyone assigned to that yet."
Due: not specified
Priority: Medium
Automated message · triage alert
Triage alert → meeting organizerauto-drafted
⚠️ Triage Alert — Unassigned Action Item (Northwind Retail Renewal Call, 2026-08-25) Hi [Meeting Organizer], during today's Northwind Retail renewal call, the client requested a support team walkthrough of the new reporting dashboard for their analyst. Dana noted: "I don't have anyone assigned to that yet." This task currently has no owner and needs to be assigned. Please designate a support team member to handle this walkthrough as soon as possible given the Sept 30 renewal deadline. Thanks!
Draft the Q3 all-hands agenda
Weekly Ops Sync · Aug 26
Low No owner
Source quote
"can we get someone to draft the Q3 all-hands agenda? Nothing pressing, just need it eventually, nobody's picked it up yet."
Due: not specified
Priority: Low
Automated message · triage alert
Triage alert → meeting organizerauto-drafted
🚨 Triage Alert for Alex (Meeting Organizer): The action item to draft the Q3 all-hands agenda currently has no assigned owner. Direct quote from the meeting: "can we get someone to draft the Q3 all-hands agenda? Nothing pressing, just need it eventually, nobody's picked it up yet." No deadline was set. Could you assign this to someone so it doesn't fall through the cracks? Thanks!
Write the checkout-outage postmortem
Checkout Outage Postmortem · Aug 27
High No owner
Source quote
"...we still need someone to write the postmortem doc and post it in #incidents by tomorrow... the postmortem still needs an owner, can't let that slip."
Due: Aug 28, 2026 (tomorrow)
Priority: High
Automated message · triage alert
Triage alert → meeting organizerauto-drafted
🚨 Triage alert for Sam (meeting organizer): The postmortem doc for yesterday's checkout outage still has no assigned owner. The discussion flagged it as time-sensitive — "the postmortem still needs an owner, can't let that slip" — with a due date of tomorrow (2026-08-28) and customers actively asking. Please assign an owner ASAP so this doesn't fall through the cracks.

Every item gets a message, not just the assigned ones

The same Claude call that extracts and prioritizes each action item also drafts what happens next: a Slack/email DM when someone's already on the hook, or a triage alert to the organizer when nobody is. Nothing goes unrouted — even the two orphaned action items above got a real drafted alert instead of silently sitting in a transcript no one reopens.

What is meeting_action_items? It's a Data Table — a lightweight database built directly into this n8n workspace, not a separate external system. It lives inside this n8n project, viewable in n8n's own Data Tables screen and reachable by any other workflow in the same project. It isn't exposed to the public internet on its own — the only way anything outside n8n sees this data is through what a workflow deliberately sends back out, like the drafted messages above.
meeting task owner priority routed to due date
Eng Team Sync Update the 2.4 release changelog Sarah medium Slack/email DM 2026-08-27
Northwind Renewal Call Send the security questionnaire Dana high Slack/email DM 2026-08-25
Weekly Ops Sync Review office lease renewal terms Jordan low Slack/email DM
Northwind Renewal Call Walk analyst through reporting dashboard medium Triage alert
Weekly Ops Sync Draft the Q3 all-hands agenda low Triage alert
Checkout Outage Postmortem Write the postmortem doc high Triage alert 2026-08-28

When a notetaker bot triggers it, one recap goes to everyone

This is the real, automated path — the same Q3 Roadmap Sync transcript above, delivered through the Notetaker Bot Webhook with a participant list and host attached, exactly as a live meeting would arrive. Every owner still gets their individual DM or triage alert exactly as shown above; this recap is the one additional message the automated trigger adds on top, sent once per meeting.

Recap → sam@example.com, jordan@example.com, alex@example.comauto-sent
Subject: Meeting recap: Q3 Roadmap Sync (3 action items) Hi all, Here's a recap of "Q3 Roadmap Sync": - Complete the pricing page redesign (Sam, due 2026-08-28) - Follow up with the vendor about the contract renewal (unassigned) - Finalize the Q3 board deck (Alex, due 2026-09-02) Everyone's individually assigned follow-ups have already gone out separately. This note is just the shared summary for the record. — sent automatically after this meeting's transcript was processed

Going live: what changes outside this demo

The automated trigger and recap email below are already built into this workflow, not just described here — the only thing missing for a real deployment is pointing them at a real bot and real credentials instead of test data.

already built, shown above
Notetaker Bot Webhook → recap email
A Fireflies/Otter/Read.ai-style bot posts to this workflow's second webhook the moment it finishes transcribing a call; the same extraction pipeline runs, and a recap email goes out to every participant plus the host automatically. In production this is a live bot's webhook and a real Gmail/Slack credential swapped in — the workflow logic itself doesn't change.
still to wire up
Tasks created in a task tool
Each action item becomes a real ticket in Asana, Linear, or Jira — assigned, due-dated, and linked back to the source meeting — not just a row in this demo's archive.
human in the loop
Real Slack/email DMs + reviewed triage alerts
Owner DMs go out directly via Slack or email once trust is established. Triage alerts for unassigned items land in a channel or inbox for a lead to review and assign — not an auto-send.

Why not just use Zoom's or Otter's built-in AI summary?

Zoom AI Companion, Otter, Fireflies, and Google Meet's Gemini notes all already generate a meeting summary with a bullet list of "action items," and at a company where that's already turned on and good enough, this workflow isn't a replacement for it.

Where a custom pipeline like this earns its place: native summaries give you a flat bullet list, not owner-routed messages or due dates resolved against the actual meeting date. They don't distinguish an assigned task from an orphaned one — both just show up as bullets — and they don't write anywhere queryable, so nothing surfaces the ones nobody claimed. This build is the shape you reach for when you want that triage logic, that message drafting, and a structured record you can query later, tuned to how your team actually works.