{"workflow":{"id":13700,"name":"Detect and enforce abuse cases with OpenAI, Slack, Gmail and Sheets","views":9,"recentViews":0,"totalViews":9,"createdAt":"2026-02-25T10:45:00.041Z","description":"## How It Works\nThis workflow automates platform trust and safety operations by deploying a multi-agent AI system that detects abuse signals, investigates behaviour, scores risk, checks policy compliance, and enforces actions automatically. Designed for platform safety teams, content moderation managers, and compliance officers, it eliminates manual triage delays and ensures high-severity violations are actioned immediately. An abuse signal webhook triggers behaviour analysis via OpenAI, classifying signals by severity. A routing node directs cases to a Governance Agent, which orchestrates Investigation, Risk Scoring, and Policy Compliance Checker sub-agents. Enforcement data is prepared, then routed by action type-logging to abuse records, alerting the security team via Slack, sending escalation emails, or triggering auto-enforcement actions based on threshold checks—before all outcomes are logged.\n\n## Setup Steps\n1. Configure Abuse Signal Webhook URL and authenticate incoming POST requests.\n2. Add OpenAI API credentials to all OpenAI Model nodes.\n3. Connect Google Sheets for abuse records and enforcement action logging.\n4. Configure Slack credentials and set security team alert channel.\n5. Add Gmail/SMTP credentials to Send Escalation Email node.\n\n## Prerequisites\n- Slack workspace with bot token\n- Gmail or SMTP credentials\n- Google Sheets for abuse and enforcement logging\n## Use Cases\n- Real-time abuse detection and auto-suspension on social platforms\n## Customization\n- Replace OpenAI with Anthropic Claude or NVIDIA NIM models\n## Benefits\n- Eliminates manual abuse triage with real-time AI signal processing","workflow":{"id":"VM-IiiZm7uZvmbPlnEzx1","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"Intelligent abuse detection and enforcement coordination system","tags":[],"nodes":[{"id":"6622d5cb-4630-467d-9a4b-91b7c9201028","name":"Abuse Signal Webhook","type":"n8n-nodes-base.webhook","position":[-128,480],"webhookId":"c359d272-86bc-46f5-88c8-7944d6fe1d96","parameters":{"path":"abuse-signal","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2.1},{"id":"d04b91db-4433-49fe-812e-e25c7c6b1750","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[96,480],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"riskThresholdHigh","type":"number","value":80},{"id":"id-2","name":"riskThresholdMedium","type":"number","value":50},{"id":"id-3","name":"autoActionThreshold","type":"number","value":30},{"id":"id-4","name":"slackChannel","type":"string","value":"<__PLACEHOLDER_VALUE__Slack channel ID for security alerts__>"},{"id":"id-5","name":"escalationEmail","type":"string","value":"<__PLACEHOLDER_VALUE__Email address for critical escalations__>"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"0ada2bf9-1ded-4b46-8835-dc5351e4a346","name":"Behavior Signal Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[320,480],"parameters":{"text":"={{ $json }}","options":{"systemMessage":"You are a Behavior Signal Validation Agent specialized in analyzing abuse indicators and behavioral patterns.\n\nYour task is to:\n1. Validate the structure and completeness of incoming abuse signal data\n2. Extract key behavioral indicators (user ID, action type, frequency, severity markers)\n3. Identify patterns suggesting abuse (spam, harassment, fraud, policy violations)\n4. Calculate preliminary risk score (0-100) based on signal characteristics\n5. Classify severity level (CRITICAL, HIGH, MEDIUM, LOW)\n6. Flag signals requiring immediate investigation\n7. Provide reasoning for risk assessment\n\nConsider: action frequency, user history patterns, content analysis, policy violation types, and impact scope.\n\nReturn structured output with validated signals and risk classification."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"11d3e909-f526-4bb8-a139-562bf636b9d5","name":"OpenAI Model - Behavior Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[272,704],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"07107c1f-4f54-4496-aeb6-9ec44c652aa6","name":"Behavior Signal Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[448,704],"parameters":{"jsonSchemaExample":"{\n  \"userId\": \"unique user identifier\",\n  \"signalType\": \"spam | harassment | fraud | policy_violation | other\",\n  \"actionType\": \"specific action taken\",\n  \"frequency\": \"number of occurrences\",\n  \"riskScore\": 0,\n  \"severityLevel\": \"CRITICAL | HIGH | MEDIUM | LOW\",\n  \"indicators\": [\"list of specific abuse indicators detected\"],\n  \"requiresInvestigation\": true,\n  \"reasoning\": \"detailed explanation of risk assessment\",\n  \"timestamp\": \"ISO timestamp\"\n}"},"typeVersion":1.3},{"id":"8021e348-3d4c-4423-b81a-e79b82fcf25b","name":"Route by Severity","type":"n8n-nodes-base.switch","position":[688,624],"parameters":{"rules":{"values":[{"outputKey":"Critical","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.severityLevel }}","rightValue":"CRITICAL"}]},"renameOutput":true},{"outputKey":"High","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.severityLevel }}","rightValue":"HIGH"}]},"renameOutput":true},{"outputKey":"Low Risk","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.severityLevel }}","rightValue":"MEDIUM"},{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.severityLevel }}","rightValue":"LOW"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra","renameFallbackOutput":"Unclassified"}},"typeVersion":3.4},{"id":"7b7c1656-97bb-40dc-8f3d-cb50bb127169","name":"Governance Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1336,416],"parameters":{"text":"={{ $json }}","options":{"systemMessage":"You are a Governance Coordination Agent responsible for orchestrating enforcement workflows for abuse cases.\n\nYour task is to:\n1. Assess enforcement requirements based on abuse severity and validated signals\n2. Coordinate specialized agent tools for investigation, risk scoring, and compliance checking\n3. Call Investigation Agent Tool for cases requiring deep pattern analysis\n4. Call Risk Scoring Agent Tool to refine risk assessment with additional context\n5. Call Policy Compliance Checker Tool to verify policy violations and enforcement rules\n6. Determine final enforcement action (warn, suspend, ban, escalate, monitor)\n7. Provide comprehensive reasoning for enforcement decisions\n8. Identify cases requiring human review or escalation\n\nConsider: abuse severity, user history, policy frameworks, investigation findings, and organizational risk tolerance.\n\nReturn structured enforcement action with detailed justification and coordination plan."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"358c14cb-0fee-48d1-a988-c7e16a3f8bf9","name":"OpenAI Model - Governance Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[912,640],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"b55430e1-a2d7-40f4-be4d-df803dc84d4c","name":"Governance Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1776,640],"parameters":{"jsonSchemaExample":"{\n  \"enforcementAction\": \"warn | suspend | ban | escalate | monitor\",\n  \"actionDuration\": \"duration if temporary action\",\n  \"priority\": \"CRITICAL | HIGH | MEDIUM | LOW\",\n  \"requiresHumanReview\": true,\n  \"investigationFindings\": \"summary of investigation results\",\n  \"refinedRiskScore\": 0,\n  \"policyViolations\": [\"list of specific policy violations\"],\n  \"coordinatedActions\": [\"list of actions taken by tools\"],\n  \"reasoning\": \"detailed justification for enforcement decision\",\n  \"escalationReason\": \"reason if escalation required\",\n  \"timestamp\": \"ISO timestamp\"\n}"},"typeVersion":1.3},{"id":"9f29e875-9e65-4027-a965-26a911adb8a2","name":"Investigation Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1040,640],"parameters":{"text":"={{ $fromAI(\"abuseData\", \"Abuse signal data and behavioral indicators for investigation\", \"json\") }}","options":{"systemMessage":"You are an Investigation Specialist Agent conducting deep analysis of abuse patterns and user behavior.\n\nYour task is to:\n1. Analyze behavioral patterns and abuse indicators\n2. Cross-reference user history and previous violations\n3. Examine action sequences and timing patterns\n4. Identify coordinated abuse or systematic violations\n5. Assess user intent and malicious behavior indicators\n6. Determine investigation findings and evidence quality\n7. Provide detailed investigation report with supporting evidence\n\nConsider: pattern clustering, temporal analysis, cross-user correlations, and policy violation severity.\n\nReturn structured investigation findings with evidence and recommendations."},"hasOutputParser":true,"toolDescription":"Conducts deep investigation of abuse patterns including behavioral analysis, user history verification, and pattern detection"},"typeVersion":3},{"id":"4ee9fb2e-c2fd-4a0b-bd56-4b9e5b937d1a","name":"OpenAI Model - Investigation Tool","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[992,848],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"6e9b74d8-09e7-40e6-9e1e-f1066824fc65","name":"Investigation Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1168,848],"parameters":{"jsonSchemaExample":"{\n  \"investigationStatus\": \"completed | requires_escalation\",\n  \"behavioralPatterns\": [\"list of detected patterns\"],\n  \"userHistory\": \"summary of user violation history\",\n  \"evidenceQuality\": \"high | medium | low\",\n  \"coordinatedAbuse\": true,\n  \"maliciousIntent\": \"assessment of user intent\",\n  \"findings\": \"detailed investigation findings\",\n  \"recommendations\": [\"list of recommended actions\"]\n}"},"typeVersion":1.3},{"id":"41f435d3-60a5-4fdc-b1de-0cab8b32edd3","name":"Risk Scoring Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1328,640],"parameters":{"text":"={{ $fromAI(\"abuseData\", \"Abuse data and investigation findings for risk scoring\", \"json\") }}","options":{"systemMessage":"You are a Risk Scoring Specialist Agent providing advanced risk assessment for abuse cases.\n\nYour task is to:\n1. Analyze abuse characteristics and investigation findings\n2. Apply multi-factor risk scoring model (severity, frequency, impact, user history)\n3. Weight risk factors based on organizational policies\n4. Calculate refined risk score (0-100) with confidence level\n5. Identify primary risk drivers and contributing factors\n6. Provide risk score justification and sensitivity analysis\n7. Recommend risk mitigation strategies\n\nConsider: abuse context, historical patterns, investigation evidence, and organizational risk thresholds.\n\nReturn structured risk assessment with detailed scoring breakdown."},"hasOutputParser":true,"toolDescription":"Calculates refined risk scores using multi-factor analysis and investigation findings"},"typeVersion":3},{"id":"c81dc03d-2641-4d62-9bb9-5f299e626c16","name":"OpenAI Model - Risk Scoring Tool","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1360,848],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"fe37c063-d3c3-4897-9692-0e73a990def2","name":"Risk Scoring Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1552,848],"parameters":{"jsonSchemaExample":"{\n  \"refinedRiskScore\": 0,\n  \"confidenceLevel\": 0.95,\n  \"riskLevel\": \"CRITICAL | HIGH | MEDIUM | LOW\",\n  \"primaryRiskDrivers\": [\"list of main risk factors\"],\n  \"riskFactorWeights\": {\"severity\": 0.4, \"frequency\": 0.3, \"impact\": 0.2, \"history\": 0.1},\n  \"mitigationStrategies\": [\"list of recommended mitigation actions\"],\n  \"reasoning\": \"detailed risk scoring justification\"\n}"},"typeVersion":1.3},{"id":"17e17765-a6d5-447d-86c4-ac4f3e3152be","name":"Policy Compliance Checker Tool","type":"@n8n/n8n-nodes-langchain.toolCode","position":[1616,640],"parameters":{"jsCode":"const abuseData = $fromAI(\"abuseData\", \"Abuse case data for policy compliance verification\", \"json\");\nconst policyRules = $fromAI(\"policyRules\", \"Organizational policy rules for enforcement\", \"json\", {\"autoSuspendThreshold\": 3, \"autoBanThreshold\": 5, \"warningBeforeSuspend\": true});\n\ntry {\n  const data = typeof abuseData === \"string\" ? JSON.parse(abuseData) : abuseData;\n  const rules = typeof policyRules === \"string\" ? JSON.parse(policyRules) : policyRules;\n  \n  // Policy compliance checks\n  const checks = {\n    withinAutoSuspendThreshold: (data.violationCount || 0) < (rules.autoSuspendThreshold || 3),\n    withinAutoBanThreshold: (data.violationCount || 0) < (rules.autoBanThreshold || 5),\n    warningIssued: data.previousWarnings && data.previousWarnings.length > 0,\n    requiresWarningFirst: rules.warningBeforeSuspend && !data.previousWarnings,\n    severityCompliance: data.severityLevel !== \"CRITICAL\" || data.violationCount >= 1,\n    noActiveAppeal: !data.activeAppeal || data.activeAppeal === false\n  };\n  \n  const allChecksPassed = Object.values(checks).every(check => check === true);\n  const failedChecks = Object.keys(checks).filter(key => checks[key] === false);\n  \n  // Determine recommended action based on policy\n  let recommendedAction = \"monitor\";\n  if (data.violationCount >= rules.autoBanThreshold) {\n    recommendedAction = \"ban\";\n  } else if (data.violationCount >= rules.autoSuspendThreshold) {\n    recommendedAction = \"suspend\";\n  } else if (data.severityLevel === \"CRITICAL\") {\n    recommendedAction = \"escalate\";\n  } else if (!data.previousWarnings || data.previousWarnings.length === 0) {\n    recommendedAction = \"warn\";\n  }\n  \n  const result = {\n    complianceStatus: allChecksPassed ? \"COMPLIANT\" : \"NON_COMPLIANT\",\n    checks: checks,\n    failedChecks: failedChecks,\n    policyViolations: failedChecks.map(check => `Failed: ${check}`),\n    recommendedAction: recommendedAction,\n    requiresHumanReview: !allChecksPassed || data.severityLevel === \"CRITICAL\",\n    verificationDate: new Date().toISOString()\n  };\n  \n  return JSON.stringify(result, null, 2);\n  \n} catch (error) {\n  return JSON.stringify({\n    complianceStatus: \"ERROR\",\n    error: \"Policy compliance check failed\",\n    message: error.message\n  });\n}","description":"Verifies policy compliance and checks abuse cases against organizational enforcement rules"},"typeVersion":1.3},{"id":"372e8e08-f9c5-4046-a149-0e02f3e5800c","name":"Prepare Enforcement Data","type":"n8n-nodes-base.code","position":[1952,416],"parameters":{"jsCode":"const governanceOutput = $input.first().json;\nconst behaviorSignal = $(\"Behavior Signal Agent\").first().json;\nconst config = $(\"Workflow Configuration\").first().json;\n\n// Prepare comprehensive enforcement data\nconst enforcementData = {\n  // Original signal data\n  userId: behaviorSignal.userId,\n  signalType: behaviorSignal.signalType,\n  actionType: behaviorSignal.actionType,\n  \n  // Governance decision\n  enforcementAction: governanceOutput.enforcementAction,\n  actionDuration: governanceOutput.actionDuration,\n  priority: governanceOutput.priority,\n  \n  // Risk assessment\n  initialRiskScore: behaviorSignal.riskScore,\n  refinedRiskScore: governanceOutput.refinedRiskScore,\n  severityLevel: behaviorSignal.severityLevel,\n  \n  // Investigation and compliance\n  investigationFindings: governanceOutput.investigationFindings,\n  policyViolations: governanceOutput.policyViolations,\n  coordinatedActions: governanceOutput.coordinatedActions,\n  \n  // Decision reasoning\n  reasoning: governanceOutput.reasoning,\n  requiresHumanReview: governanceOutput.requiresHumanReview,\n  escalationReason: governanceOutput.escalationReason,\n  \n  // Metadata\n  timestamp: new Date().toISOString(),\n  workflowId: $workflow.id,\n  executionId: $execution.id\n};\n\nreturn [{ json: enforcementData }];"},"typeVersion":2},{"id":"a7210b06-1249-4505-932d-c01fbe1b3708","name":"Route Enforcement Action","type":"n8n-nodes-base.switch","position":[2176,384],"parameters":{"rules":{"values":[{"outputKey":"Log Only","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcementAction }}","rightValue":"monitor"}]},"renameOutput":true},{"outputKey":"Alert Team","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcementAction }}","rightValue":"warn"},{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcementAction }}","rightValue":"suspend"}]},"renameOutput":true},{"outputKey":"Escalate","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcementAction }}","rightValue":"ban"},{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcementAction }}","rightValue":"escalate"},{"operator":{"type":"boolean","operation":"true"},"leftValue":"={{ $json.requiresHumanReview }}","rightValue":true}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra","renameFallbackOutput":"Default"}},"typeVersion":3.4},{"id":"084c4a61-c3d3-4c76-b1e6-689eba75053b","name":"Log to Abuse Records","type":"n8n-nodes-base.dataTable","position":[2400,216],"parameters":{"columns":{"value":{"userId":"={{ $json.userId }}","riskScore":"={{ $json.refinedRiskScore }}","timestamp":"={{ $json.timestamp }}","actionType":"={{ $json.actionType }}","signalType":"={{ $json.signalType }}","severityLevel":"={{ $json.severityLevel }}","enforcementAction":"={{ $json.enforcementAction }}"},"mappingMode":"defineBelow"},"options":{},"dataTableId":{"__rl":true,"mode":"name","value":"AbuseRecords"}},"typeVersion":1.1},{"id":"af5c831d-c980-4e03-b29c-223a7e7924d1","name":"Alert Security Team","type":"n8n-nodes-base.slack","position":[2400,408],"webhookId":"0663fdc5-4288-48de-b957-c3c6ba88748a","parameters":{"text":"=🚨 *ABUSE ALERT - {{ $json.priority }} Priority*\n\n*User ID:* {{ $json.userId }}\n*Signal Type:* {{ $json.signalType }}\n*Enforcement Action:* {{ $json.enforcementAction }}\n*Severity:* {{ $json.severityLevel }}\n*Risk Score:* {{ $json.refinedRiskScore }}/100\n\n*Policy Violations:*\n{{ $json.policyViolations.join(\"\\n• \") }}\n\n*Investigation Findings:*\n{{ $json.investigationFindings }}\n\n*Coordinated Actions:*\n{{ $json.coordinatedActions.map((action, i) => `${i + 1}. ${action}`).join(\"\\n\") }}\n\n*Reasoning:*\n{{ $json.reasoning }}\n\n{{ $json.requiresHumanReview ? \"⚠️ *REQUIRES HUMAN REVIEW*\" : \"\" }}\n\n_Detected at {{ $json.timestamp }}_","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $('Workflow Configuration').first().json.slackChannel }}"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"d34b1ayEBbvZm2lT","name":"Slack account"}},"typeVersion":2.4},{"id":"b5dec7ec-ac36-4ce9-8b92-cf21b213f344","name":"Send Escalation Email","type":"n8n-nodes-base.emailSend","position":[2400,608],"webhookId":"d1809804-fe6a-468a-822a-0109c8ad0707","parameters":{"html":"=<!DOCTYPE html>\n<html>\n<head>\n  <style>\n    body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }\n    .container { max-width: 800px; margin: 0 auto; padding: 20px; }\n    .header { background: {{ $json.priority === \"CRITICAL\" ? \"#dc3545\" : \"#fd7e14\" }}; color: white; padding: 30px; border-radius: 8px; margin-bottom: 30px; }\n    .header h1 { margin: 0; font-size: 28px; }\n    .section { background: #f8f9fa; padding: 20px; border-radius: 8px; margin-bottom: 20px; border-left: 4px solid {{ $json.priority === \"CRITICAL\" ? \"#dc3545\" : \"#fd7e14\" }}; }\n    .section h2 { color: {{ $json.priority === \"CRITICAL\" ? \"#dc3545\" : \"#fd7e14\" }}; margin-top: 0; }\n    .alert { background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 15px 0; border-radius: 4px; }\n    table { width: 100%; border-collapse: collapse; }\n    td { padding: 8px; border: 1px solid #ddd; }\n    .label { font-weight: bold; background: #e9ecef; }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <div class=\"header\">\n      <h1>🚨 Abuse Escalation Required</h1>\n      <p>{{ $json.priority }} Priority - Immediate Action Needed</p>\n    </div>\n\n    <div class=\"section\">\n      <h2>Case Details</h2>\n      <table>\n        <tr><td class=\"label\">User ID:</td><td>{{ $json.userId }}</td></tr>\n        <tr><td class=\"label\">Signal Type:</td><td>{{ $json.signalType }}</td></tr>\n        <tr><td class=\"label\">Action Type:</td><td>{{ $json.actionType }}</td></tr>\n        <tr><td class=\"label\">Enforcement Action:</td><td>{{ $json.enforcementAction }}</td></tr>\n        <tr><td class=\"label\">Severity Level:</td><td>{{ $json.severityLevel }}</td></tr>\n        <tr><td class=\"label\">Risk Score:</td><td>{{ $json.refinedRiskScore }}/100</td></tr>\n      </table>\n    </div>\n\n    <div class=\"section\">\n      <h2>Policy Violations</h2>\n      <ul>\n        {{ $json.policyViolations.map(v => `<li>${v}</li>`).join(\"\") }}\n      </ul>\n    </div>\n\n    <div class=\"section\">\n      <h2>Investigation Findings</h2>\n      <p>{{ $json.investigationFindings }}</p>\n    </div>\n\n    <div class=\"section\">\n      <h2>Coordinated Actions</h2>\n      <ol>\n        {{ $json.coordinatedActions.map(a => `<li>${a}</li>`).join(\"\") }}\n      </ol>\n    </div>\n\n    <div class=\"section\">\n      <h2>Decision Reasoning</h2>\n      <p>{{ $json.reasoning }}</p>\n    </div>\n\n    {{ $json.escalationReason ? `<div class=\"alert\">\n      <strong>⚠️ ESCALATION REASON:</strong><br>\n      ${$json.escalationReason}\n    </div>` : \"\" }}\n\n    <p style=\"color: #666; font-size: 12px; margin-top: 30px;\">Generated: {{ $json.timestamp }}</p>\n  </div>\n</body>\n</html>","options":{},"subject":"={{ $json.priority }} Priority Abuse Escalation: {{ $json.userId }} - {{ $json.enforcementAction }}","toEmail":"={{ $('Workflow Configuration').first().json.escalationEmail }}","fromEmail":"<__PLACEHOLDER_VALUE__Sender email address__>"},"typeVersion":2.1},{"id":"b606545b-0c3f-44da-a1e9-7d87959879ab","name":"Log Enforcement Actions","type":"n8n-nodes-base.dataTable","position":[2624,576],"parameters":{"columns":{"value":{"userId":"={{ $json.userId }}","priority":"={{ $json.priority }}","riskScore":"={{ $json.refinedRiskScore }}","timestamp":"={{ $json.timestamp }}","executionId":"={{ $json.executionId }}","severityLevel":"={{ $json.severityLevel }}","enforcementAction":"={{ $json.enforcementAction }}","requiresHumanReview":"={{ $json.requiresHumanReview }}"},"mappingMode":"defineBelow"},"options":{},"dataTableId":{"__rl":true,"mode":"name","value":"EnforcementActions"}},"typeVersion":1.1},{"id":"bbb53770-398c-4e5a-9fe3-8d0659db18b2","name":"Check Auto-Action Threshold","type":"n8n-nodes-base.if","position":[2384,832],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"id-1","operator":{"type":"number","operation":"lte"},"leftValue":"={{ $json.riskScore }}","rightValue":"={{ $('Workflow Configuration').first().json.autoActionThreshold }}"}]}},"typeVersion":2.3},{"id":"8fc647dc-ba1b-4aa9-b2e1-5cc6cfe7b470","name":"Format Auto-Action","type":"n8n-nodes-base.set","position":[2624,784],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"userId","type":"string","value":"={{ $json.userId }}"},{"id":"id-2","name":"enforcementAction","type":"string","value":"auto_monitor"},{"id":"id-3","name":"priority","type":"string","value":"LOW"},{"id":"id-4","name":"severityLevel","type":"string","value":"={{ $json.severityLevel }}"},{"id":"id-5","name":"refinedRiskScore","type":"number","value":"={{ $json.riskScore }}"},{"id":"id-6","name":"requiresHumanReview","type":"boolean","value":false},{"id":"id-7","name":"timestamp","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-8","name":"executionId","type":"string","value":"={{ $execution.id }}"}]}},"typeVersion":3.4},{"id":"8ef8bf39-1d09-4dca-a8bc-7df52881d228","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1104,-240],"parameters":{"color":4,"width":480,"height":384,"content":"## Prerequisites\n- Slack workspace with bot token\n- Gmail or SMTP credentials\n- Google Sheets for abuse and enforcement logging\n## Use Cases\n- Real-time abuse detection and auto-suspension on social platforms\n## Customization\n- Replace OpenAI with Anthropic Claude or NVIDIA NIM models\n## Benefits\n- Eliminates manual abuse triage with real-time AI signal processing"},"typeVersion":1},{"id":"6c16542f-accf-4708-a5bc-f99c409b5060","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[656,-96],"parameters":{"width":416,"height":256,"content":"## Setup Steps\n1. Configure Abuse Signal Webhook URL and authenticate incoming POST requests.\n2. Add OpenAI API credentials to all OpenAI Model nodes.\n3. Connect Google Sheets for abuse records and enforcement action logging.\n4. Configure Slack credentials and set security team alert channel.\n5. Add Gmail/SMTP credentials to Send Escalation Email node."},"typeVersion":1},{"id":"69196459-3dab-467a-b3a8-8c52f21b13ad","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[0,-128],"parameters":{"width":624,"height":272,"content":"## How It Works\nThis workflow automates platform trust and safety operations by deploying a multi-agent AI system that detects abuse signals, investigates behaviour, scores risk, checks policy compliance, and enforces actions automatically. Designed for platform safety teams, content moderation managers, and compliance officers, it eliminates manual triage delays and ensures high-severity violations are actioned immediately. An abuse signal webhook triggers behaviour analysis via OpenAI, classifying signals by severity. A routing node directs cases to a Governance Agent, which orchestrates Investigation, Risk Scoring, and Policy Compliance Checker sub-agents. Enforcement data is prepared, then routed by action type-logging to abuse records, alerting the security team via Slack, sending escalation emails, or triggering auto-enforcement actions based on threshold checks—before all outcomes are logged."},"typeVersion":1},{"id":"ab598d84-081f-421c-ac16-0c357f12c2fb","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[624,304],"parameters":{"color":7,"height":800,"content":"## Route by Severity\n**What** – Directs cases to appropriate paths.\n**Why** – Prevents low-priority signals from consuming enforcement resources."},"typeVersion":1},{"id":"2925a972-0556-48a5-a41f-17759fa22f7a","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-176,304],"parameters":{"color":7,"width":784,"height":800,"content":"## Behavior Signal Agent\n**What** – Classifies abuse signals by severity using OpenAI.\n**Why** – Ensures accurate triage before routing to governance review."},"typeVersion":1},{"id":"91640067-1ee9-4dbb-95a6-beb7fcb22e9d","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[912,288],"parameters":{"color":7,"width":976,"height":800,"content":"## Governance Agent\n**What** – Orchestrates sub-agents.\n**Why** – Centralises enforcement logic for consistent, auditable decision-making."},"typeVersion":1},{"id":"d82feaea-ccb2-441e-9f27-7c9becd89f99","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[1920,208],"parameters":{"color":7,"width":416,"height":880,"content":"## Prepare & Route Enforcement Action\n**What** – Formats enforcement data and routes by action type.\n**Why** – Ensures each case receives the correct response—log, alert, email, or auto-action."},"typeVersion":1},{"id":"095f2a93-3a35-4d2c-90d3-bb0a3cb6aa05","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[2352,80],"parameters":{"color":7,"width":464,"height":1040,"content":"## Auto-Action Threshold Check\n**What** – Evaluates whether automated enforcement should trigger.\n**Why** – Prevents over-enforcement while ensuring high-risk cases act without delay."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"92a071ea-b23c-4d5b-b3f3-a47105a2ec7d","connections":{"Governance Agent":{"main":[[{"node":"Prepare Enforcement Data","type":"main","index":0}]]},"Route by Severity":{"main":[[{"node":"Governance Agent","type":"main","index":0}],[{"node":"Governance Agent","type":"main","index":0}],[{"node":"Check Auto-Action Threshold","type":"main","index":0}]]},"Format Auto-Action":{"main":[[{"node":"Log Enforcement Actions","type":"main","index":0}]]},"Alert Security Team":{"main":[[{"node":"Log Enforcement Actions","type":"main","index":0}]]},"Abuse Signal Webhook":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Log to Abuse Records":{"main":[[{"node":"Log Enforcement Actions","type":"main","index":0}]]},"Behavior Signal Agent":{"main":[[{"node":"Route by Severity","type":"main","index":0}]]},"Send Escalation Email":{"main":[[{"node":"Log Enforcement Actions","type":"main","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Behavior Signal Agent","type":"main","index":0}]]},"Risk Scoring Agent Tool":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"Governance Output Parser":{"ai_outputParser":[[{"node":"Governance Agent","type":"ai_outputParser","index":0}]]},"Investigation Agent Tool":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"Prepare Enforcement Data":{"main":[[{"node":"Route Enforcement Action","type":"main","index":0}]]},"Route Enforcement Action":{"main":[[{"node":"Log to Abuse Records","type":"main","index":0}],[{"node":"Alert Security Team","type":"main","index":0}],[{"node":"Send Escalation Email","type":"main","index":0}]]},"Risk Scoring Output Parser":{"ai_outputParser":[[{"node":"Risk Scoring Agent Tool","type":"ai_outputParser","index":0}]]},"Check Auto-Action Threshold":{"main":[[{"node":"Format Auto-Action","type":"main","index":0}],[{"node":"Log Enforcement Actions","type":"main","index":0}]]},"Investigation Output Parser":{"ai_outputParser":[[{"node":"Investigation Agent Tool","type":"ai_outputParser","index":0}]]},"Behavior Signal Output Parser":{"ai_outputParser":[[{"node":"Behavior Signal Agent","type":"ai_outputParser","index":0}]]},"OpenAI Model - Behavior Agent":{"ai_languageModel":[[{"node":"Behavior Signal Agent","type":"ai_languageModel","index":0}]]},"Policy Compliance Checker Tool":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"OpenAI Model - Governance Agent":{"ai_languageModel":[[{"node":"Governance Agent","type":"ai_languageModel","index":0}]]},"OpenAI Model - Risk Scoring Tool":{"ai_languageModel":[[{"node":"Risk Scoring Agent Tool","type":"ai_languageModel","index":0}]]},"OpenAI Model - Investigation Tool":{"ai_languageModel":[[{"node":"Investigation Agent Tool","type":"ai_languageModel","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":32,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.switch":{"count":2},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.dataTable":{"count":2},"n8n-nodes-base.emailSend":{"count":1},"n8n-nodes-base.stickyNote":{"count":8},"@n8n/n8n-nodes-langchain.agent":{"count":2},"@n8n/n8n-nodes-langchain.toolCode":{"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":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","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/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/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"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/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"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/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/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"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/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/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.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"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":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"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/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"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/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/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"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/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/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/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"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/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-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"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":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":1197,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.toolCode","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Code Tool"},"iconData":{"icon":"code","type":"icon"},"displayName":"Code Tool","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"}]},{"id":1315,"icon":"fa:table","name":"n8n-nodes-base.dataTable","codex":{"data":{"alias":["data","table","knowledge","data table","table","sheet","database","data base","mysql","postgres","postgresql","airtable","supabase","noco","notion"],"details":"Data table","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/"}]},"categories":["Core Nodes","Development"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\",\"transform\"]","defaults":{"name":"Data table"},"iconData":{"icon":"table","type":"icon"},"displayName":"Data table","typeVersion":1,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":29,"name":"SecOps"},{"id":49,"name":"AI Summarization"}],"image":[]}}