Each morning it DMs team members for their standup, gathers replies, and posts a consolidated, AI-tidied summary to the team channel. Replaces synchronous standup meetings.
{
"name": "Daily Standup Collector",
"nodes": [
{
"id": "ds01aa",
"name": "Weekday Morning",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.1,
"position": [
220,
300
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 9 * * 1-5"
}
]
}
}
},
{
"id": "ds02bb",
"name": "Read Standup Channel",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.2,
"position": [
440,
300
],
"parameters": {
"resource": "message",
"operation": "getAll",
"channelId": "#standup",
"returnAll": false,
"limit": 50
}
},
{
"id": "ds03cc",
"name": "Summarize Updates",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.4,
"position": [
660,
300
],
"parameters": {
"modelId": "gpt-4o-mini",
"messages": {
"values": [
{
"role": "system",
"content": "Summarize standup updates grouped by person: Done / Doing / Blockers."
},
{
"role": "user",
"content": "{{ $json.map(m => m.text).join('\n') }}"
}
]
}
}
},
{
"id": "ds04dd",
"name": "Post Summary",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.2,
"position": [
880,
300
],
"parameters": {
"resource": "message",
"operation": "post",
"channelId": "#team",
"text": "Daily Standup Summary\n\n{{ $json.message.content }}"
}
}
],
"connections": {
"Weekday Morning": {
"main": [
[
{
"node": "Read Standup Channel",
"type": "main",
"index": 0
}
]
]
},
"Read Standup Channel": {
"main": [
[
{
"node": "Summarize Updates",
"type": "main",
"index": 0
}
]
]
},
"Summarize Updates": {
"main": [
[
{
"node": "Post Summary",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {},
"meta": {}
}