Takes a meeting transcript via webhook, extracts decisions and action items with GPT, and creates a task per action item in your project tool with owner and due date. No more dropped follow-ups.
{
"name": "Meeting Notes to Action Items",
"nodes": [
{
"id": "mn01aa",
"name": "Transcript Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
200,
300
],
"parameters": {
"httpMethod": "POST",
"path": "meeting-notes",
"responseMode": "onReceived"
}
},
{
"id": "mn02bb",
"name": "Extract Actions",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.4,
"position": [
420,
300
],
"parameters": {
"modelId": "gpt-4o",
"messages": {
"values": [
{
"role": "system",
"content": "Extract action items. Return JSON: { items: [{ task, owner, due }] }."
},
{
"role": "user",
"content": "{{ $json.body.transcript }}"
}
]
},
"jsonOutput": true
}
},
{
"id": "mn03cc",
"name": "Split Items",
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
640,
300
],
"parameters": {
"fieldToSplitOut": "message.content.items"
}
},
{
"id": "mn04dd",
"name": "Create Task",
"type": "n8n-nodes-base.todoist",
"typeVersion": 2.1,
"position": [
860,
300
],
"parameters": {
"resource": "task",
"operation": "create",
"content": "={{ $json['message.content.items'].task }}",
"options": {
"dueString": "={{ $json['message.content.items'].due }}"
}
}
}
],
"connections": {
"Transcript Webhook": {
"main": [
[
{
"node": "Extract Actions",
"type": "main",
"index": 0
}
]
]
},
"Extract Actions": {
"main": [
[
{
"node": "Split Items",
"type": "main",
"index": 0
}
]
]
},
"Split Items": {
"main": [
[
{
"node": "Create Task",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {},
"meta": {}
}