{"id":"U1xUqDLvBYYSU6EU","meta":{"instanceId":"workflow-1f2bf9df","versionId":"1.0.0","createdAt":"2025-09-29T07:07:55.917218","updatedAt":"2025-09-29T07:07:55.917239","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"name":"Jira Retrospective","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,"notes":"This jira node performs automated tasks as part of the workflow."},{"id":"4cf0689c-2a1f-4a90-81f4-d3483c63fc96","name":"Jira Get All Comments","type":"n8n-nodes-base.jira","position":[280,60],"parameters":{"options":{},"issueKey":"YOUR_CREDENTIAL_HERE","resource":"issueComment","operation":"getAll"},"credentials":{"jiraSoftwareCloudApi":{"id":"AqnrDWxoCa8luriP","name":"Jira SW Cloud account"}},"typeVersion":1,"notes":"This jira node performs automated tasks as part of the workflow."},{"id":"26803742-1a94-4969-878b-2f757aced4f8","name":"AI Agent","type":"n8n-nodes-base.noOp","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### 📥 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### 📤 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–3 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### 📝 Guidelines\n\n1. **Be specific** – use real details, not vague statements\n2. **Stay relevant** – stick to the task and its broader context\n3. **Focus on learning** – prioritize transferable insights\n4. **Balance** – include both wins and challenges\n5. **Actionability** – make every suggestion doable\n6. **Concise yet clear** – 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,"notes":"This agent node performs automated tasks as part of the workflow."},{"id":"29e37c80-68a4-490a-8952-2dcf974ff8d3","name":"OpenAI Chat Model","type":"n8n-nodes-base.noOp","position":[920,280],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini"},"options":{}},"credentials":{"openAiApi":{"id":"f3KRKVUp9GyRxd6U","name":"OpenAi account"}},"typeVersion":1,"notes":"This lmChatOpenAi node performs automated tasks as part of the workflow."},{"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.4,"notes":"This set node performs automated tasks as part of the workflow."},{"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.1,"notes":"This summarize node performs automated tasks as part of the workflow."},{"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":"{{ $env.BASE_URL }}"},"credentials":{"googleDocsOAuth2Api":{"id":"Qe3TZG3K1euzTr3n","name":"Google Docs account"}},"typeVersion":2,"notes":"This googleDocs node performs automated tasks as part of the workflow."},{"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.1,"notes":"This jiraTrigger node performs automated tasks as part of the workflow."},{"id":"cc654cf3-c360-4704-a4b7-57447dbec8c6","name":"If Node","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.2,"notes":"This if node performs automated tasks as part of the workflow."},{"id":"b3ccd93e-a412-46f5-858d-ef8a2cd0efa9","name":"Simple Memory","type":"n8n-nodes-base.noOp","position":[1080,280],"parameters":{"sessionKey":"YOUR_CREDENTIAL_HERE","sessionIdType":"customKey"},"typeVersion":1,"notes":"This memoryBufferWindow node performs automated tasks as part of the workflow."},{"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,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"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,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"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,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"error-c6be5f0d","name":"Error Handler","type":"n8n-nodes-base.stopAndError","typeVersion":1,"position":[1000,400],"parameters":{"message":"Workflow execution error","options":{}}}],"active":false,"settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"versionId":"793ad505-261f-44ae-a197-a7c0e496dd69","connections":{"OpenAI Chat Model":{"main":[[]]},"Google Docs":{"main":[[]]}},"description":"Automated workflow: Jira Retrospective. This workflow integrates 11 different services: stickyNote, agent, summarize, set, stopAndError. It contains 15 nodes and follows best practices for error handling and security.","notes":"Excellent quality workflow: Jira Retrospective. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}