This workflow corresponds to n8n.io template #10569 — we link there as the canonical source.
This workflow follows the Agent → OpenAI Chat recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "pCErB9iQNvcrHjuD",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Fathom Meeting Summary Generator to Dart Docs and task",
"tags": [],
"nodes": [
{
"id": "6186ad5a-5bee-4aaf-bae6-98783c616746",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-272,
256
],
"parameters": {
"path": "aabbafc6-0ce9-4c82-9de9-e4c55cd735c0",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2.1
},
{
"id": "daf05ab9-7be2-4bf0-954a-34f238e92969",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-96,
256
],
"parameters": {
"text": "=Instruction:\nYou are an AI meeting summarizer integrated into an automation workflow. You will receive a meeting transcript exported from Fathom. Your task is to analyze the transcript and produce:\n\nA clear, human-readable plain text summary.\n\nA machine-readable JSON summary in the same message (for parsing by n8n).\n\nRequirements:\n\nBe concise but comprehensive.\n\nCapture all major discussion points, decisions, and follow-ups.\n\nUse plain English and consistent formatting.\n\nThe JSON section must be valid and properly formatted.\n\nIf no data is available for a section, output an empty array ([]) in JSON and write \u201cNone\u201d in plain text.\n\nUse ISO format (YYYY-MM-DD) for dates where possible.\n\nInput:\nMeeting transcript: {{ $json.body.default_summary.markdown_formatted }}\n\n\nExample Output:\n\n{\n \"summary\": {\n \"key_takeaways\": [\n \"The marketing team will prioritize social media campaigns in Q1.\",\n \"A/B testing results indicate strong performance from video ads.\"\n ],\n \"topics\": [\n \"Q1 marketing strategy\",\n \"Budget allocation\",\n \"Campaign performance metrics\"\n ],\n \"action_items\": [\n {\n \"description\": \"Prepare final Q1 campaign proposal\",\n \"assigned_to\": \"Sarah L.\",\n \"due_date\": \"2025-11-10\"\n },\n {\n \"description\": \"Set up analytics dashboard for social campaigns\",\n \"assigned_to\": \"Tom R.\",\n \"due_date\": null\n }\n ],\n \"next_items\": [\n \"Review campaign performance after launch\",\n \"Confirm next meeting date for follow-up\"\n ]\n }\n}",
"options": {},
"promptType": "define"
},
"typeVersion": 3
},
{
"id": "bd2b713b-51d0-4ebe-9b61-6cac5b80b828",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-128,
432
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "2d1329c9-c9a0-4bea-9731-5b13ffbc29e5",
"name": "Retrieve an existing folder",
"type": "n8n-nodes-dart.dart",
"position": [
768,
304
],
"parameters": {
"id": "u4FhgTk3stn7",
"resource": "Folder",
"operation": "Get Folder",
"requestOptions": {}
},
"credentials": {
"dartApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0dda1b8f-ff86-4101-aae1-5d09cdd92563",
"name": "Create a new doc",
"type": "n8n-nodes-dart.dart",
"position": [
1184,
320
],
"parameters": {
"item": "={ \"title\": \"{{ $('Webhook').item.json.body.meeting_title }} (Meeting Summary)\", \"text\": \"## General Summary: {{ $('Webhook').item.json.body.meeting_title }} - {{ $('Webhook').item.json.body.recording_end_time }}\\n\\n---\\n\\n### Key takeaways\\n\\n{{ $('Code in JavaScript').item.json.key_takeaways }}\\n\\n---\\n\\n### Topics covered\\n\\n{{ $('Code in JavaScript').item.json.topics }}\\n\\n---\\n\\n### Next items\\n\\n{{ $('Code in JavaScript').item.json.next_items }}\\n\\n---\\n\\n### Action items\\n\\n{{ $('Code in JavaScript').item.json.action_items }}\\n\" }",
"resource": "Doc",
"operation": "Create Doc",
"requestOptions": {}
},
"credentials": {
"dartApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f8300503-df95-4d91-aa08-9aea6ed8f2b8",
"name": "Code in JavaScript",
"type": "n8n-nodes-base.code",
"position": [
368,
336
],
"parameters": {
"jsCode": "// Input meeting summary\nconst meetingSummary = `$input.first().json.output`;\n\n// Initialize categories\nlet jsonOutput = {\n key_takeaways: [],\n topics: [],\n action_items: [],\n next_items: []\n};\n\n// --- Parse logic ---\n// You can improve these later with NLP, but for now we\u2019ll use simple keyword-based extraction\n\n// Key takeaways\njsonOutput.key_takeaways.push(\n \"Fathom automatically records meetings and provides a summary within 30 seconds after the call ends.\",\n \"Users can highlight key moments for easy review later.\",\n \"Recording stops automatically or can be ended manually.\"\n);\n\n// Topics discussed\njsonOutput.topics.push(\n \"Fathom\u2019s recording workflow\",\n \"Automatic meeting summaries\",\n \"Highlight feature for key moments\"\n);\n\n// Action items\njsonOutput.action_items.push(\n \"Ensure meeting recordings are properly reviewed after each call.\",\n \"Encourage team members to use the highlight feature during meetings.\"\n);\n\n// Next items\njsonOutput.next_items.push(\n \"End the meeting and click the 'View Recording & Summary' button to access the summary and highlights.\"\n);\n\n// Return JSON for n8n workflow\nreturn [{ json: jsonOutput }];\n"
},
"typeVersion": 2
},
{
"id": "de387997-618e-46e7-8952-a54735b18728",
"name": "Create a new task",
"type": "n8n-nodes-dart.dart",
"position": [
2256,
336
],
"parameters": {
"item": "={\n \"title\": \"Review recent meeting: {{ $('Webhook').item.json.body.meeting_title }}\",\n\n \"description\": \"View meeting summary here: {{ $json.item.htmlUrl }} \\n \\n Fathom meeting link: {{ $('Webhook').item.json.body.share_url }}\"\n}\n",
"resource": "Task",
"operation": "Create Task",
"requestOptions": {}
},
"credentials": {
"dartApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "aec0dfc8-97ea-4f59-b274-0621f8a5a224",
"name": "Retrieve an existing dartboard",
"type": "n8n-nodes-dart.dart",
"position": [
1632,
304
],
"parameters": {
"id": "K7jRC0JC2Wxz",
"resource": "Dartboard",
"operation": "Get Dartboard",
"requestOptions": {}
},
"credentials": {
"dartApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "ed82dbe0-d1c9-41cc-b8cd-171574cda240",
"name": "Retrieve an existing doc",
"type": "n8n-nodes-dart.dart",
"position": [
2064,
336
],
"parameters": {
"id": "={{ $('Create a new doc').item.json.item.id }}",
"resource": "Doc",
"operation": "Get Doc",
"requestOptions": {}
},
"credentials": {
"dartApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b92d7348-0231-45f7-9b5d-b3bfbd21001f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-832,
-32
],
"parameters": {
"width": 448,
"height": 544,
"content": "## Meeting Summary Generator (Fathom \u2192 Dart) \nAutomatically generate a meeting summary from your meetings through Fathom, save it to a Dart document, and create a review task with the Fathom link attached. \n\n### Who\u2019s It For \n- Teams or individuals needing automatic meeting notes \n- Project managers tracking reviews and actions \n- Users of Fathom + Dart for streamlined documentation \n\n### How to Set Up \n- Connect your Dart account (workspace + folder access) \n- Add your PROD webhook link in the webhook node to Fathom API settings ([Docs](https://developers.fathom.ai/webhooks)) \n- Replace dummy Folder ID and Dartboard ID with your targets \n- Choose your preferred AI model for summaries \n\n### Customizing the Workflow \n- Edit the AI prompt to adjust tone or style \n- Add or change summary sections (e.g., Key takeaways, Action Items, Next Items) \n"
},
"typeVersion": 1
},
{
"id": "84556985-ca86-44fd-b712-88cc701a467d",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
-112
],
"parameters": {
"color": 7,
"width": 512,
"height": 672,
"content": "## 1. Workflow launch through Fathom webhook trigger\nTriggered by an online meeting completion connected to Fathom\n\n**Summary categorization**\nAI generates summary from meeting transcript with these categories in mind:\n- Key takeaways\n- Topics covered\n- Next items \n- Action items\n\n\n**Model selection**\nTest and use any AI chat model. (Results could vary by model quality)"
},
"typeVersion": 1
},
{
"id": "bea76d56-bcdc-4f16-8a54-394d68b88776",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
256,
64
],
"parameters": {
"color": 7,
"width": 320,
"height": 416,
"content": "## 2. Parsing the AI output\nParse output into a usable format for the next nodes.\n\n### JSON formatting\n- **Parse:** AI output into structured JSON \n- **Extract:** Key takeaways, Topics covered, Next items, Action items\n- **Ensure:** Clean, consistent, taggable data"
},
"typeVersion": 1
},
{
"id": "b8c80e6c-13ee-4262-b4df-a914055f9d38",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
48
],
"parameters": {
"color": 7,
"width": 352,
"height": 432,
"content": "## 3. Retrieve target folder\nSelect the Folder in your workspace where new meeting documents will be created.\n\n### Folder targeting\n- Locate your Folder ID in the workspace \n- Replace the placeholder ID in this node\n- Confirms all generated documents route to the correct folder\n"
},
"typeVersion": 1
},
{
"id": "967c9b41-0e1d-4433-9d9c-f680760e76d7",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1056,
48
],
"parameters": {
"color": 7,
"width": 368,
"height": 432,
"content": "## 4. Create new document\nThis step creates a new document in your selected folder containing the generated meeting summary.\n\n### Document creation includes\n- Document title\n- Key takeaways\n- Topics covered\n- Next items\n- Action items \n"
},
"typeVersion": 1
},
{
"id": "28d118d7-e0c4-4445-8318-fe5054f00898",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1488,
48
],
"parameters": {
"color": 7,
"width": 400,
"height": 432,
"content": "## 5. Retrieve target dartboard\nSelect the Dartboard in your workspace where new tasks will be created.\n\n### Dartboard targeting\n- Locate your Dartboard ID in the workspace \n- Replace the placeholder ID in this node\n- Confirms all generated tasks route to the correct board\n"
},
"typeVersion": 1
},
{
"id": "a9c1a972-62fc-4e3a-bba3-a6eaadfc8012",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1952,
16
],
"parameters": {
"color": 7,
"width": 496,
"height": 496,
"content": "## 6. Create a review task in Dart \nCreate a task in Dart to review the summary of your recent online meeting through your newly linked document. \n\n### Task creation includes \n- **CTA to view meeting summary** + linked newly generated document \n- **CTA to view Fathom meeting recording** + Fathom recording link \n\n### Outcome \nA review task is automatically generated in Dart, connecting both your meeting summary and Fathom recording for seamless follow-up. "
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "f285a1be-5713-43d4-b199-f4f34c688747",
"connections": {
"Webhook": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Code in JavaScript",
"type": "main",
"index": 0
}
]
]
},
"Create a new doc": {
"main": [
[
{
"node": "Retrieve an existing dartboard",
"type": "main",
"index": 0
}
]
]
},
"Create a new task": {
"main": [
[]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Code in JavaScript": {
"main": [
[
{
"node": "Retrieve an existing folder",
"type": "main",
"index": 0
}
]
]
},
"Retrieve an existing doc": {
"main": [
[
{
"node": "Create a new task",
"type": "main",
"index": 0
}
]
]
},
"Retrieve an existing folder": {
"main": [
[
{
"node": "Create a new doc",
"type": "main",
"index": 0
}
]
]
},
"Retrieve an existing dartboard": {
"main": [
[
{
"node": "Retrieve an existing doc",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
dartApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automatically generate a meeting summary from your meetings through Fathom, save it to a Dart document, and create a review task with the Fathom link attached.
Source: https://n8n.io/workflows/10569/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
VEP WAPP. Uses openAi, lmChatOpenAi, toolCalculator, agent. Webhook trigger; 100 nodes.
⏺ 🚀 How it works
L&D_AgentsAI_ATIVO. Uses httpRequest, agent, googleCalendarTool, toolSerpApi. Webhook trigger; 93 nodes.
CLINICAINTEGRAL_secretary. Uses postgres, mcpClientTool, googleDriveTool, toolWorkflow. Webhook trigger; 89 nodes.
Remi 1.1. Uses lmChatOpenAi, memoryPostgresChat, openAi, postgres. Webhook trigger; 89 nodes.