Ingest meeting webhooks, process transcript, classify the meeting, generate structured notes with AI Agent, file the transcript to Google Drive, write rich pages to Notion, and create assigned tasks. Includes optional polling path if webhooks aren’t available.
Teams that record calls and want instant, structured notes in Notion, with transcripts archived in Google Drive and action items auto-created—without manual copy/paste.
Manual note taking is slow and inconsistent. This flow listens for a meeting webhook, flattens the transcript, classifies the call, runs a tailored notetaker prompt, and writes a clean Notion page plus tasks—hands-free and standardized.
| # | Node | Purpose |
|---|---|---|
| 1 | New Meeting Webhook | Receives meeting payload with transcript segments and metadata. (Webhook Node) |
| 2 | Flatten Transcript (Code) | Joins segments to speaker: text lines and extracts title, meetingId, url. |
| 3 | Set Title + Transcript + URL | Normalizes fields for downstream nodes. |
| 4 | Categorize Meeting | Uses OpenAI to return `{ "meetingType": "DiscoveryCall" |
| 5 | Switch | Routes to the correct notetaker branch based on meetingType. |
| 6a | Discovery Call Notetaker | Anthropic model + structured parser to extract sales-specific fields. (Anthropic Docs) |
| 6b | Misc Meeting Notetaker | General meeting notetaker with strict JSON schema. |
| 7a | Add Discovery Meeting Notes to Notion | Writes a formatted page with overview, goals, pains, risks, and action items. |
| 7b | Add Meeting Notes to Notion | Writes a simpler page for non-discovery meetings. |
| 8 | Set Notion Page ID | Captures created page ID and the action-items array. |
| 9 | Create File (Google Drive) | Saves raw transcript text and returns the file ID. (Drive API) |
| 10 | Link Transcript in Notion | Updates the Notion page with a viewable Drive link. |
| 11 | Split out Tasks | Expands the action-items array to one item per execution. |
| 12 | If Assigned to Me | Filters tasks where assignee = "Matty Reed". |
| 13 | Add Tasks (Notion) | Creates tasks in your Notion Tasks DB, links to the meeting page. (Notion API) |
| * | (Optional polling path) | If webhooks aren’t available: Schedule Trigger → Get Meetings from Notion → List Meetings (HTTP Request) → Get New Meetings (Code) → Get Transcript (HTTP) → Transcript Ready? → Wait → Flatten. Disabled by default. |
Import the JSON flow into n8n
Confirm nodes marked disabled stay off unless you need the polling path.
Docs: n8n
Credentials
Map your databases and properties
Replace the placeholder Notion database IDs with your Meetings and Tasks DB IDs. Verify property names like Meeting Name|title, Summary|rich_text, Category|multi_select, Assignee|people, etc., match your schema.
Drive folder
Update the folderId in Create File to your preferred folder. Ensure link-sharing fits your privacy policy.
Webhook
Expose New Meeting Webhook via your n8n instance. Send a sample payload from your meeting recorder to verify the calendar_invitees, transcript, title, and url fields match the code node expectations.
Test
Run the flow with a recorded meeting. Confirm:
assignee = "Matty Reed".