{"workflow":{"id":13683,"name":"Audit contract governance risk with OpenAI, Slack and email routing","views":23,"recentViews":0,"totalViews":23,"createdAt":"2026-02-25T07:11:35.816Z","description":"## How It Works\nThis workflow automates contract governance auditing by deploying a multi-agent AI system that validates contracts, assesses risk, checks compliance, and routes alerts based on risk level. Designed for legal, procurement, and compliance teams, it eliminates manual contract review bottlenecks and ensures timely escalation of high-risk issues. A schedule trigger initiates the workflow, simulating a contract audit data input. A Contract Validation Agent performs initial validation via OpenAI, then passes results to a Governance Orchestration Agent, which delegates to Risk Assessment and Compliance Checker sub-agents. Risk scores are routed by level—low, medium, or high—triggering appropriate notifications via Slack or email escalation before logging the audit trail.\n\n## Setup Steps\n1. Set schedule trigger interval to match audit frequency requirements.\n2. Add OpenAI API credentials to all OpenAI Chat Model nodes.\n3. Configure Slack credentials and set target channel for risk notifications.\n4. Add Gmail/SMTP credentials to the Send Email Escalation node.\n5. Define risk thresholds in the Route by Risk Level rules node.\n\n## Prerequisites\n- Slack workspace with bot token\n- Gmail or SMTP credentials\n- Basic n8n workflow knowledge\n## Use Cases\n- Automated periodic contract risk auditing for procurement teams\n- Compliance breach detection with instant escalation to legal\n## Customization\n- Replace simulated data with live contract database or webhook input\n## Benefits\n- Eliminates manual contract review with scheduled AI auditing\n","workflow":{"id":"Esf8R6W7iWxXW4A5bOWHW","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"Intelligent contract governance auditor with smart risk routing","tags":[],"nodes":[{"id":"65491d32-9b58-43b8-b606-efe6e6b2bfe7","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-32,192],"parameters":{"rule":{"interval":[{"field":"minutes","minutesInterval":15}]}},"typeVersion":1.3},{"id":"1b79bdde-4cd1-417c-96b1-79fac68e045a","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[192,192],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"riskThresholdLow","type":"number","value":30},{"id":"id-2","name":"riskThresholdMedium","type":"number","value":60},{"id":"id-3","name":"riskThresholdHigh","type":"number","value":85},{"id":"id-4","name":"slackChannelId","type":"string","value":"<__PLACEHOLDER_VALUE__Slack Channel ID__>"},{"id":"id-5","name":"escalationEmail","type":"string","value":"<__PLACEHOLDER_VALUE__Escalation Email Address__>"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"34698cc1-8aa1-43ff-bf37-d9600a6823ab","name":"Simulate Contract Audit Data","type":"n8n-nodes-base.code","position":[416,192],"parameters":{"jsCode":"// Generate simulated contract audit data\nconst contractData = {\n  contractId: `CTR-${Math.floor(Math.random() * 10000)}`,\n  contractName: `SmartContract_${Math.random().toString(36).substring(7)}`,\n  deploymentStatus: ['pending', 'deployed', 'failed'][Math.floor(Math.random() * 3)],\n  auditScore: Math.floor(Math.random() * 100) + 1,\n  securityFlags: [\n    'reentrancy_check',\n    'overflow_protection',\n    'access_control',\n    'input_validation'\n  ].filter(() => Math.random() > 0.3),\n  complianceChecks: {\n    GDPR: Math.random() > 0.3,\n    SOX: Math.random() > 0.4,\n    HIPAA: Math.random() > 0.5\n  },\n  gasOptimization: Math.floor(Math.random() * 100) + 1,\n  codeComplexity: Math.floor(Math.random() * 10) + 1,\n  timestamp: new Date().toISOString()\n};\n\nreturn [{ json: contractData }];"},"typeVersion":2},{"id":"f3d7b5cc-014c-4531-9cda-6183a1c45e85","name":"Contract Validation Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[640,192],"parameters":{"text":"=Contract audit data: {{ JSON.stringify($json) }}","options":{"systemMessage":"You are a Contract Validation Specialist Agent analyzing smart contract audit and deployment signals.\n\nYour task is to:\n1. Analyze contract audit scores and security flags\n2. Evaluate deployment readiness based on audit results\n3. Identify critical security vulnerabilities\n4. Assess code quality metrics (gas optimization, complexity)\n5. Validate compliance requirements\n6. Determine validation status (APPROVED, CONDITIONAL, REJECTED)\n7. Provide detailed reasoning for your assessment\n\nConsider: security best practices, gas efficiency, code complexity, and compliance requirements.\n\nReturn structured validation results with clear recommendations."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"2c1248fa-e50a-49f1-8f6f-db40c7e1e0a7","name":"OpenAI Chat Model - Validation","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[544,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":"64531d28-8d08-46fb-98cc-a14196250eae","name":"Structured Output Parser - Validation","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[768,416],"parameters":{"jsonSchemaExample":"{\n  \"validationStatus\": \"APPROVED | CONDITIONAL | REJECTED\",\n  \"securityScore\": 85,\n  \"criticalIssues\": [\"Issue 1\", \"Issue 2\"],\n  \"warnings\": [\"Warning 1\"],\n  \"gasEfficiencyRating\": \"HIGH | MEDIUM | LOW\",\n  \"complianceStatus\": {\n    \"GDPR\": true,\n    \"SOX\": true,\n    \"HIPAA\": false\n  },\n  \"deploymentRecommendation\": \"Recommendation text\",\n  \"reasoning\": \"Detailed reasoning for validation decision\"\n}"},"typeVersion":1.3},{"id":"c46ccd21-7e58-4f2b-8bce-272ef5d64019","name":"Governance Orchestrator Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1408,192],"parameters":{"text":"=Validation results: {{ JSON.stringify($json.output) }}","options":{"systemMessage":"You are a Governance Orchestrator Agent coordinating contract approval workflows and risk escalation.\n\nYour task is to:\n1. Review validation results from the Contract Validation Agent\n2. Call the Risk Assessment Agent Tool to evaluate business and operational risks\n3. Call the Compliance Checker Agent Tool to verify regulatory requirements\n4. Use the Calculator Tool to compute risk scores and thresholds\n5. Determine overall risk level (LOW, MEDIUM, HIGH, CRITICAL)\n6. Decide on approval workflow (AUTO_APPROVE, MANUAL_REVIEW, ESCALATE)\n7. Generate stakeholder notifications\n8. Provide comprehensive governance decision with audit trail\n\nConsider: validation status, risk assessment, compliance gaps, and organizational policies.\n\nReturn structured governance decision with risk level, approval status, and recommended actions."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"436c27da-1c0e-4cdb-b885-1e73adf979a7","name":"OpenAI Chat Model - Governance","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[992,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":"693944b4-0d64-49b3-99a0-5ce8c0b2e7fe","name":"Structured Output Parser - Governance","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1824,416],"parameters":{"jsonSchemaExample":"{\n  \"riskLevel\": \"LOW | MEDIUM | HIGH | CRITICAL\",\n  \"riskScore\": 45,\n  \"approvalStatus\": \"AUTO_APPROVE | MANUAL_REVIEW | ESCALATE | REJECTED\",\n  \"businessImpact\": \"Impact description\",\n  \"complianceGaps\": [\"Gap 1\", \"Gap 2\"],\n  \"requiredActions\": [\"Action 1\", \"Action 2\"],\n  \"stakeholders\": [\"Legal\", \"Compliance\", \"Security\"],\n  \"escalationReason\": \"Reason for escalation if applicable\",\n  \"auditTrail\": {\n    \"validationAgent\": \"summary\",\n    \"riskAssessment\": \"summary\",\n    \"complianceCheck\": \"summary\"\n  },\n  \"reasoning\": \"Detailed reasoning for governance decision\"\n}"},"typeVersion":1.3},{"id":"6c2d5dfc-076f-4e3e-a29a-6c89ba803d36","name":"Risk Assessment Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1120,416],"parameters":{"text":"={{ $fromAI(\"validationData\", \"Contract validation results for risk assessment\", \"json\") }}","options":{"systemMessage":"You are a Risk Assessment Specialist Agent evaluating business and operational risks for contract deployments.\n\nYour task is to:\n1. Analyze validation results and security findings\n2. Assess business impact and operational risks\n3. Evaluate financial exposure and liability\n4. Determine risk probability and severity\n5. Calculate overall risk score (0-100)\n6. Identify risk mitigation strategies\n7. Provide detailed risk analysis\n\nConsider: security vulnerabilities, compliance gaps, business continuity, and financial impact.\n\nReturn structured risk assessment with score, impact analysis, and mitigation recommendations."},"hasOutputParser":true,"toolDescription":"Evaluates business and operational risks for contract deployments including impact analysis and risk scoring"},"typeVersion":3},{"id":"47c6aa74-187f-4464-a99d-8c86f621a2eb","name":"OpenAI Chat Model - Risk","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1072,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":"f5e69b47-fec9-4085-a6f8-5f6143e81c1a","name":"Structured Output Parser - Risk","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1232,640],"parameters":{"jsonSchemaExample":"{\n  \"riskScore\": 65,\n  \"riskCategory\": \"OPERATIONAL | FINANCIAL | SECURITY | COMPLIANCE\",\n  \"businessImpact\": \"HIGH | MEDIUM | LOW\",\n  \"financialExposure\": 50000,\n  \"operationalRisks\": [\"Risk 1\", \"Risk 2\"],\n  \"mitigationStrategies\": [\"Strategy 1\", \"Strategy 2\"],\n  \"recommendedControls\": [\"Control 1\", \"Control 2\"],\n  \"reasoning\": \"Detailed risk assessment reasoning\"\n}"},"typeVersion":1.3},{"id":"1875dcc6-48ad-4713-860a-1d25af8226de","name":"Compliance Checker Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1408,416],"parameters":{"text":"={{ $fromAI(\"validationData\", \"Contract validation results for compliance checking\", \"json\") }}","options":{"systemMessage":"You are a Compliance Checker Specialist Agent verifying regulatory and policy requirements.\n\nYour task is to:\n1. Review contract validation and compliance status\n2. Map requirements to regulatory frameworks (GDPR, SOX, HIPAA, etc.)\n3. Identify compliance gaps and violations\n4. Assess regulatory risk and enforcement likelihood\n5. Determine required remediation actions\n6. Specify documentation and audit requirements\n7. Provide compliance status summary\n\nConsider: applicable regulations, organizational policies, industry standards, and enforcement priorities.\n\nReturn structured compliance assessment with gaps, required actions, and regulatory mapping."},"hasOutputParser":true,"toolDescription":"Verifies regulatory compliance and identifies gaps in contract deployments against frameworks like GDPR, SOX, and HIPAA"},"typeVersion":3},{"id":"043a410b-ea8d-4928-be7b-46b9164052fe","name":"OpenAI Chat Model - Compliance","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1408,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":"9c42b638-1cbc-4a55-94cb-6eab49307f6d","name":"Structured Output Parser - Compliance","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1648,640],"parameters":{"jsonSchemaExample":"{\n  \"complianceStatus\": \"COMPLIANT | PARTIAL | NON_COMPLIANT\",\n  \"frameworks\": [\"GDPR\", \"SOX\", \"HIPAA\"],\n  \"complianceGaps\": [\"Gap 1\", \"Gap 2\"],\n  \"requiredActions\": [\"Action 1\", \"Action 2\"],\n  \"regulatoryRisk\": \"HIGH | MEDIUM | LOW\",\n  \"documentationNeeds\": [\"Document 1\", \"Document 2\"],\n  \"deadlines\": [\"Deadline 1\", \"Deadline 2\"],\n  \"reasoning\": \"Detailed compliance assessment reasoning\"\n}"},"typeVersion":1.3},{"id":"68dd851f-231e-41b1-b61c-463f7dd9a8b9","name":"Calculator Tool","type":"@n8n/n8n-nodes-langchain.toolCalculator","position":[1696,416],"parameters":{},"typeVersion":1},{"id":"6ef9de90-0933-418c-979b-4648dda63e8f","name":"Route by Risk Level","type":"n8n-nodes-base.switch","position":[2032,256],"parameters":{"rules":{"values":[{"outputKey":"LOW","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.riskLevel }}","rightValue":"LOW"}]},"renameOutput":true},{"outputKey":"MEDIUM","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.riskLevel }}","rightValue":"MEDIUM"}]},"renameOutput":true},{"outputKey":"HIGH","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.riskLevel }}","rightValue":"HIGH"},{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.riskLevel }}","rightValue":"CRITICAL"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra","renameFallbackOutput":"Unhandled"}},"typeVersion":3.4},{"id":"44dba0c6-8852-4878-9f7c-0baf8e2ad3f6","name":"Prepare Low Risk Notification","type":"n8n-nodes-base.set","position":[2560,144],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"notificationType","type":"string","value":"LOW_RISK"},{"id":"id-2","name":"message","type":"string","value":"=✅ Contract {{ $json.output.auditTrail.validationAgent }} - Low Risk Approved\n\nRisk Score: {{ $json.output.riskScore }}\nApproval Status: {{ $json.output.approvalStatus }}\nBusiness Impact: {{ $json.output.businessImpact }}\n\nNo escalation required."}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"6dc0e360-95c8-4415-b9b3-caa5ac25423c","name":"Prepare Medium Risk Notification","type":"n8n-nodes-base.set","position":[2336,336],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"notificationType","type":"string","value":"MEDIUM_RISK"},{"id":"id-2","name":"message","type":"string","value":"=⚠️ Contract Validation - Medium Risk Detected\n\nRisk Level: {{ $json.output.riskLevel }}\nRisk Score: {{ $json.output.riskScore }}\nApproval Status: {{ $json.output.approvalStatus }}\n\nRequired Actions:\n{{ $json.output.requiredActions.join(\"\\n\") }}\n\nStakeholders: {{ $json.output.stakeholders.join(\", \") }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"923b57d9-172a-4515-aec8-14550a3c99ac","name":"Prepare High Risk Notification","type":"n8n-nodes-base.set","position":[2336,528],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"notificationType","type":"string","value":"HIGH_RISK"},{"id":"id-2","name":"emailSubject","type":"string","value":"=🚨 CRITICAL: Contract Governance Escalation - {{ $json.output.riskLevel }} Risk"},{"id":"id-3","name":"emailBody","type":"string","value":"=<html><body style=\"font-family: Arial, sans-serif; line-height: 1.6; color: #333;\"><div style=\"background-color: #dc3545; color: white; padding: 20px; border-radius: 5px;\"><h2>🚨 CRITICAL CONTRACT GOVERNANCE ESCALATION</h2></div><div style=\"padding: 20px;\"><h3>Risk Assessment</h3><table style=\"width: 100%; border-collapse: collapse;\"><tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Risk Level:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.riskLevel }}</td></tr><tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Risk Score:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.riskScore }}</td></tr><tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Approval Status:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.approvalStatus }}</td></tr><tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Business Impact:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.businessImpact }}</td></tr></table><h3>Escalation Reason</h3><p style=\"background-color: #fff3cd; padding: 15px; border-left: 4px solid #ffc107;\">{{ $json.output.escalationReason }}</p><h3>Compliance Gaps</h3><ul>{{ $json.output.complianceGaps.map(gap => `<li>${gap}</li>`).join(\"\") }}</ul><h3>Required Actions</h3><ul>{{ $json.output.requiredActions.map(action => `<li>${action}</li>`).join(\"\") }}</ul><h3>Audit Trail</h3><pre style=\"background-color: #f8f9fa; padding: 15px; border-radius: 5px; overflow-x: auto;\">{{ JSON.stringify($json.output.auditTrail, null, 2) }}</pre><p style=\"margin-top: 30px; padding: 15px; background-color: #f8d7da; border-left: 4px solid #dc3545;\"><strong>⚠️ IMMEDIATE ACTION REQUIRED</strong><br>This case requires urgent review and decision by governance leadership.</p><p style=\"color: #666; font-size: 12px; margin-top: 30px;\">Generated: {{ $now.toFormat(\"yyyy-MM-dd HH:mm:ss\") }}</p></div></body></html>"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"336fb97d-628b-4591-a822-d7c52c979552","name":"Send Slack Notification","type":"n8n-nodes-base.slack","position":[2560,336],"webhookId":"a22f23e0-72b3-4c09-9b3c-a5e5f734c674","parameters":{"text":"={{ $json.message }}","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":"26a54e9a-565b-4b88-9bc2-315338a5f015","name":"Send Email Escalation","type":"n8n-nodes-base.emailSend","position":[2560,528],"webhookId":"dc847aed-58a8-40a0-bbb9-c264aea3b536","parameters":{"html":"={{ $json.emailBody }}","options":{},"subject":"={{ $json.emailSubject }}","toEmail":"={{ $('Workflow Configuration').first().json.escalationEmail }}","fromEmail":"<__PLACEHOLDER_VALUE__Sender Email Address__>"},"typeVersion":2.1},{"id":"6068184b-bcc3-402b-97a3-0f64a71bbe37","name":"Merge Notifications","type":"n8n-nodes-base.merge","position":[2784,240],"parameters":{"mode":"combine","options":{},"combineBy":"combineAll"},"typeVersion":3.2},{"id":"f0ac2eae-85b2-4b90-ba8a-78202c29a01f","name":"Log Audit Trail","type":"n8n-nodes-base.code","position":[3008,240],"parameters":{"jsCode":"// Log Audit Trail\n// Captures comprehensive audit information for governance tracking\n\nconst items = $input.all();\nconst auditLogs = [];\n\nfor (const item of items) {\n  const timestamp = new Date().toISOString();\n  const riskLevel = item.json.riskLevel || 'unknown';\n  const approvalStatus = item.json.approvalStatus || item.json.status || 'pending';\n  const notificationType = item.json.notificationType || item.json.notification_type || 'none';\n  const governanceOutput = item.json;\n  \n  // Log to console for debugging\n  console.log('=== AUDIT TRAIL ENTRY ===');\n  console.log('Timestamp:', timestamp);\n  console.log('Risk Level:', riskLevel);\n  console.log('Approval Status:', approvalStatus);\n  console.log('Notification Type:', notificationType);\n  console.log('Full Governance Output:', JSON.stringify(governanceOutput, null, 2));\n  console.log('========================');\n  \n  // Create structured audit log entry\n  const auditEntry = {\n    timestamp: timestamp,\n    riskLevel: riskLevel,\n    approvalStatus: approvalStatus,\n    notificationType: notificationType,\n    governanceOutput: governanceOutput,\n    auditId: `audit-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n  };\n  \n  auditLogs.push(auditEntry);\n}\n\n// Return structured audit logs\nreturn auditLogs.map(log => ({ json: log }));"},"typeVersion":2},{"id":"8e023136-2b83-48be-b2f8-d51aeeaaab78","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1232,-384],"parameters":{"color":5,"width":640,"height":368,"content":"## Prerequisites\n- Slack workspace with bot token\n- Gmail or SMTP credentials\n- Basic n8n workflow knowledge\n## Use Cases\n- Automated periodic contract risk auditing for procurement teams\n- Compliance breach detection with instant escalation to legal\n## Customization\n- Replace simulated data with live contract database or webhook input\n## Benefits\n- Eliminates manual contract review with scheduled AI auditing"},"typeVersion":1},{"id":"29ef40a9-ed6c-4bc4-aad6-60b334d86f92","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[736,-272],"parameters":{"width":416,"height":256,"content":"## Setup Steps\n1. Set schedule trigger interval to match audit frequency requirements.\n2. Add OpenAI API credentials to all OpenAI Chat Model nodes.\n3. Configure Slack credentials and set target channel for risk notifications.\n4. Add Gmail/SMTP credentials to the Send Email Escalation node.\n5. Define risk thresholds in the Route by Risk Level rules node."},"typeVersion":1},{"id":"f3d22c16-0e96-44f9-8697-57b1d2aa8697","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[48,-272],"parameters":{"width":624,"height":240,"content":"## How It Works\nThis workflow automates contract governance auditing by deploying a multi-agent AI system that validates contracts, assesses risk, checks compliance, and routes alerts based on risk level. Designed for legal, procurement, and compliance teams, it eliminates manual contract review bottlenecks and ensures timely escalation of high-risk issues. A schedule trigger initiates the workflow, simulating a contract audit data input. A Contract Validation Agent performs initial validation via OpenAI, then passes results to a Governance Orchestration Agent, which delegates to Risk Assessment and Compliance Checker sub-agents. Risk scores are routed by level—low, medium, or high—triggering appropriate notifications via Slack or email escalation before logging the audit trail."},"typeVersion":1},{"id":"35852849-21a2-4dba-9bba-2fd27f88e197","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-80,48],"parameters":{"color":7,"width":1008,"height":784,"content":"## Contract Validation Agent\n**What** – Validates contract data using OpenAI with structured output parsing.\n**Why** – Ensures only well-formed, complete contracts proceed to governance review."},"typeVersion":1},{"id":"e0ecff6d-181a-4d67-a97c-ffd03ce0e704","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[1952,48],"parameters":{"color":7,"width":304,"height":784,"content":"## Route by Risk Level\n**What** – Directs flow to low, medium, or high-risk notification paths.\n**Why** – Ensures proportionate responses without manual intervention."},"typeVersion":1},{"id":"9ff81781-2fc2-4af3-b291-f8e1f11731c1","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[944,48],"parameters":{"color":7,"width":992,"height":784,"content":"## Governance Orchestration Agent\n**What** – Delegates to Risk Assessment and Compliance Checker sub-agents.\n**Why** – Centralises governance logic for modular, maintainable risk processing."},"typeVersion":1},{"id":"6bd6ec7b-2920-4995-8e95-47a5a5d54926","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[2288,48],"parameters":{"color":7,"width":928,"height":768,"content":"## Notifications, Escalation & Audit Trail\n**What** – Sends Slack alerts or escalation emails based on risk level\n**Why** – Ensures urgent findings are delivered immediately to the appropriate stakeholders "},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"b5d43d27-4ae5-410b-bb3a-7e5876f0951e","connections":{"Calculator Tool":{"ai_tool":[[{"node":"Governance Orchestrator Agent","type":"ai_tool","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Merge Notifications":{"main":[[{"node":"Log Audit Trail","type":"main","index":0}]]},"Route by Risk Level":{"main":[[{"node":"Prepare Low Risk Notification","type":"main","index":0}],[{"node":"Prepare Medium Risk Notification","type":"main","index":0}],[{"node":"Prepare High Risk Notification","type":"main","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Simulate Contract Audit Data","type":"main","index":0}]]},"Send Slack Notification":{"main":[[{"node":"Merge Notifications","type":"main","index":1}]]},"OpenAI Chat Model - Risk":{"ai_languageModel":[[{"node":"Risk Assessment Agent Tool","type":"ai_languageModel","index":0}]]},"Contract Validation Agent":{"main":[[{"node":"Governance Orchestrator Agent","type":"main","index":0}]]},"Risk Assessment Agent Tool":{"ai_tool":[[{"node":"Governance Orchestrator Agent","type":"ai_tool","index":0}]]},"Simulate Contract Audit Data":{"main":[[{"node":"Contract Validation Agent","type":"main","index":0}]]},"Compliance Checker Agent Tool":{"ai_tool":[[{"node":"Governance Orchestrator Agent","type":"ai_tool","index":0}]]},"Governance Orchestrator Agent":{"main":[[{"node":"Route by Risk Level","type":"main","index":0}]]},"Prepare Low Risk Notification":{"main":[[{"node":"Merge Notifications","type":"main","index":0}]]},"OpenAI Chat Model - Compliance":{"ai_languageModel":[[{"node":"Compliance Checker Agent Tool","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model - Governance":{"ai_languageModel":[[{"node":"Governance Orchestrator Agent","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model - Validation":{"ai_languageModel":[[{"node":"Contract Validation Agent","type":"ai_languageModel","index":0}]]},"Prepare High Risk Notification":{"main":[[{"node":"Send Email Escalation","type":"main","index":0}]]},"Structured Output Parser - Risk":{"ai_outputParser":[[{"node":"Risk Assessment Agent Tool","type":"ai_outputParser","index":0}]]},"Prepare Medium Risk Notification":{"main":[[{"node":"Send Slack Notification","type":"main","index":0}]]},"Structured Output Parser - Compliance":{"ai_outputParser":[[{"node":"Compliance Checker Agent Tool","type":"ai_outputParser","index":0}]]},"Structured Output Parser - Governance":{"ai_outputParser":[[{"node":"Governance Orchestrator Agent","type":"ai_outputParser","index":0}]]},"Structured Output Parser - Validation":{"ai_outputParser":[[{"node":"Contract Validation Agent","type":"ai_outputParser","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":31,"nodeTypes":{"n8n-nodes-base.set":{"count":4},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.emailSend":{"count":1},"n8n-nodes-base.stickyNote":{"count":7},"@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.toolCalculator":{"count":1},"@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":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using 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"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"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.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"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":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"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":1195,"icon":"fa:calculator","name":"@n8n/n8n-nodes-langchain.toolCalculator","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcalculator/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Other Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Calculator"},"iconData":{"icon":"calculator","type":"icon"},"displayName":"Calculator","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":35,"name":"Document Extraction"},{"id":49,"name":"AI Summarization"}],"image":[]}}