This workflow corresponds to n8n.io template #13316 — we link there as the canonical source.
This workflow follows the Agent → Agenttool recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "luNssK2IRCtFo6XBSgzKa",
"name": "AI-Powered Supply Chain Risk Evaluation and Contingency Orchestration",
"tags": [],
"nodes": [
{
"id": "52946ab0-cc13-496a-be8f-e0a24eff5411",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1664,
416
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours"
}
]
}
},
"typeVersion": 1.3
},
{
"id": "d2c98343-ddfc-4e8a-acdf-a9bc76a169d8",
"name": "Workflow Configuration",
"type": "n8n-nodes-base.set",
"position": [
-1440,
416
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "riskDataSheetId",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Google Sheets ID for Risk Data__>"
},
{
"id": "id-2",
"name": "logSheetId",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Google Sheets ID for Risk Assessment Log__>"
},
{
"id": "id-3",
"name": "slackChannelId",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Slack Channel ID for Risk Notifications__>"
},
{
"id": "id-4",
"name": "approvalEmailRecipients",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Comma-separated email addresses for approvals__>"
},
{
"id": "id-5",
"name": "criticalRiskThreshold",
"type": "number",
"value": 80
},
{
"id": "id-6",
"name": "mediumRiskThreshold",
"type": "number",
"value": 50
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "f1e8af09-8164-497c-99b6-b0e787e1ef6a",
"name": "Fetch Risk Data",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1216,
416
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Risk Indicators"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.riskDataSheetId }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "d729afbd-fa93-4a25-af88-2f737b056da7",
"name": "Aggregate Risk Indicators",
"type": "n8n-nodes-base.code",
"position": [
-992,
416
],
"parameters": {
"jsCode": "// Aggregate risk indicators from multiple rows into structured object\nconst items = $input.all();\n\n// Initialize aggregated risk data structure\nconst aggregatedRisk = {\n supplier: {\n totalSuppliers: 0,\n highRiskSuppliers: 0,\n averageLeadTime: 0,\n qualityIssues: 0\n },\n logistics: {\n delayedShipments: 0,\n totalShipments: 0,\n averageDelayDays: 0,\n routeDisruptions: 0\n },\n inventory: {\n lowStockItems: 0,\n totalItems: 0,\n stockoutRisk: 0,\n averageStockLevel: 0\n },\n rawData: []\n};\n\n// Process each row of risk data\nfor (const item of items) {\n const data = item.json;\n \n // Aggregate supplier metrics\n if (data.supplierRiskScore !== undefined) {\n aggregatedRisk.supplier.totalSuppliers++;\n if (data.supplierRiskScore > 70) {\n aggregatedRisk.supplier.highRiskSuppliers++;\n }\n }\n \n if (data.leadTime !== undefined) {\n aggregatedRisk.supplier.averageLeadTime += data.leadTime;\n }\n \n if (data.qualityIssue === true || data.qualityIssue === 'true') {\n aggregatedRisk.supplier.qualityIssues++;\n }\n \n // Aggregate logistics metrics\n if (data.shipmentStatus !== undefined) {\n aggregatedRisk.logistics.totalShipments++;\n if (data.shipmentStatus === 'delayed') {\n aggregatedRisk.logistics.delayedShipments++;\n }\n }\n \n if (data.delayDays !== undefined && data.delayDays > 0) {\n aggregatedRisk.logistics.averageDelayDays += data.delayDays;\n }\n \n if (data.routeDisruption === true || data.routeDisruption === 'true') {\n aggregatedRisk.logistics.routeDisruptions++;\n }\n \n // Aggregate inventory metrics\n if (data.stockLevel !== undefined) {\n aggregatedRisk.inventory.totalItems++;\n aggregatedRisk.inventory.averageStockLevel += data.stockLevel;\n \n if (data.stockLevel < data.reorderPoint) {\n aggregatedRisk.inventory.lowStockItems++;\n }\n }\n \n if (data.stockoutRisk !== undefined) {\n aggregatedRisk.inventory.stockoutRisk += data.stockoutRisk;\n }\n \n // Store raw data for reference\n aggregatedRisk.rawData.push(data);\n}\n\n// Calculate averages\nif (aggregatedRisk.supplier.totalSuppliers > 0) {\n aggregatedRisk.supplier.averageLeadTime = \n aggregatedRisk.supplier.averageLeadTime / aggregatedRisk.supplier.totalSuppliers;\n}\n\nif (aggregatedRisk.logistics.delayedShipments > 0) {\n aggregatedRisk.logistics.averageDelayDays = \n aggregatedRisk.logistics.averageDelayDays / aggregatedRisk.logistics.delayedShipments;\n}\n\nif (aggregatedRisk.inventory.totalItems > 0) {\n aggregatedRisk.inventory.averageStockLevel = \n aggregatedRisk.inventory.averageStockLevel / aggregatedRisk.inventory.totalItems;\n aggregatedRisk.inventory.stockoutRisk = \n aggregatedRisk.inventory.stockoutRisk / aggregatedRisk.inventory.totalItems;\n}\n\n// Calculate overall risk score\naggregatedRisk.overallRiskScore = (\n (aggregatedRisk.supplier.highRiskSuppliers / Math.max(aggregatedRisk.supplier.totalSuppliers, 1)) * 40 +\n (aggregatedRisk.logistics.delayedShipments / Math.max(aggregatedRisk.logistics.totalShipments, 1)) * 30 +\n (aggregatedRisk.inventory.lowStockItems / Math.max(aggregatedRisk.inventory.totalItems, 1)) * 30\n);\n\naggregatedRisk.timestamp = new Date().toISOString();\n\n// Return with riskData field instead of at root level\nreturn [{ json: { riskData: aggregatedRisk } }];"
},
"typeVersion": 2
},
{
"id": "f5c86de8-e15f-4138-8063-4a821d66aa72",
"name": "Risk Signal Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-768,
416
],
"parameters": {
"text": "=Risk Indicators Data: {{ JSON.stringify($json.riskData) }}",
"options": {
"systemMessage": "You are a specialized Supply Chain Risk Signal Agent.\n\nYour task is to:\n1. Analyze structured supplier, logistics, and inventory risk indicators\n2. Evaluate each risk category (supplier reliability, logistics delays, inventory shortages, quality issues, compliance violations)\n3. Calculate risk scores for each category (0-100 scale)\n4. Determine overall risk level: LOW (0-49), MEDIUM (50-79), CRITICAL (80-100)\n5. Identify specific risk factors and their severity\n6. Provide reasoning for risk assessment\n7. Flag contractual boundary violations (e.g., supplier contract breaches, SLA violations)\n8. Return structured JSON output with all risk metrics\n\nConsider:\n- Historical performance patterns\n- Current operational metrics\n- Contractual obligations and SLAs\n- Industry benchmarks\n- Cascading risk impacts\n\nIMPORTANT: Preserve contractual boundaries - do not recommend actions that violate existing agreements."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "13471257-1ac6-4ae2-825e-8a3fbe4cac21",
"name": "Anthropic Model - Risk Agent",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
-832,
640
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-5-20250929",
"cachedResultName": "Claude Sonnet 4.5"
},
"options": {}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "2843cf74-3bdb-4713-9367-46da595c7beb",
"name": "Risk Assessment Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-640,
640
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"overallRiskLevel\": {\n \"type\": \"string\",\n \"description\": \"Overall risk level: LOW, MEDIUM, or CRITICAL\"\n },\n \"overallRiskScore\": {\n \"type\": \"number\",\n \"description\": \"Overall risk score (0-100)\"\n },\n \"supplierRiskScore\": {\n \"type\": \"number\",\n \"description\": \"Supplier reliability risk score (0-100)\"\n },\n \"logisticsRiskScore\": {\n \"type\": \"number\",\n \"description\": \"Logistics and delivery risk score (0-100)\"\n },\n \"inventoryRiskScore\": {\n \"type\": \"number\",\n \"description\": \"Inventory shortage risk score (0-100)\"\n },\n \"riskFactors\": {\n \"type\": \"array\",\n \"description\": \"List of identified risk factors\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"contractualViolations\": {\n \"type\": \"array\",\n \"description\": \"List of contractual boundary violations detected\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"reasoning\": {\n \"type\": \"string\",\n \"description\": \"Detailed reasoning for the risk assessment\"\n }\n },\n \"required\": [\"overallRiskLevel\", \"overallRiskScore\", \"supplierRiskScore\", \"logisticsRiskScore\", \"inventoryRiskScore\", \"riskFactors\", \"contractualViolations\", \"reasoning\"]\n}"
},
"typeVersion": 1.3
},
{
"id": "446c55ff-565b-4685-8081-4a1446612f87",
"name": "Route by Risk Level",
"type": "n8n-nodes-base.switch",
"position": [
-416,
384
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Critical Risk",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.output.overallRiskLevel }}",
"rightValue": "CRITICAL"
}
]
},
"renameOutput": true
},
{
"outputKey": "Medium Risk",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.output.overallRiskLevel }}",
"rightValue": "MEDIUM"
}
]
},
"renameOutput": true
},
{
"outputKey": "Low Risk",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.output.overallRiskLevel }}",
"rightValue": "LOW"
}
]
},
"renameOutput": true
}
]
},
"options": {
"fallbackOutput": "extra",
"renameFallbackOutput": "Unclassified"
}
},
"typeVersion": 3.4
},
{
"id": "609124a4-74fd-4345-9804-b0876ee94607",
"name": "Coordination Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
64,
304
],
"parameters": {
"text": "=Risk Assessment: {{ JSON.stringify($json.output) }}\nRisk Data: {{ JSON.stringify($json.riskData) }}",
"options": {
"systemMessage": "You are a Supply Chain Coordination Agent responsible for orchestrating contingency workflows and managing internal approvals.\n\nYour task is to:\n1. Review the risk assessment from the Risk Signal Agent\n2. Determine appropriate contingency actions based on risk level and factors\n3. Use available tools to execute contingency workflows:\n - Slack Notification Tool: Alert relevant teams about risks\n - Gmail Approval Tool: Request approvals from stakeholders for critical actions\n - Impact Assessment Agent Tool: Perform detailed impact analysis\n4. Coordinate multi-step responses while preserving contractual boundaries\n5. Ensure all actions comply with existing supplier contracts and SLAs\n6. Return structured output with actions taken and approvals requested\n\nAvailable Tools:\n- Slack Notification Tool: Send notifications to risk management teams\n- Gmail Approval Tool: Send approval requests to stakeholders\n- Impact Assessment Agent Tool: Analyze financial and operational impacts\n\nIMPORTANT:\n- Never recommend actions that violate contractual obligations\n- Always request approval before suggesting contract modifications\n- Prioritize actions that work within existing agreements\n- Document all contractual constraints in your response"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "31f0aae3-0ddf-45d8-8f7f-30766aa3f1db",
"name": "Anthropic Model - Coordination Agent",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
-64,
624
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-5-20250929",
"cachedResultName": "Claude Sonnet 4.5"
},
"options": {}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "63be6026-dc2d-457b-9908-7c34d172e1ec",
"name": "Coordination Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
32,
528
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"actionsTaken\": {\n \"type\": \"array\",\n \"description\": \"List of contingency actions executed\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"approvalsRequested\": {\n \"type\": \"array\",\n \"description\": \"List of approvals requested from stakeholders\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"notificationsSent\": {\n \"type\": \"array\",\n \"description\": \"List of notifications sent to teams\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"impactAssessmentSummary\": {\n \"type\": \"string\",\n \"description\": \"Summary of impact assessment results\"\n },\n \"contractualConstraints\": {\n \"type\": \"array\",\n \"description\": \"List of contractual constraints that limit available actions\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"recommendedNextSteps\": {\n \"type\": \"array\",\n \"description\": \"Recommended next steps for risk mitigation\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\"actionsTaken\", \"approvalsRequested\", \"notificationsSent\", \"contractualConstraints\", \"recommendedNextSteps\"]\n}"
},
"typeVersion": 1.3
},
{
"id": "b29c032b-0a3e-4571-81ed-e6a3703d98cd",
"name": "Slack Notification Tool",
"type": "n8n-nodes-base.slackTool",
"position": [
160,
608
],
"parameters": {
"text": "={{ $fromAI('message', 'Notification message content', 'string') }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $fromAI('slackChannel', 'Slack channel ID for notification', 'string') }}"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.4
},
{
"id": "01056a59-3aa2-431f-9db0-b9a9fb8f6f9c",
"name": "Gmail Approval Tool",
"type": "n8n-nodes-base.gmailTool",
"position": [
272,
480
],
"parameters": {
"sendTo": "={{ $fromAI('recipients', 'Email recipients for approval request', 'string') }}",
"message": "={{ $fromAI('emailBody', 'Email body content', 'string') }}",
"options": {},
"subject": "={{ $fromAI('subject', 'Email subject line', 'string') }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "d27a3996-c3f2-451e-b994-40fa286c4213",
"name": "Impact Assessment Agent Tool",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
400,
528
],
"parameters": {
"text": "={{ $fromAI(\"riskContext\", \"Risk assessment context and data for impact analysis\", \"json\") }}",
"options": {
"systemMessage": "You are an Impact Assessment Specialist for supply chain risk management.\n\nYour task is to:\n1. Analyze the provided risk context and assessment data\n2. Calculate financial impact (revenue loss, cost increases, penalties)\n3. Assess operational impact (production delays, capacity constraints, customer satisfaction)\n4. Evaluate reputational impact (brand damage, customer trust)\n5. Identify cascading effects across the supply chain\n6. Estimate recovery time and mitigation costs\n7. Return structured impact assessment with quantified metrics\n\nConsider:\n- Direct and indirect costs\n- Short-term and long-term impacts\n- Probability-weighted scenarios\n- Historical incident data\n- Industry benchmarks"
},
"hasOutputParser": true,
"toolDescription": "Performs detailed financial and operational impact assessment for supply chain risks"
},
"typeVersion": 3
},
{
"id": "6ea96b07-12d2-4024-8e10-3f46cfc3197a",
"name": "Anthropic Model - Impact Agent",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
448,
736
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-5-20250929",
"cachedResultName": "Claude Sonnet 4.5"
},
"options": {}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "755292a1-1a28-4cee-a8f1-15f493b9d8e7",
"name": "Impact Assessment Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
576,
736
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"financialImpact\": {\n \"type\": \"object\",\n \"properties\": {\n \"estimatedRevenueLoss\": {\n \"type\": \"number\"\n },\n \"estimatedCostIncrease\": {\n \"type\": \"number\"\n },\n \"potentialPenalties\": {\n \"type\": \"number\"\n }\n }\n },\n \"operationalImpact\": {\n \"type\": \"object\",\n \"properties\": {\n \"productionDelayDays\": {\n \"type\": \"number\"\n },\n \"capacityReductionPercent\": {\n \"type\": \"number\"\n },\n \"affectedCustomers\": {\n \"type\": \"number\"\n }\n }\n },\n \"recoveryTimeEstimate\": {\n \"type\": \"string\",\n \"description\": \"Estimated time to recover from the risk event\"\n },\n \"mitigationCost\": {\n \"type\": \"number\",\n \"description\": \"Estimated cost to mitigate the risk\"\n },\n \"cascadingEffects\": {\n \"type\": \"array\",\n \"description\": \"List of cascading effects across the supply chain\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\"financialImpact\", \"operationalImpact\", \"recoveryTimeEstimate\", \"mitigationCost\", \"cascadingEffects\"]\n}"
},
"typeVersion": 1.3
},
{
"id": "32296f00-b404-4956-8bb7-af247ba96870",
"name": "Log Risk Assessment",
"type": "n8n-nodes-base.googleSheets",
"position": [
1040,
720
],
"parameters": {
"columns": {
"value": {},
"schema": [],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"timestamp"
]
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Risk Assessment Log"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.logSheetId }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "38aaf670-6b64-4dc4-96f0-c92cfa9c663e",
"name": "Low Risk Notification",
"type": "n8n-nodes-base.slack",
"position": [
464,
912
],
"parameters": {
"text": "=\u2705 Low Risk Assessment - No Action Required\n\nOverall Risk Score: {{ $json.output.overallRiskScore }}\nSupplier Risk: {{ $json.output.supplierRiskScore }}\nLogistics Risk: {{ $json.output.logisticsRiskScore }}\nInventory Risk: {{ $json.output.inventoryRiskScore }}\n\nRisk Factors:\n{{ $json.output.riskFactors.map(f => \"\u2022 \" + f).join(\"\\n\") }}\n\nReasoning: {{ $json.output.reasoning }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.slackChannelId }}"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.4
},
{
"id": "01471f38-2039-4135-9e6e-d7227052c5be",
"name": "Merge Results",
"type": "n8n-nodes-base.merge",
"position": [
816,
720
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.2
},
{
"id": "8dfd6359-c189-4f0f-b176-105ecced6c4c",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-848,
-160
],
"parameters": {
"color": 4,
"width": 464,
"height": 336,
"content": "## Prerequisites\nActive accounts: Google Sheets, Anthropic Claude API, Gmail, Slack.\n## Use Cases\nEnterprise compliance monitoring, operational risk management\n## Customization\nModify scoring formulas, adjust severity thresholds, add custom AI criteria\n## Benefits\nEliminates manual triage, ensures consistent standards, accelerates critical response"
},
"typeVersion": 1
},
{
"id": "05bfc043-9ade-4c47-91bf-1a771fbb0e1c",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1216,
-80
],
"parameters": {
"width": 336,
"height": 272,
"content": "## Setup Steps\n1. Connect Google Sheets with risk data\n2. Configure Anthropic API credentials for Claude Model nodes \n3. Set up Gmail authentication for notification delivery\n4. Connect Slack workspace and specify channel IDs for critical/low risk alerts\n5. Customize risk thresholds \n6. Update parser regex patterns in Code nodes matching assessment output format"
},
"typeVersion": 1
},
{
"id": "9759fccb-fe8b-4c9b-aa12-403f68fb1091",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1696,
-96
],
"parameters": {
"width": 432,
"height": 288,
"content": "## How It Works\nThis workflow automates enterprise risk management by intelligently routing risks across three severity tiers. Built for compliance teams and risk managers, it eliminates manual evaluation bottlenecks and inconsistent escalation. The system retrieves risk data from spreadsheets, calculates severity indicators, then routes items through specialized AI agents\u2014critical risks trigger coordinated multi-agent assessment with Gmail and Slack alerts, medium risks undergo standard AI evaluation, while low risks receive automated acknowledgment. Each severity level follows distinct processing paths ensuring appropriate review depth, stakeholder notification, and audit documentation."
},
"typeVersion": 1
},
{
"id": "7ece137e-23c7-40a1-9880-6b730489e76a",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-464,
224
],
"parameters": {
"color": 7,
"width": 352,
"height": 560,
"content": "## Critical Risk Processing\n**Why**: High-stakes items receive comprehensive multi-perspective evaluation through coordinated specialized agents ensuring thorough analysis.\n"
},
"typeVersion": 1
},
{
"id": "aab23a77-4203-48e5-bba4-8751f2317616",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1760,
240
],
"parameters": {
"color": 7,
"width": 1264,
"height": 576,
"content": "## Risk Indicator Calculation\n**Why**: Assigns severity classification enabling intelligent routing to appropriate assessment pathways based on threat level.\n"
},
"typeVersion": 1
},
{
"id": "4c5d3486-f971-410b-b193-92a796906f27",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
208
],
"parameters": {
"color": 7,
"width": 464,
"height": 640,
"content": "## Medium Risk Evaluation\n**Why**: Balances thorough assessment with processing efficiency using single AI agent with structured output parsing."
},
"typeVersion": 1
},
{
"id": "727cca81-5277-438e-8d7e-e28b1d9b264e",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
192
],
"parameters": {
"color": 7,
"width": 832,
"height": 960,
"content": "## Results Management\n**Why**: Creates accountability through merged logging and transparent stakeholder communication via Gmail and Slack notifications."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "3c1ff1cc-848e-46bb-972d-5a259c3a2216",
"connections": {
"Merge Results": {
"main": [
[
{
"node": "Log Risk Assessment",
"type": "main",
"index": 0
}
]
]
},
"Fetch Risk Data": {
"main": [
[
{
"node": "Aggregate Risk Indicators",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Workflow Configuration",
"type": "main",
"index": 0
}
]
]
},
"Risk Signal Agent": {
"main": [
[
{
"node": "Route by Risk Level",
"type": "main",
"index": 0
}
]
]
},
"Coordination Agent": {
"main": [
[
{
"node": "Merge Results",
"type": "main",
"index": 0
}
]
]
},
"Gmail Approval Tool": {
"ai_tool": [
[
{
"node": "Coordination Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Route by Risk Level": {
"main": [
[
{
"node": "Coordination Agent",
"type": "main",
"index": 0
}
],
[
{
"node": "Coordination Agent",
"type": "main",
"index": 0
}
],
[
{
"node": "Low Risk Notification",
"type": "main",
"index": 0
}
]
]
},
"Low Risk Notification": {
"main": [
[
{
"node": "Merge Results",
"type": "main",
"index": 1
}
]
]
},
"Workflow Configuration": {
"main": [
[
{
"node": "Fetch Risk Data",
"type": "main",
"index": 0
}
]
]
},
"Slack Notification Tool": {
"ai_tool": [
[
{
"node": "Coordination Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Aggregate Risk Indicators": {
"main": [
[
{
"node": "Risk Signal Agent",
"type": "main",
"index": 0
}
]
]
},
"Coordination Output Parser": {
"ai_outputParser": [
[
{
"node": "Coordination Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Anthropic Model - Risk Agent": {
"ai_languageModel": [
[
{
"node": "Risk Signal Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Impact Assessment Agent Tool": {
"ai_tool": [
[
{
"node": "Coordination Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Risk Assessment Output Parser": {
"ai_outputParser": [
[
{
"node": "Risk Signal Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Anthropic Model - Impact Agent": {
"ai_languageModel": [
[
{
"node": "Impact Assessment Agent Tool",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Impact Assessment Output Parser": {
"ai_outputParser": [
[
{
"node": "Impact Assessment Agent Tool",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Anthropic Model - Coordination Agent": {
"ai_languageModel": [
[
{
"node": "Coordination Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
anthropicApigmailOAuth2googleSheetsOAuth2ApislackOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates enterprise risk management by intelligently routing risks across three severity tiers. Built for compliance teams and risk managers, it eliminates manual evaluation bottlenecks and inconsistent escalation. The system retrieves risk data from spreadsheets,…
Source: https://n8n.io/workflows/13316/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow automates end-to-end ESG (Environmental, Social, and Governance) sustainability reporting for enterprise sustainability teams, compliance officers, and green governance leads. It solves
This workflow automates semiconductor board-level reliability monitoring using AI agents. It targets reliability engineers, manufacturing teams, and quality analysts. The system collects capacity, his
This workflow automates daily business metrics collection, analysis, and reporting using a multi-agent AI architecture in n8n. Designed for operations teams, analysts, and business managers, it elimin
This workflow automates legal case tracking, deadline management, and exception handling for law firms, corporate legal departments, and court systems managing complex litigation portfolios. Designed
This workflow automates end-to-end sustainability lifecycle management for corporate sustainability teams, ESG governance officers, and circular economy programme leads. It addresses the challenge of