{"workflow":{"id":13158,"name":"Monitor programme performance and governance with OpenAI and Slack","views":41,"recentViews":0,"totalViews":41,"createdAt":"2026-02-01T15:57:57.683Z","description":"## How It Works\nThis workflow automates programme performance monitoring and governance oversight through intelligent AI-driven analysis and multi-tool orchestration. Designed for programme managers, portfolio management offices, and executive leadership teams, it solves the critical challenge of tracking programme health while coordinating interventions across escalation, exception handling, and briefing preparation workflows. The system operates on scheduled intervals, fetching programme data and processing it through dual AI agents for performance monitoring and governance assessment. It orchestrates parallel specialized tools for exception escalation, briefing preparation, and governance reporting, each with dedicated AI models and output parsers. The workflow intelligently routes findings based on severity classification, delivering critical alerts through multiple channels including email and Slack while generating formatted standard reports. By maintaining comprehensive documentation and coordinating multi-faceted governance responses, it ensures programme stakeholders receive timely, actionable intelligence while creating complete audit trails for portfolio reviews.\n\n## Setup Steps\n1. Configure Schedule Trigger with programme review frequency\n2. Connect Workflow Configuration node with programme parameters\n3. Set up Fetch Programme Data node with project management API credentials\n4. Configure Programme Monitoring Agent with OpenAI API credentials\n5. Set up monitoring processing \n6. Connect Governance Agent with OpenAI API credentials for orchestration\n7. Configure parallel specialized tools  with respective OpenAI models\n8. Set up tool-specific parsers \n\n## Prerequisites\nOpenAI API credentials for multiple AI agents and specialized tools\n## Use Cases\nPMOs monitoring multi-project portfolios, consulting firms tracking client engagement health\n## Customization\nAdjust monitoring frequency for programme urgency levels\n## Benefits\nReduces programme review overhead by 75%, eliminates manual status compilation","workflow":{"id":"MFqOj_JwKXSMi9VgcSF4q","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"AI-Powered Programme Monitoring and Governance Reporting Automation","tags":[],"nodes":[{"id":"d88b3568-0b03-4065-981c-3b42e753a01a","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[0,192],"parameters":{"rule":{"interval":[{"triggerAtHour":9}]}},"typeVersion":1.3},{"id":"fa42be9f-a8b5-4f64-b5cb-6152969deb57","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[224,192],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"programmeApiUrl","type":"string","value":"<__PLACEHOLDER_VALUE__Programme Management System API URL__>"},{"id":"id-2","name":"criticalAlertEmail","type":"string","value":"<__PLACEHOLDER_VALUE__Email address for critical alerts__>"},{"id":"id-3","name":"standardReportEmail","type":"string","value":"<__PLACEHOLDER_VALUE__Email address for standard reports__>"},{"id":"id-4","name":"slackChannelId","type":"string","value":"<__PLACEHOLDER_VALUE__Slack channel ID for critical alerts__>"},{"id":"id-5","name":"budgetThresholdPercent","type":"number","value":85},{"id":"id-6","name":"milestoneDelayDays","type":"number","value":7}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"920a4d44-5fcf-448a-b2e0-08da9128d079","name":"Fetch Programme Data","type":"n8n-nodes-base.httpRequest","position":[448,192],"parameters":{"url":"={{ $('Workflow Configuration').first().json.programmeApiUrl }}","options":{},"authentication":"predefinedCredentialType"},"typeVersion":4.3},{"id":"4148a13c-9825-41a8-93d2-6ac2f0f08fcc","name":"Programme Monitoring Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[672,192],"parameters":{"text":"=Programme Data: {{ JSON.stringify($json) }}","options":{"systemMessage":"You are a Programme Monitoring Agent specialized in validating government programme performance.\n\nYour task is to:\n1. Analyze programme data including budget allocation, expenditure, milestones, and performance indicators\n2. Validate budget compliance: compare actual expenditure vs allocated budget, identify variances\n3. Assess milestone progress: check completion status, identify delays, calculate days behind schedule\n4. Evaluate performance indicators (KPIs): compare actual vs target values, identify underperformance\n5. Calculate risk scores for budget overruns, milestone delays, and KPI underperformance\n6. Identify critical issues requiring immediate attention\n7. Return structured validation results with detailed findings\n\nYou MUST NOT alter or modify programme execution - only analyze and report.\n\nConsider:\n- Budget thresholds from workflow configuration\n- Milestone delay tolerances\n- Historical performance trends\n- Dependencies between milestones\n- Impact of delays on downstream activities"},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"9c9314f5-35de-4b52-8a3f-73c665dea57f","name":"OpenAI Model - Monitoring","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[624,416],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"93bfa246-65b0-4539-bd6a-ebb815a30ec9","name":"Monitoring Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[808,416],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"programmeName\": {\n      \"type\": \"string\",\n      \"description\": \"Name of the programme\"\n    },\n    \"budgetStatus\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"allocated\": {\"type\": \"number\"},\n        \"spent\": {\"type\": \"number\"},\n        \"remaining\": {\"type\": \"number\"},\n        \"percentageUsed\": {\"type\": \"number\"},\n        \"variance\": {\"type\": \"number\"},\n        \"riskLevel\": {\"type\": \"string\", \"enum\": [\"Low\", \"Medium\", \"High\", \"Critical\"]}\n      }\n    },\n    \"milestoneStatus\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"milestoneName\": {\"type\": \"string\"},\n          \"status\": {\"type\": \"string\", \"enum\": [\"On Track\", \"At Risk\", \"Delayed\", \"Completed\"]},\n          \"daysDelayed\": {\"type\": \"number\"},\n          \"impact\": {\"type\": \"string\"}\n        }\n      }\n    },\n    \"performanceIndicators\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"kpiName\": {\"type\": \"string\"},\n          \"target\": {\"type\": \"number\"},\n          \"actual\": {\"type\": \"number\"},\n          \"variance\": {\"type\": \"number\"},\n          \"status\": {\"type\": \"string\"}\n        }\n      }\n    },\n    \"overallRiskScore\": {\n      \"type\": \"number\",\n      \"description\": \"Overall risk score from 0-100\"\n    },\n    \"criticalIssues\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"}\n    },\n    \"recommendations\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"}\n    }\n  }\n}"},"typeVersion":1.3},{"id":"99d3bd27-47c0-458c-af7f-c8ed7a143bfe","name":"Exception Escalation Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1152,416],"parameters":{"text":"={{ $fromAI(\"validationData\", \"Programme validation data from monitoring agent\", \"json\") }}","options":{"systemMessage":"You are an Exception Escalation Specialist for government programmes.\n\nYour task is to:\n1. Analyze programme validation data to identify exceptions requiring escalation\n2. Classify exceptions by severity: Critical, High, Medium, Low\n3. Determine escalation path: Ministerial, Parliamentary, Executive, Operational\n4. Assess urgency and required response timeframe\n5. Identify stakeholders who need to be notified\n6. Provide escalation recommendations with clear rationale\n7. Return structured exception analysis\n\nCriteria for escalation:\n- Critical: Budget overrun >20%, milestone delay >30 days, KPI variance >40%\n- High: Budget overrun 10-20%, milestone delay 15-30 days, KPI variance 25-40%\n- Medium: Budget overrun 5-10%, milestone delay 7-15 days, KPI variance 10-25%\n- Low: Budget overrun <5%, milestone delay <7 days, KPI variance <10%\n\nYou MUST NOT recommend changes to programme execution - only escalation actions."},"hasOutputParser":true,"toolDescription":"Analyzes programme validation data to identify exceptions requiring escalation and determines appropriate escalation paths"},"typeVersion":3},{"id":"6fcdef58-f1ea-4396-bc07-e9bdaeaa301b","name":"OpenAI Model - Exception Tool","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1168,624],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"f9b8b578-7ab0-46c3-a1ae-686d02176726","name":"Exception Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1312,624],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"exceptions\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"exceptionType\": {\"type\": \"string\"},\n          \"severity\": {\"type\": \"string\", \"enum\": [\"Critical\", \"High\", \"Medium\", \"Low\"]},\n          \"description\": {\"type\": \"string\"},\n          \"escalationPath\": {\"type\": \"string\", \"enum\": [\"Ministerial\", \"Parliamentary\", \"Executive\", \"Operational\"]},\n          \"urgency\": {\"type\": \"string\"},\n          \"stakeholders\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n          \"recommendedAction\": {\"type\": \"string\"}\n        }\n      }\n    },\n    \"requiresImmediateAction\": {\"type\": \"boolean\"}\n  }\n}"},"typeVersion":1.3},{"id":"f35d336e-2422-4990-9476-19a179af908a","name":"Briefing Preparation Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1440,416],"parameters":{"text":"={{ $fromAI(\"programmeData\", \"Programme validation and exception data for briefing preparation\", \"json\") }}","options":{"systemMessage":"You are a Parliamentary and Ministerial Briefing Specialist.\n\nYour task is to:\n1. Prepare comprehensive briefings for parliamentary questions and ministerial meetings\n2. Summarize programme status in clear, non-technical language\n3. Highlight key achievements, challenges, and risks\n4. Provide context and background information\n5. Prepare Q&A sections for anticipated questions\n6. Include relevant statistics and performance metrics\n7. Ensure briefings are politically neutral and factual\n8. Return structured briefing documents\n\nBriefing structure:\n- Executive Summary (2-3 paragraphs)\n- Programme Overview\n- Current Status and Progress\n- Key Issues and Risks\n- Financial Position\n- Milestone Status\n- Performance Against Targets\n- Anticipated Questions and Suggested Responses\n- Recommendations (observation only, no execution changes)\n\nTone: Professional, clear, concise, politically neutral"},"hasOutputParser":true,"toolDescription":"Prepares parliamentary and ministerial briefings based on programme monitoring data and exception analysis"},"typeVersion":3},{"id":"5db6bf17-c29b-443b-8362-196b04f5f132","name":"OpenAI Model - Briefing Tool","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1440,624],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"0d631823-71d3-4c86-b288-52515a541e01","name":"Briefing Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1584,624],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"briefingType\": {\"type\": \"string\", \"enum\": [\"Parliamentary\", \"Ministerial\", \"Executive\"]},\n    \"executiveSummary\": {\"type\": \"string\"},\n    \"programmeOverview\": {\"type\": \"string\"},\n    \"currentStatus\": {\"type\": \"string\"},\n    \"keyIssues\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n    \"financialPosition\": {\"type\": \"string\"},\n    \"milestoneProgress\": {\"type\": \"string\"},\n    \"performanceSummary\": {\"type\": \"string\"},\n    \"anticipatedQuestions\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"question\": {\"type\": \"string\"},\n          \"suggestedResponse\": {\"type\": \"string\"}\n        }\n      }\n    },\n    \"recommendations\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n  }\n}"},"typeVersion":1.3},{"id":"7ef1f38c-6c30-47c0-ad78-36c6c4371b28","name":"Governance Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1304,192],"parameters":{"text":"=Programme Validation Results: {{ JSON.stringify($json.output) }}","options":{"systemMessage":"You are a Governance Agent coordinating programme reporting, exception escalation, and briefing preparation.\n\nYour task is to:\n1. Review programme validation results from the Programme Monitoring Agent\n2. Determine if exceptions require escalation by calling the Exception Escalation Tool\n3. Prepare briefings for parliamentary or ministerial use by calling the Briefing Preparation Tool\n4. Coordinate reporting activities without altering programme execution\n5. Assess overall governance risk and compliance status\n6. Return structured governance report with severity classification\n\nWorkflow:\n1. Analyze validation results to identify issues\n2. If critical issues exist, call Exception Escalation Tool with validation data\n3. Call Briefing Preparation Tool to prepare appropriate briefings\n4. Synthesize all information into governance report\n5. Classify severity: Critical (requires immediate ministerial attention), High (requires executive review), Medium (standard reporting), Low (routine monitoring)\n\nYou MUST NOT recommend changes to programme execution - only reporting and escalation actions."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"46aa047f-b81b-4d4c-bef1-383e0e525b1a","name":"OpenAI Model - Governance","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1024,416],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"5cbee1bc-8720-41fa-96d1-50ee9b3d4a08","name":"Governance Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1728,416],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"governanceReport\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"reportDate\": {\"type\": \"string\"},\n        \"programmeName\": {\"type\": \"string\"},\n        \"overallStatus\": {\"type\": \"string\"},\n        \"severity\": {\"type\": \"string\", \"enum\": [\"Critical\", \"High\", \"Medium\", \"Low\"]},\n        \"validationSummary\": {\"type\": \"string\"},\n        \"exceptionsSummary\": {\"type\": \"string\"},\n        \"briefingPrepared\": {\"type\": \"boolean\"},\n        \"briefingType\": {\"type\": \"string\"},\n        \"actionRequired\": {\"type\": \"string\"},\n        \"stakeholdersToNotify\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n        \"nextSteps\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}}\n      }\n    }\n  }\n}"},"typeVersion":1.3},{"id":"9fd2bdd3-5499-41b1-af32-c041a90f6137","name":"Route by Severity","type":"n8n-nodes-base.switch","position":[1952,352],"parameters":{"rules":{"values":[{"outputKey":"Critical","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.governanceReport.severity }}","rightValue":"Critical"}]},"renameOutput":true},{"outputKey":"Standard","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.governanceReport.severity }}","rightValue":"High"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra","renameFallbackOutput":"Default"}},"typeVersion":3.4},{"id":"f2252c0b-5ec6-46f1-89af-126be028cb27","name":"Email - Critical Alert","type":"n8n-nodes-base.emailSend","position":[2176,368],"webhookId":"b57d0145-f9ed-47fc-8e32-83d63e541ae0","parameters":{"html":"=<html>\n<body>\n<h2 style=\"color: #d32f2f;\">CRITICAL PROGRAMME ALERT</h2>\n<p><strong>Programme:</strong> {{ $json.output.governanceReport.programmeName }}</p>\n<p><strong>Severity:</strong> {{ $json.output.governanceReport.severity }}</p>\n<p><strong>Report Date:</strong> {{ $json.output.governanceReport.reportDate }}</p>\n<p><strong>Overall Status:</strong> {{ $json.output.governanceReport.overallStatus }}</p>\n\n<h3>Validation Summary</h3>\n<p>{{ $json.output.governanceReport.validationSummary }}</p>\n\n<h3>Exceptions Summary</h3>\n<p>{{ $json.output.governanceReport.exceptionsSummary }}</p>\n\n<h3>Action Required</h3>\n<p>{{ $json.output.governanceReport.actionRequired }}</p>\n\n<h3>Stakeholders to Notify</h3>\n<ul>\n{{ $json.output.governanceReport.stakeholdersToNotify.map(s => `<li>${s}</li>`).join(\"\") }}\n</ul>\n\n<h3>Next Steps</h3>\n<ul>\n{{ $json.output.governanceReport.nextSteps.map(step => `<li>${step}</li>`).join(\"\") }}\n</ul>\n\n<p style=\"color: #666; font-size: 12px; margin-top: 30px;\">This is an automated alert from the Programme Monitoring and Governance System.</p>\n</body>\n</html>","options":{},"subject":"=CRITICAL ALERT: {{ $json.output.governanceReport.programmeName }} - {{ $json.output.governanceReport.severity }} Severity","toEmail":"={{ $('Workflow Configuration').first().json.criticalAlertEmail }}","fromEmail":"<__PLACEHOLDER_VALUE__Sender email address__>"},"typeVersion":2.1},{"id":"642cd396-829d-47ec-b223-91a45a033cac","name":"Slack - Critical Alert","type":"n8n-nodes-base.slack","position":[2176,560],"webhookId":"7b816d34-5a8e-4b14-a2f1-9ade7d15dd1c","parameters":{"text":"=🚨 *CRITICAL PROGRAMME ALERT*\n\n*Programme:* {{ $json.output.governanceReport.programmeName }}\n*Severity:* {{ $json.output.governanceReport.severity }}\n*Status:* {{ $json.output.governanceReport.overallStatus }}\n\n*Validation Summary:*\n{{ $json.output.governanceReport.validationSummary }}\n\n*Exceptions:*\n{{ $json.output.governanceReport.exceptionsSummary }}\n\n*Action Required:*\n{{ $json.output.governanceReport.actionRequired }}\n\n*Stakeholders to Notify:*\n{{ $json.output.governanceReport.stakeholdersToNotify.join(\", \") }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $('Workflow Configuration').first().json.slackChannelId }}"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"d34b1ayEBbvZm2lT","name":"Slack account"}},"typeVersion":2.4},{"id":"972c5f2d-700d-4aa1-94f8-fb543ac74819","name":"Email - Standard Report","type":"n8n-nodes-base.emailSend","position":[2400,176],"webhookId":"b45f3c8c-0807-4cbb-8934-4097244ff3d9","parameters":{"html":"=<html>\n<body>\n<h2>Programme Governance Report</h2>\n<p><strong>Programme:</strong> {{ $json.output.governanceReport.programmeName }}</p>\n<p><strong>Report Date:</strong> {{ $json.reportDate }}</p>\n<p><strong>Overall Status:</strong> {{ $json.output.governanceReport.overallStatus }}</p>\n<p><strong>Severity:</strong> {{ $json.output.governanceReport.severity }}</p>\n\n<h3>Validation Summary</h3>\n<p>{{ $json.output.governanceReport.validationSummary }}</p>\n\n<h3>Exceptions Summary</h3>\n<p>{{ $json.output.governanceReport.exceptionsSummary }}</p>\n\n<h3>Briefing Status</h3>\n<p><strong>Briefing Prepared:</strong> {{ $json.output.governanceReport.briefingPrepared ? \"Yes\" : \"No\" }}</p>\n<p><strong>Briefing Type:</strong> {{ $json.output.governanceReport.briefingType }}</p>\n\n<h3>Action Required</h3>\n<p>{{ $json.output.governanceReport.actionRequired }}</p>\n\n<h3>Next Steps</h3>\n<ul>\n{{ $json.output.governanceReport.nextSteps.map(step => `<li>${step}</li>`).join(\"\") }}\n</ul>\n\n<p style=\"color: #666; font-size: 12px; margin-top: 30px;\">This is an automated report from the Programme Monitoring and Governance System.</p>\n</body>\n</html>","options":{},"subject":"={{ $json.reportTitle }}","toEmail":"={{ $('Workflow Configuration').first().json.standardReportEmail }}","fromEmail":"<__PLACEHOLDER_VALUE__Sender email address__>"},"typeVersion":2.1},{"id":"1d532205-1a9d-4b0e-b985-50d86570d9bd","name":"Format Report Data","type":"n8n-nodes-base.set","position":[2176,176],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"reportTitle","type":"string","value":"=Programme Governance Report - {{ $json.output.governanceReport.programmeName }}"},{"id":"id-2","name":"reportDate","type":"string","value":"={{ $now.toFormat(\"yyyy-MM-dd HH:mm\") }}"},{"id":"id-3","name":"formattedReport","type":"string","value":"=Programme: {{ $json.output.governanceReport.programmeName }}\nStatus: {{ $json.output.governanceReport.overallStatus }}\nSeverity: {{ $json.output.governanceReport.severity }}\n\nValidation Summary:\n{{ $json.output.governanceReport.validationSummary }}\n\nExceptions Summary:\n{{ $json.output.governanceReport.exceptionsSummary }}\n\nAction Required:\n{{ $json.output.governanceReport.actionRequired }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"2f5f0ef0-364f-4526-9272-a7f088011caa","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1872,32],"parameters":{"color":7,"width":720,"height":832,"content":"## Severity-Based Multi-Channel Delivery\n**What:** Routes governance outputs through severity classification to appropriate delivery channels with formatted reports and critical alerts\n**Why:** Ensures urgent issues receive immediate executive attention while routine updates follow standard reporting protocols without alert fatigue"},"typeVersion":1},{"id":"893436e4-3d37-4626-aa14-38721bfc7771","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[944,64],"parameters":{"color":7,"width":912,"height":784,"content":"## Multi-Tool Governance Orchestration\n**What:** Coordinates governance agent with parallel specialized tools for exception escalation, briefing preparation, and governance reporting\n**Why:** Ensures comprehensive response by deploying specialized AI models for distinct governance functions requiring different analytical approaches"},"typeVersion":1},{"id":"feee74a5-36eb-4423-850b-7066c3b4acf0","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-32,64],"parameters":{"color":7,"width":960,"height":720,"content":"## AI-Driven Performance Assessment\n**What:** Processes programme data through monitoring agent with specialized output parsing for performance trend analysis\n**Why:** Leverages AI to detect early warning indicators and performance degradation patterns that manual reviews miss"},"typeVersion":1},{"id":"124ce598-6f2b-4cb4-862a-4c5179bbb08c","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1200,-352],"parameters":{"color":6,"width":416,"height":352,"content":"## Prerequisites\nOpenAI API credentials for multiple AI agents and specialized tools\n## Use Cases\nPMOs monitoring multi-project portfolios, consulting firms tracking client engagement health\n## Customization\nAdjust monitoring frequency for programme urgency levels\n## Benefits\nReduces programme review overhead by 75%, eliminates manual status compilation"},"typeVersion":1},{"id":"0cf62e3d-060b-4d08-9b0b-ecb9a00fe123","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[656,-304],"parameters":{"width":496,"height":304,"content":"## Setup Steps\n1. Configure Schedule Trigger with programme review frequency\n2. Connect Workflow Configuration node with programme parameters\n3. Set up Fetch Programme Data node with project management API credentials\n4. Configure Programme Monitoring Agent with OpenAI API credentials\n5. Set up monitoring processing \n6. Connect Governance Agent with OpenAI API credentials for orchestration\n7. Configure parallel specialized tools  with respective OpenAI models\n8. Set up tool-specific parsers "},"typeVersion":1},{"id":"76f79d62-111a-4e70-994e-9956fe895032","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-32,-320],"parameters":{"width":640,"height":352,"content":"## How It Works\nThis workflow automates programme performance monitoring and governance oversight through intelligent AI-driven analysis and multi-tool orchestration. Designed for programme managers, portfolio management offices, and executive leadership teams, it solves the critical challenge of tracking programme health while coordinating interventions across escalation, exception handling, and briefing preparation workflows. The system operates on scheduled intervals, fetching programme data and processing it through dual AI agents for performance monitoring and governance assessment. It orchestrates parallel specialized tools for exception escalation, briefing preparation, and governance reporting, each with dedicated AI models and output parsers. The workflow intelligently routes findings based on severity classification, delivering critical alerts through multiple channels including email and Slack while generating formatted standard reports. By maintaining comprehensive documentation and coordinating multi-faceted governance responses, it ensures programme stakeholders receive timely, actionable intelligence while creating complete audit trails for portfolio reviews."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"ff2a9026-6064-44c4-b28b-67a7a1d4a12e","connections":{"Governance Agent":{"main":[[{"node":"Route by Severity","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Route by Severity":{"main":[[{"node":"Email - Critical Alert","type":"main","index":0},{"node":"Slack - Critical Alert","type":"main","index":0}],[{"node":"Format Report Data","type":"main","index":0}]]},"Format Report Data":{"main":[[{"node":"Email - Standard Report","type":"main","index":0}]]},"Fetch Programme Data":{"main":[[{"node":"Programme Monitoring Agent","type":"main","index":0}]]},"Briefing Output Parser":{"ai_outputParser":[[{"node":"Briefing Preparation Tool","type":"ai_outputParser","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Fetch Programme Data","type":"main","index":0}]]},"Exception Output Parser":{"ai_outputParser":[[{"node":"Exception Escalation Tool","type":"ai_outputParser","index":0}]]},"Governance Output Parser":{"ai_outputParser":[[{"node":"Governance Agent","type":"ai_outputParser","index":0}]]},"Monitoring Output Parser":{"ai_outputParser":[[{"node":"Programme Monitoring Agent","type":"ai_outputParser","index":0}]]},"Briefing Preparation Tool":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"Exception Escalation Tool":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"OpenAI Model - Governance":{"ai_languageModel":[[{"node":"Governance Agent","type":"ai_languageModel","index":0}]]},"OpenAI Model - Monitoring":{"ai_languageModel":[[{"node":"Programme Monitoring Agent","type":"ai_languageModel","index":0}]]},"Programme Monitoring Agent":{"main":[[{"node":"Governance Agent","type":"main","index":0}]]},"OpenAI Model - Briefing Tool":{"ai_languageModel":[[{"node":"Briefing Preparation Tool","type":"ai_languageModel","index":0}]]},"OpenAI Model - Exception Tool":{"ai_languageModel":[[{"node":"Exception Escalation Tool","type":"ai_languageModel","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":26,"nodeTypes":{"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.emailSend":{"count":2},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.httpRequest":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":2},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agentTool":{"count":2},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":4},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":4}}},"status":"published","readyToDemo":null,"user":{"name":"Cheng Siong Chin","username":"cschin","bio":"Dr. Cheng Siong CHIN is an n8n workflow creator specializing in AI-powered automation, agent orchestration, and intelligent system integrations. He designs and builds end-to-end workflows that combine LLMs, APIs, and data pipelines to streamline complex processes and deliver production-ready automation solutions. Contact me to discuss custom AI workflows and agent architectures.\n","verified":true,"links":["https://gravatar.com/mysticluminary9fa255f7f5"],"avatar":"https://gravatar.com/avatar/54544f98e839bb9dd9a764ad1e6823eeddb6db5138d201e42f291a7b0a73303f?r=pg&d=retro&size=200"},"nodes":[{"id":11,"icon":"fa:envelope","name":"n8n-nodes-base.emailSend","codex":{"data":{"alias":["SMTP","email","human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/sendemail/"}]},"categories":["Communication","HITL","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Send Email","color":"#00bb88"},"iconData":{"icon":"envelope","type":"icon"},"displayName":"Send Email","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":9,"name":"Core Nodes"},{"id":28,"name":"HITL"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1310,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agentTool","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent Tool","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent Tool","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":46,"name":"Project Management"},{"id":49,"name":"AI Summarization"}],"image":[]}}