{
"id": "U1xUqDLvBYYSU6EU",
"meta": {
"instanceId": "8d54a4232b4618928ac9df0152e207cb858f5f9ffa6f3ba2d31d941bdcaec9d7",
"templateCredsSetupCompleted": true
},
"name": "Jira Retrospective",
"tags": [],
"nodes": [
{
"id": "b91c4727-8c63-4bf3-8101-6282aa6f592c",
"name": "Jira Get All Issues",
"type": "n8n-nodes-base.jira",
"position": [
60,
60
],
"parameters": {
"options": [],
"operation": "getAll"
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "AqnrDWxoCa8luriP",
"name": "Jira SW Cloud account"
}
},
"typeVersion": 1
},
{
"id": "4cf0689c-2a1f-4a90-81f4-d3483c63fc96",
"name": "Jira Get All Comments",
"type": "n8n-nodes-base.jira",
"position": [
280,
60
],
"parameters": {
"options": [],
"issueKey": "={{ $json.key }}",
"resource": "issueComment",
"operation": "getAll"
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "AqnrDWxoCa8luriP",
"name": "Jira SW Cloud account"
}
},
"typeVersion": 1
},
{
"id": "26803742-1a94-4969-878b-2f757aced4f8",
"name": "AI Agent",
"type": "@n8n\/n8n-nodes-langchain.agent",
"position": [
940,
60
],
"parameters": {
"text": "=comments = {{ $json.concatenated_Comment }}\ndescription = {{ $json.Description }}\ntitle = {{ $json.Title }}\nstatus = {{ $json.EpicStatus }}\nepic_name = {{ $json.EpicName }}\n",
"options": {
"systemMessage": "=You are an AI assistant specialized in creating comprehensive Agile retrospective documents. Your task is to analyze the provided information about a completed task and generate an insightful **Lessons Learned** report formatted in **clean Markdown**, optimized for seamless conversion to Google Docs.\n\n---\n\n### \ud83d\udce5 Input Format\nYou will receive structured input containing:\n* `epic_name`: The broader initiative or project category\n* `title`: The specific task or user story name\n* `description`: A concise explanation of what the task involved\n\n---\n\n### \ud83d\udce4 Output Instructions\nGenerate a detailed **Lessons Learned** report using the following **Markdown** structure:\n\n# LESSONS LEARNED REPORT\n\n**Epic:** {epic_name} \n**Date:** {{$today.format('yyyy-MM-dd')}}} \n**Task:** {title} \n**Description:** {description}\n\n## Key Findings\n\n* Clear, specific insight about a technical challenge encountered\n* Process-related discovery that impacted delivery\n* Team dynamics observation or workflow improvement identified\n* {Add more if needed}\n\n## Comments & Observations\n\n{Write 2\u20133 paragraphs with:}\n\n* Specific examples from task execution\n* Feedback or quotes from team members (if available)\n* Comparisons to prior approaches\n* Unexpected challenges or positive surprises\n\n## Actionable Recommendations\n\n1. Specific, implementable action to address a finding\n2. Concrete suggestion for process improvement\n3. Recommendation for knowledge sharing or team development\n4. {Add more as needed}\n\n## Metrics & Impact\n\n{When possible, include:}\n\n* Time saved or efficiency gained\n* Quality improvements\n* User\/customer feedback\n* Cost implications\n\n## Tags\n\n`#lessons-learned` `#{normalized_epic_name}` `#{relevant_technology}` `#{improvement_area}`\n\n---\n\n### \ud83d\udcdd Guidelines\n\n1. **Be specific** \u2013 use real details, not vague statements\n2. **Stay relevant** \u2013 stick to the task and its broader context\n3. **Focus on learning** \u2013 prioritize transferable insights\n4. **Balance** \u2013 include both wins and challenges\n5. **Actionability** \u2013 make every suggestion doable\n6. **Concise yet clear** \u2013 avoid fluff; write for impact\n7. **Formatting Guidelines for Google Docs compatibility:**\n * Use only asterisks (*) for bullet points, never hyphens (-)\n * Add two spaces after each line in lists for proper line breaks\n * Always leave a blank line before and after headings\n * Avoid using underscores (_) in text; use hyphens (-) instead\n * For emphasis, use consistently **bold** for important points and *italics* for supplementary information\n * When mentioning code or technical terms, use `single backticks`, never triple backticks\n * Use a pipe-separated format for tables as shown in the template\n * Keep paragraphs short (3-5 sentences) for better readability\n8. **Metadata Handling:** Include the epic name and task title exactly as provided in the input, without modification\n9. **Date Format:** Use YYYY-MM-DD format for the date for consistent sorting and display\n10. **Tags:** Keep tags lowercase, with hyphens instead of spaces, and relevant to the content\n\n---"
},
"promptType": "define"
},
"typeVersion": 1.899999999999999911182158029987476766109466552734375
},
{
"id": "29e37c80-68a4-490a-8952-2dcf974ff8d3",
"name": "OpenAI Chat Model",
"type": "@n8n\/n8n-nodes-langchain.lmChatOpenAi",
"position": [
920,
280
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": []
},
"credentials": {
"openAiApi": {
"id": "f3KRKVUp9GyRxd6U",
"name": "OpenAi account"
}
},
"typeVersion": 1.1999999999999999555910790149937383830547332763671875
},
{
"id": "da5e365b-cc69-4bdd-bd58-e5b2ecb17387",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
500,
60
],
"parameters": {
"options": [],
"assignments": {
"assignments": [
{
"id": "84fcaf69-4234-46be-9fa7-15026c60fed4",
"name": "EpicName",
"type": "string",
"value": "={{ $('Jira Get All Issues').item.json.fields.parent.fields.summary }}"
},
{
"id": "a7890a6b-1d0d-4486-908e-d3db571b89af",
"name": "EpicStatus",
"type": "string",
"value": "={{ $('Jira Get All Issues').item.json.fields.parent.fields.status.statusCategory.name }}"
},
{
"id": "c2c58d73-17a8-47b5-beb6-8295905cd8c2",
"name": "Title",
"type": "string",
"value": "={{ $('Jira Get All Issues').item.json.fields.summary }}"
},
{
"id": "baa10a35-ab3e-490f-b9ed-e661a6e9f4aa",
"name": "Description",
"type": "string",
"value": "={{ $('Jira Get All Issues').item.json.fields.description }}"
},
{
"id": "5da4ae54-07e6-41b8-bd51-054fe56beb5f",
"name": "Comment",
"type": "string",
"value": "={{ $json.body.content[0].content[0].text }}"
}
]
}
},
"typeVersion": 3.399999999999999911182158029987476766109466552734375
},
{
"id": "9718b066-e28f-41ea-97c2-559cbd894764",
"name": "Summarize",
"type": "n8n-nodes-base.summarize",
"position": [
720,
60
],
"parameters": {
"options": [],
"fieldsToSplitBy": "EpicName, EpicStatus, Title, Description",
"fieldsToSummarize": {
"values": [
{
"field": "Comment",
"separateBy": "\n",
"aggregation": "concatenate"
}
]
}
},
"typeVersion": 1.100000000000000088817841970012523233890533447265625
},
{
"id": "1d37efb7-09f1-43a7-a6c0-77d07b1f7a6b",
"name": "Google Docs",
"type": "n8n-nodes-base.googleDocs",
"position": [
1280,
60
],
"parameters": {
"simple": false,
"actionsUi": {
"actionFields": [
{
"text": "={{ $json.output }}",
"action": "insert"
}
]
},
"operation": "update",
"documentURL": "14X5gcowEprmL6ORyoo9tIrWWEB1HlhkixXUelesCLXs"
},
"credentials": {
"googleDocsOAuth2Api": {
"id": "Qe3TZG3K1euzTr3n",
"name": "Google Docs account"
}
},
"typeVersion": 2
},
{
"id": "bfab4af8-1f26-45b0-952b-1bd5f411d5f4",
"name": "Jira Trigger",
"type": "n8n-nodes-base.jiraTrigger",
"position": [
-380,
180
],
"webhookId": "3eb46690-d7b1-4a69-9a99-8adf8f843ed9",
"parameters": {
"events": [
"jira:issue_updated"
],
"additionalFields": {
"filter": ""
}
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "AqnrDWxoCa8luriP",
"name": "Jira SW Cloud account"
}
},
"typeVersion": 1.100000000000000088817841970012523233890533447265625
},
{
"id": "cc654cf3-c360-4704-a4b7-57447dbec8c6",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
-200,
180
],
"parameters": {
"options": [],
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a7028dd9-e262-4528-a20f-c80a26a28202",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.changelog.items[0].toString }}",
"rightValue": "Done"
}
]
}
},
"typeVersion": 2.20000000000000017763568394002504646778106689453125
},
{
"id": "b3ccd93e-a412-46f5-858d-ef8a2cd0efa9",
"name": "Simple Memory",
"type": "@n8n\/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1080,
280
],
"parameters": {
"sessionKey": "47",
"sessionIdType": "customKey"
},
"typeVersion": 1.3000000000000000444089209850062616169452667236328125
},
{
"id": "e8379684-93ca-4118-bab5-f52a444c50e1",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-420,
-120
],
"parameters": {
"width": 380,
"height": 580,
"content": "## Epic Done?\nThis Node is Triggered on any issue change in Jira. However it only triggers the automation when the Epic status is changed to **Done**"
},
"typeVersion": 1
},
{
"id": "cdddcd3f-f896-4dbf-89e2-09060111cbc6",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
-120
],
"parameters": {
"color": 5,
"width": 820,
"height": 580,
"content": "## Fetch issue Description and Comments\nOnce the Epic is Done, these nodes fetch issues and comments that fall under the Epic. For further processing the output is bundled."
},
"typeVersion": 1
},
{
"id": "c718a2e8-be7b-47b9-b7cc-9f4549a1060f",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
-120
],
"parameters": {
"color": 3,
"width": 540,
"height": 580,
"content": "## Summarize and send to Google Docs\nThe LLM is summarizing the description \/ comments and generates a report with a layout defined in the System Message. Finally the output is send to Google Docs."
},
"typeVersion": 1
}
],
"active": false,
"pinData": [],
"settings": {
"executionOrder": "v1"
},
"versionId": "793ad505-261f-44ae-a197-a7c0e496dd69",
"connections": {
"If": {
"main": [
[
{
"node": "Jira Get All Issues",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Google Docs",
"type": "main",
"index": 0
}
]
]
},
"Summarize": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Summarize",
"type": "main",
"index": 0
}
]
]
},
"Jira Trigger": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Jira Get All Issues": {
"main": [
[
{
"node": "Jira Get All Comments",
"type": "main",
"index": 0
}
]
]
},
"Jira Get All Comments": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
}
}
}