{"workflow":{"id":13447,"name":"Moderate and govern user content with OpenAI GPT-4o, Slack and Gmail","views":23,"recentViews":0,"totalViews":23,"createdAt":"2026-02-17T04:25:34.518Z","description":"\n## How It Works\nThis workflow automates end-to-end AI-driven content moderation for platforms managing user-generated content, including marketplaces, communities, and enterprise systems. It is designed for product, trust & safety, and governance teams seeking scalable, policy-aligned enforcement without subjective scoring. The workflow validates structured review, goal, and feedback data using a Performance Signal Agent that standardizes moderation signals and removes ambiguity. A Governance Agent then orchestrates policy enforcement, eligibility checks, escalation logic, and audit preparation. Content enters via webhook, is classified, validated, and routed by action type (approve, flag, escalate). Enforcement logic determines whether to store clean content, flag violations, or trigger escalation emails and team notifications. All actions are logged for traceability and compliance. This template solves inconsistent moderation decisions, lack of structured governance controls, and manual escalation overhead by embedding deterministic checkpoints, structured outputs, and audit-ready logging into a single automated pipeline.\n\n## Setup Steps\n1. Connect OpenAI API credentials for AI agents.\n2. Configure Google Sheets or database for logging.\n3. Connect Gmail for escalation emails.\n4. Define moderation policies and routing rules.\n5. Activate webhook and test sample content.\n\n## Prerequisites\nn8n account, OpenAI API key, Google Sheets or DB access, Gmail credentials, defined moderation policies.\n## Use Cases\nMarketplace listing moderation, enterprise HR review screening\n## Customization\nAdjust policy rules, add risk scoring, integrate Slack instead of Gmail\n## Benefits\nImproves moderation accuracy, reduces manual review, enforces governance consistency\n","workflow":{"id":"Ecthke7HldQmhEnT50WMp","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"AI-driven content moderation and governance workflow","tags":[],"nodes":[{"id":"d43ed7b5-c6e1-4504-af69-9d2de875d01f","name":"Content Moderation Webhook","type":"n8n-nodes-base.webhook","position":[-448,288],"webhookId":"cfcb342e-e75a-49b9-ba92-0561796eded2","parameters":{"path":"content-moderation","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2.1},{"id":"71dc6ee9-ecb5-4125-8a17-9456321ef5e3","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[-224,288],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"moderationThreshold","type":"number","value":0.75},{"id":"id-2","name":"escalationEmail","type":"string","value":"<__PLACEHOLDER_VALUE__Escalation email address__>"},{"id":"id-3","name":"slackChannelId","type":"string","value":"<__PLACEHOLDER_VALUE__Slack channel ID for moderation alerts__>"},{"id":"id-4","name":"severityLevels","type":"array","value":"[\"LOW\", \"MEDIUM\", \"HIGH\", \"CRITICAL\"]"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"f1535304-ab85-4d27-9c92-bc7b6ea20d12","name":"Content Signal Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[0,288],"parameters":{"text":"=Content to validate: {{ $json.body.content }}\nUser ID: {{ $json.body.userId }}\nContent Type: {{ $json.body.contentType }}\nModeration Flags: {{ JSON.stringify($json.body.moderationFlags) }}","options":{"systemMessage":"You are a Content Signal Validation Agent specialized in analyzing moderation flags and content signals.\n\nYour task is to:\n1. Analyze the provided content and moderation flags\n2. Validate if the flags are accurate and justified\n3. Assess the severity level (LOW, MEDIUM, HIGH, CRITICAL)\n4. Determine if the content violates community guidelines\n5. Provide a confidence score (0-1) for your assessment\n6. Return structured validation results with clear reasoning\n\nValidation Status Options:\n- VALID: Content passes all checks\n- FLAGGED: Content requires governance review\n- SUSPICIOUS: Unclear signals, needs human review\n\nBe thorough and consider context, intent, and potential false positives."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"fe8c2b1a-be77-42ca-baf2-2e2551c42bca","name":"OpenAI Model - Content Signal","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[8,512],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"e10aa0d2-7486-4ecd-b252-ebc34055b40e","name":"Structured Output - Content Signal","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[136,512],"parameters":{"jsonSchemaExample":"{\n  \"validationStatus\": \"VALID\",\n  \"severityLevel\": \"LOW\",\n  \"confidenceScore\": 0.95,\n  \"violationTypes\": [],\n  \"reasoning\": \"Content analysis reasoning here\",\n  \"requiresGovernanceReview\": false\n}"},"typeVersion":1.3},{"id":"118e87c2-eb1a-4b4b-806b-8a3d0f2fec33","name":"Route by Validation Status","type":"n8n-nodes-base.switch","position":[352,272],"parameters":{"rules":{"values":[{"outputKey":"Valid","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.validationStatus }}","rightValue":"VALID"}]},"renameOutput":true},{"outputKey":"Flagged","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.validationStatus }}","rightValue":"FLAGGED"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra","renameFallbackOutput":"Suspicious"}},"typeVersion":3.4},{"id":"4da219ec-2463-4e97-a6f6-a0eabe22bc30","name":"Governance Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1000,464],"parameters":{"text":"=Flagged Content Data:\nContent: {{ $json.body.content }}\nUser ID: {{ $json.body.userId }}\nValidation Results: {{ JSON.stringify($json.output) }}\nSeverity: {{ $json.output.severityLevel }}\nViolation Types: {{ JSON.stringify($json.output.violationTypes) }}","options":{"systemMessage":"You are a Governance Orchestration Agent responsible for coordinating content moderation reviews, appeals, and enforcement actions.\n\nYour task is to:\n1. Analyze flagged content and validation results\n2. Determine the appropriate governance action (REVIEW, APPEAL, ENFORCE)\n3. Call the appropriate specialized agent tool:\n   - Review Agent Tool: For detailed content review and policy assessment\n   - Appeals Agent Tool: For processing user appeals and reconsideration\n   - Enforcement Agent Tool: For determining and executing enforcement actions\n4. Coordinate multi-step governance workflows\n5. Return structured governance decisions with action type and reasoning\n\nAction Types:\n- REVIEW: Content needs detailed policy review\n- APPEAL: User appeal requires processing\n- ENFORCE: Enforcement action required\n- ESCALATE: Human oversight needed\n\nAlways provide clear reasoning and ensure compliance with platform policies."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"79f1d1c8-add3-4109-97ff-30cc7bb84faa","name":"OpenAI Model - Governance","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[576,688],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.3},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"1df010bf-6c63-4312-a2d2-dfcd987fa9c5","name":"Structured Output - Governance","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1696,704],"parameters":{"jsonSchemaExample":"{\n  \"actionType\": \"ENFORCE\",\n  \"enforcementAction\": \"CONTENT_REMOVAL\",\n  \"severityLevel\": \"HIGH\",\n  \"requiresEscalation\": true,\n  \"reasoning\": \"Governance decision reasoning\",\n  \"nextSteps\": [\"Action 1\", \"Action 2\"],\n  \"complianceNotes\": \"Compliance considerations\"\n}"},"typeVersion":1.3},{"id":"f359552f-05e5-4ad0-94a3-ece9383278bf","name":"Review Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[704,688],"parameters":{"text":"={{ $fromAI(\"contentData\", \"Content and validation data for review\", \"json\") }}","options":{"systemMessage":"You are a Content Review Specialist Agent focused on detailed policy assessment and content evaluation.\n\nYour task is to:\n1. Conduct thorough content review against platform policies\n2. Assess context, intent, and potential harm\n3. Identify specific policy violations\n4. Determine appropriate review outcomes\n5. Provide detailed reasoning for decisions\n6. Return structured review results\n\nReview Outcomes:\n- APPROVE: Content is acceptable\n- RESTRICT: Content needs restrictions (age-gate, warning)\n- REMOVE: Content violates policies\n- ESCALATE: Requires human review\n\nConsider nuance, context, and proportionality in all decisions."},"hasOutputParser":true,"toolDescription":"Conducts detailed content review and policy assessment for flagged content"},"typeVersion":3},{"id":"23910949-ef48-45f2-bd78-740e79a3a535","name":"OpenAI Model - Review Tool","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[656,896],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"ab2e9d0e-4eac-4187-bbfb-f0cd30c0cb54","name":"Structured Output - Review Tool","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[816,896],"parameters":{"jsonSchemaExample":"{\n  \"reviewOutcome\": \"REMOVE\",\n  \"policyViolations\": [\"Violation 1\", \"Violation 2\"],\n  \"contextualFactors\": \"Context analysis\",\n  \"reasoning\": \"Review reasoning\",\n  \"recommendedAction\": \"Recommended next steps\"\n}"},"typeVersion":1.3},{"id":"7e868fce-ca0b-4955-a12f-fcb58cbcb5e5","name":"Appeals Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[992,688],"parameters":{"text":"={{ $fromAI(\"appealData\", \"User appeal data and original decision\", \"json\") }}","options":{"systemMessage":"You are an Appeals Processing Agent specialized in reviewing user appeals and reconsideration requests.\n\nYour task is to:\n1. Review user appeals against original moderation decisions\n2. Assess new evidence or context provided\n3. Determine if original decision should be upheld or overturned\n4. Evaluate appeal validity and user arguments\n5. Provide fair and balanced appeal outcomes\n6. Return structured appeal decisions\n\nAppeal Outcomes:\n- UPHELD: Original decision stands\n- OVERTURNED: Decision reversed, content restored\n- MODIFIED: Partial reversal with conditions\n- ESCALATE: Requires senior review\n\nEnsure fairness, transparency, and consistency in all appeal decisions."},"hasOutputParser":true,"toolDescription":"Processes user appeals and reconsideration requests for moderation decisions"},"typeVersion":3},{"id":"b7a53312-6676-4ba2-ae61-1b99c822d75c","name":"OpenAI Model - Appeals Tool","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[992,896],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"f9e3952a-02ad-45d7-bf45-4c83911b73fb","name":"Structured Output - Appeals Tool","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1152,896],"parameters":{"jsonSchemaExample":"{\n  \"appealOutcome\": \"UPHELD\",\n  \"originalDecisionValid\": true,\n  \"newEvidenceConsidered\": \"Evidence summary\",\n  \"reasoning\": \"Appeal decision reasoning\",\n  \"userNotification\": \"Message to user\"\n}"},"typeVersion":1.3},{"id":"3c9cd788-5977-47f7-b6a2-769daca995ae","name":"Enforcement Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1408,704],"parameters":{"text":"={{ $fromAI(\"enforcementData\", \"Content data and enforcement requirements\", \"json\") }}","options":{"systemMessage":"You are an Enforcement Action Agent responsible for determining and coordinating enforcement measures.\n\nYour task is to:\n1. Determine appropriate enforcement actions based on violations\n2. Consider severity, user history, and platform policies\n3. Coordinate enforcement escalation when needed\n4. Apply proportional and consistent enforcement\n5. Track enforcement actions for compliance\n6. Return structured enforcement decisions\n\nEnforcement Actions:\n- WARNING: Issue warning to user\n- CONTENT_REMOVAL: Remove violating content\n- ACCOUNT_RESTRICTION: Temporary restrictions\n- ACCOUNT_SUSPENSION: Suspend account\n- ACCOUNT_BAN: Permanent ban\n- ESCALATE: Requires legal/compliance review\n\nEnsure all enforcement actions are justified, documented, and compliant with policies."},"hasOutputParser":true,"toolDescription":"Determines and executes enforcement actions for policy violations"},"typeVersion":3},{"id":"c94831a4-3142-4df7-9024-bcda78054c36","name":"OpenAI Model - Enforcement Tool","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1424,912],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"dda30abe-9858-4fe6-8d7b-7ae417a83785","name":"Structured Output - Enforcement Tool","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1600,912],"parameters":{"jsonSchemaExample":"{\n  \"enforcementAction\": \"CONTENT_REMOVAL\",\n  \"severityJustification\": \"Severity reasoning\",\n  \"userImpact\": \"Impact on user\",\n  \"escalationRequired\": true,\n  \"complianceNotes\": \"Compliance documentation\",\n  \"reasoning\": \"Enforcement reasoning\"\n}"},"typeVersion":1.3},{"id":"59b35ada-eb5d-4b1d-95bd-1fea339bae63","name":"Route by Action Type","type":"n8n-nodes-base.switch","position":[1888,592],"parameters":{"rules":{"values":[{"outputKey":"Review","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.actionType }}","rightValue":"REVIEW"}]},"renameOutput":true},{"outputKey":"Enforce","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.actionType }}","rightValue":"ENFORCE"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra","renameFallbackOutput":"Other Actions"}},"typeVersion":3.4},{"id":"795b7a19-525b-4918-bed4-8bc4dd76058f","name":"Store Valid Content","type":"n8n-nodes-base.dataTable","position":[2464,256],"parameters":{"options":{},"dataTableId":{"__rl":true,"mode":"name","value":"ValidContent"}},"typeVersion":1.1},{"id":"b5327eb9-f4a0-4351-b6e5-101f96f14960","name":"Store Flagged Content","type":"n8n-nodes-base.dataTable","position":[2528,800],"parameters":{"options":{},"dataTableId":{"__rl":true,"mode":"name","value":"FlaggedContent"}},"typeVersion":1.1},{"id":"5008f3c7-610a-4947-aef3-cce51065eb81","name":"Store Enforcement Actions","type":"n8n-nodes-base.dataTable","position":[2080,512],"parameters":{"options":{},"dataTableId":{"__rl":true,"mode":"name","value":"EnforcementActions"}},"typeVersion":1.1},{"id":"d5bc62e1-1893-466e-8e7a-83c244aeab19","name":"Check Escalation Required","type":"n8n-nodes-base.if","position":[2304,512],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"id-1","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.output.escalationRequired }}","rightValue":true}]}},"typeVersion":2.3},{"id":"08caa7ef-8cde-4b2e-9ab2-0ee796d3104b","name":"Notify Moderation Team","type":"n8n-nodes-base.slack","position":[2528,416],"webhookId":"1f9364cf-3650-4732-a389-7d702a8f01e4","parameters":{"text":"=🚨 *CRITICAL ENFORCEMENT ESCALATION*\n\n*Action Type:* {{ $json.output.actionType }}\n*Enforcement:* {{ $json.output.enforcementAction }}\n*Severity:* {{ $json.output.severityLevel }}\n\n*User ID:* {{ $json.body.userId }}\n*Content Type:* {{ $json.body.contentType }}\n\n*Reasoning:*\n{{ $json.output.reasoning }}\n\n*Compliance Notes:*\n{{ $json.output.complianceNotes }}\n\n*Next Steps:*\n{{ $json.output.nextSteps.join(\"\\n\") }}\n\n_Requires immediate moderation team review_","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":"7de37af4-bf1c-4a0b-960f-4caa85ff14b0","name":"Escalation Email","type":"n8n-nodes-base.emailSend","position":[2528,608],"webhookId":"981a74a3-2aa4-4cf2-b426-7d14b74a9259","parameters":{"html":"=<html>\n<body style=\"font-family: Arial, sans-serif; line-height: 1.6; color: #333;\">\n<div style=\"background-color: #dc3545; color: white; padding: 20px; border-radius: 5px;\">\n<h2>🚨 CRITICAL CONTENT MODERATION ESCALATION</h2>\n</div>\n\n<div style=\"padding: 20px;\">\n<h3>Enforcement Details</h3>\n<table style=\"width: 100%; border-collapse: collapse;\">\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Action Type:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.actionType }}</td></tr>\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Enforcement Action:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.enforcementAction }}</td></tr>\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Severity Level:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.severityLevel }}</td></tr>\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">User ID:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.body.userId }}</td></tr>\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Content Type:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.body.contentType }}</td></tr>\n</table>\n\n<h3>Reasoning</h3>\n<p style=\"background-color: #f8f9fa; padding: 15px; border-left: 4px solid #dc3545;\">{{ $json.output.reasoning }}</p>\n\n<h3>Compliance Notes</h3>\n<p style=\"background-color: #fff3cd; padding: 15px; border-left: 4px solid #ffc107;\">{{ $json.output.complianceNotes }}</p>\n\n<h3>Next Steps Required</h3>\n<ul>\n{{ $json.output.nextSteps.map(step => `<li>${step}</li>`).join(\"\") }}\n</ul>\n\n<p style=\"margin-top: 30px; padding: 15px; background-color: #f8d7da; border-left: 4px solid #dc3545;\">\n<strong>⚠️ IMMEDIATE ACTION REQUIRED</strong><br>\nThis case requires urgent review and decision by the moderation leadership team.\n</p>\n\n<p style=\"color: #666; font-size: 12px; margin-top: 30px;\">Generated: {{ $now.toFormat(\"yyyy-MM-dd HH:mm:ss\") }}</p>\n</div>\n</body>\n</html>","options":{},"subject":"=CRITICAL: Content Moderation Escalation - {{ $json.output.severityLevel }} Severity","toEmail":"={{ $('Workflow Configuration').first().json.escalationEmail }}","fromEmail":"<__PLACEHOLDER_VALUE__Sender email address__>"},"typeVersion":2.1},{"id":"61c0ef27-6082-4a75-ac8b-55b519539c1b","name":"Merge All Paths","type":"n8n-nodes-base.merge","position":[2752,480],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition","numberInputs":4},"typeVersion":3.2},{"id":"e9f1de5a-1e17-49d1-b027-49cc4d40165d","name":"Audit Log","type":"n8n-nodes-base.dataTable","position":[3200,512],"parameters":{"options":{},"dataTableId":{"__rl":true,"mode":"name","value":"ModerationAuditLog"}},"typeVersion":1.1},{"id":"39d416be-7c5f-4586-94c8-5801029c0591","name":"Prepare Audit Data","type":"n8n-nodes-base.code","position":[2976,512],"parameters":{"jsCode":"// Prepare comprehensive audit log data\nconst items = $input.all();\nconst auditEntries = [];\n\nfor (const item of items) {\n  const auditEntry = {\n    timestamp: new Date().toISOString(),\n    workflow_execution_id: $execution.id,\n    workflow_path: item.json.workflow_path || 'unknown',\n    \n    // Validation results from Content Signal Agent\n    validation_status: item.json.validation_status || item.json.status,\n    content_id: item.json.content_id,\n    content_type: item.json.content_type,\n    content_text: item.json.content_text || item.json.content,\n    \n    // Governance decisions\n    governance_decision: item.json.governance_decision || item.json.decision,\n    policy_violations: item.json.policy_violations || [],\n    severity_level: item.json.severity_level || item.json.severity,\n    confidence_score: item.json.confidence_score || item.json.confidence,\n    \n    // Enforcement actions\n    enforcement_action: item.json.enforcement_action || item.json.action,\n    action_type: item.json.action_type,\n    action_reason: item.json.action_reason || item.json.reason,\n    \n    // Escalation status\n    escalation_required: item.json.escalation_required || false,\n    escalation_status: item.json.escalation_status || 'none',\n    escalation_notified: item.json.escalation_notified || false,\n    \n    // Additional metadata\n    user_id: item.json.user_id,\n    platform: item.json.platform,\n    reviewed_by: item.json.reviewed_by || 'ai_agent',\n    review_notes: item.json.review_notes || item.json.notes\n  };\n  \n  auditEntries.push({ json: auditEntry });\n}\n\nreturn auditEntries;"},"typeVersion":2},{"id":"ede90078-271b-40b8-a67c-20fe3292102b","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[864,-288],"parameters":{"color":5,"width":448,"height":336,"content":"## Prerequisites\nn8n account, OpenAI API key, Google Sheets or DB access, Gmail credentials, defined moderation policies.\n## Use Cases\nMarketplace listing moderation, enterprise HR review screening\n## Customization\nAdjust policy rules, add risk scoring, integrate Slack instead of Gmail\n## Benefits\nImproves moderation accuracy, reduces manual review, enforces governance consistency"},"typeVersion":1},{"id":"c57e0916-5c46-4ae8-bd79-5f478ed4aded","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[464,-208],"parameters":{"width":336,"height":240,"content":"## Setup Steps\n1. Connect OpenAI API credentials for AI agents.\n2. Configure Google Sheets or database for logging.\n3. Connect Gmail for escalation emails.\n4. Define moderation policies and routing rules.\n5. Activate webhook and test sample content."},"typeVersion":1},{"id":"b33ca13b-c8a1-4996-94fb-e821249b684c","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-480,-208],"parameters":{"width":896,"height":240,"content":"## How It Works\nThis workflow automates end-to-end AI-driven content moderation for platforms managing user-generated content, including marketplaces, communities, and enterprise systems. It is designed for product, trust & safety, and governance teams seeking scalable, policy-aligned enforcement without subjective scoring. The workflow validates structured review, goal, and feedback data using a Performance Signal Agent that standardizes moderation signals and removes ambiguity. A Governance Agent then orchestrates policy enforcement, eligibility checks, escalation logic, and audit preparation. Content enters via webhook, is classified, validated, and routed by action type (approve, flag, escalate). Enforcement logic determines whether to store clean content, flag violations, or trigger escalation emails and team notifications. All actions are logged for traceability and compliance. This template solves inconsistent moderation decisions, lack of structured governance controls, and manual escalation overhead by embedding deterministic checkpoints, structured outputs, and audit-ready logging into a single automated pipeline."},"typeVersion":1},{"id":"92b3be9e-45f4-40cd-990f-083cbf89a9ef","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1312,112],"parameters":{"color":7,"width":512,"height":1008,"content":"## Enforcement & Escalation\nWhat – Approve, flag, store, or escalate with notifications.\nWhy – Ensure consistent action handling and compliance tracking."},"typeVersion":1},{"id":"60d60bae-0daa-400b-9a3d-123e5138951b","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[320,112],"parameters":{"color":7,"width":976,"height":992,"content":"## Governance Orchestration\nWhat – Apply rule-based routing and agent-driven decision logic.\nWhy – Remove subjective scoring and standardize eligibility checks."},"typeVersion":1},{"id":"30600019-b906-4180-ad8f-b43f78cdb689","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-528,112],"parameters":{"color":7,"width":832,"height":944,"content":"## Ingest & Validate\nWhat – Capture content via webhook and normalize signals using AI validation.\nWhy – Ensure structured, policy-aligned inputs before enforcement decisions."},"typeVersion":1},{"id":"4b9f91db-0447-4248-a8f8-6ebfd4b23617","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[1840,112],"parameters":{"color":7,"width":1488,"height":992,"content":"## Audit & Logging\nWhat – Merge results and generate structured audit logs.\nWhy – Maintain transparency, traceability, and review readiness."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"67b069b3-f40f-483f-b6ed-37a349ba1f04","connections":{"Merge All Paths":{"main":[[{"node":"Prepare Audit Data","type":"main","index":0}]]},"Escalation Email":{"main":[[{"node":"Merge All Paths","type":"main","index":3}]]},"Governance Agent":{"main":[[{"node":"Route by Action Type","type":"main","index":0}]]},"Review Agent Tool":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"Appeals Agent Tool":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"Prepare Audit Data":{"main":[[{"node":"Audit Log","type":"main","index":0}]]},"Store Valid Content":{"main":[[{"node":"Merge All Paths","type":"main","index":0}]]},"Content Signal Agent":{"main":[[{"node":"Route by Validation Status","type":"main","index":0}]]},"Route by Action Type":{"main":[[{"node":"Store Flagged Content","type":"main","index":0}],[{"node":"Store Enforcement Actions","type":"main","index":0}]]},"Store Flagged Content":{"main":[[{"node":"Merge All Paths","type":"main","index":1}]]},"Enforcement Agent Tool":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"Notify Moderation Team":{"main":[[{"node":"Merge All Paths","type":"main","index":2}]]},"Workflow Configuration":{"main":[[{"node":"Content Signal Agent","type":"main","index":0}]]},"Check Escalation Required":{"main":[[{"node":"Notify Moderation Team","type":"main","index":0},{"node":"Escalation Email","type":"main","index":0}]]},"OpenAI Model - Governance":{"ai_languageModel":[[{"node":"Governance Agent","type":"ai_languageModel","index":0}]]},"Store Enforcement Actions":{"main":[[{"node":"Check Escalation Required","type":"main","index":0}]]},"Content Moderation Webhook":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"OpenAI Model - Review Tool":{"ai_languageModel":[[{"node":"Review Agent Tool","type":"ai_languageModel","index":0}]]},"Route by Validation Status":{"main":[[{"node":"Store Valid Content","type":"main","index":0}],[{"node":"Governance Agent","type":"main","index":0}]]},"OpenAI Model - Appeals Tool":{"ai_languageModel":[[{"node":"Appeals Agent Tool","type":"ai_languageModel","index":0}]]},"OpenAI Model - Content Signal":{"ai_languageModel":[[{"node":"Content Signal Agent","type":"ai_languageModel","index":0}]]},"Structured Output - Governance":{"ai_outputParser":[[{"node":"Governance Agent","type":"ai_outputParser","index":0}]]},"OpenAI Model - Enforcement Tool":{"ai_languageModel":[[{"node":"Enforcement Agent Tool","type":"ai_languageModel","index":0}]]},"Structured Output - Review Tool":{"ai_outputParser":[[{"node":"Review Agent Tool","type":"ai_outputParser","index":0}]]},"Structured Output - Appeals Tool":{"ai_outputParser":[[{"node":"Appeals Agent Tool","type":"ai_outputParser","index":0}]]},"Structured Output - Content Signal":{"ai_outputParser":[[{"node":"Content Signal Agent","type":"ai_outputParser","index":0}]]},"Structured Output - Enforcement Tool":{"ai_outputParser":[[{"node":"Enforcement Agent Tool","type":"ai_outputParser","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":35,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.merge":{"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":4},"n8n-nodes-base.emailSend":{"count":1},"n8n-nodes-base.stickyNote":{"count":7},"@n8n/n8n-nodes-langchain.agent":{"count":2},"@n8n/n8n-nodes-langchain.agentTool":{"count":3},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":5},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":5}}},"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":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":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":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":35,"name":"Document Extraction"},{"id":49,"name":"AI Summarization"}],"image":[]}}