{"workflow":{"id":13913,"name":"Enforce marketplace seller compliance with GPT-4o, Gmail and Slack","views":27,"recentViews":0,"totalViews":27,"createdAt":"2026-03-06T11:00:16.124Z","description":"Intelligent seller governance enforcement and compliance automation\n\n \n\n## How It Works\nThis workflow automates marketplace seller compliance monitoring and enforcement for platform trust, legal, and operations teams. It receives seller data via webhook, routes it through a central Governance Agent backed by persistent memory, and fans out to four specialised AI sub-agents: Policy Monitoring (with compliance scoring and violation severity calculation), Appeals Review, and Enforcement Decision. A Structured Enforcement Output parser standardises results before routing to enforcement actions. The workflow then prepares an audit log, writes to an Enforcement Audit Trail, and triggers multi-channel notifications — Gmail appeal decisions, warning emails, Slack alerts to the compliance team, and suspension notices. Finally, seller records are updated in a Seller Compliance Records store. This eliminates manual case reviews, ensures consistent policy application, and creates a full auditable enforcement trail at scale.\n\n## Setup Steps\n1. Configure webhook URL in **Receive Seller Data** node and secure with authentication.\n2. Set AI model credentials (OpenAI/Anthropic) in all agent and model nodes.\n3. Add Slack credentials and target channel to **Notify Compliance Team** node.\n4. Connect database/Google Sheets credentials.\n5. Activate and test with a sample seller payload.\n## Prerequisites\n- Gmail account with OAuth2 credentials\n- Slack workspace and bot token\n- Database or Google Sheets for audit and records storage\n## Use Cases\n- Automated suspension and warning issuance for policy-violating marketplace sellers\n## Customisation\n- Swap enforcement channels (e.g., replace Gmail with SendGrid)\n## Benefits\n- Eliminates manual seller case reviews — scales enforcement without added headcount\n\n","workflow":{"id":"FwstDr1sJttFZPG0","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"Intelligent seller governance enforcement and compliance automation","tags":[],"nodes":[{"id":"c6cac266-a159-4d1c-9bef-5e9f70fc721d","name":"Receive Seller Data","type":"n8n-nodes-base.webhook","position":[256,608],"webhookId":"4fd3df0e-cf20-4db4-9ee5-1fad5ad5ea60","parameters":{"path":"governance/seller-compliance","options":{},"httpMethod":"POST"},"typeVersion":2.1},{"id":"e0b8daf3-6490-49c3-8806-8c646d14235f","name":"Governance Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[736,608],"parameters":{"text":"={{ $json.body }}","options":{"systemMessage":"You are the Governance Agent responsible for orchestrating seller compliance enforcement. Your role is to:\n1. Coordinate with specialized sub-agents (Policy Monitoring, Appeals Review, Enforcement Decision)\n2. Ensure fair, non-discriminatory enforcement of marketplace policies\n3. Maintain complete audit trails of all decisions\n4. Escalate high-stakes decisions to human review when appropriate\n5. Balance seller rights with marketplace integrity\n\nYou must be transparent, consistent, and evidence-based in all enforcement actions."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"c916b50a-a9a4-4334-945d-85c733959842","name":"Governance Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[480,832],"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":"1d83f9c6-cc80-4075-94a1-93c8fb94ac20","name":"Governance Memory","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[608,832],"parameters":{},"typeVersion":1.3},{"id":"e3b7d27d-c6e0-4767-8177-84e981eb1142","name":"Structured Enforcement Output","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1600,832],"parameters":{"autoFix":true,"schemaType":"manual","inputSchema":"{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"seller_id\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"violation_type\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"severity\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"enum\": [\"low\", \"medium\", \"high\", \"critical\"]\n\t\t},\n\t\t\"enforcement_action\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"enum\": [\"warning\", \"review\", \"suspension\", \"termination\", \"appeal_approved\", \"appeal_denied\"]\n\t\t},\n\t\t\"reasoning\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"evidence\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t},\n\t\t\"requires_human_review\": {\n\t\t\t\"type\": \"boolean\"\n\t\t},\n\t\t\"timestamp\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t},\n\t\"required\": [\"seller_id\", \"violation_type\", \"severity\", \"enforcement_action\", \"reasoning\", \"requires_human_review\"]\n}"},"typeVersion":1.3},{"id":"f619b3bc-e672-4666-bbaa-2c20aea26c81","name":"Policy Monitoring Agent","type":"@n8n/n8n-nodes-langchain.agentTool","position":[736,832],"parameters":{"text":"={{ $fromAI('seller_data', 'Seller behavior and compliance data to validate') }}","options":{"systemMessage":"You are the Policy Monitoring Agent. Your responsibilities:\n1. Validate seller behavior against marketplace policies (product quality, shipping times, customer service, prohibited items)\n2. Analyze compliance metrics (return rates, complaint ratios, response times, policy violations)\n3. Detect patterns of non-compliance or fraudulent behavior\n4. Assess violation severity based on impact to customers and marketplace integrity\n5. Provide evidence-based assessments with specific data points\n\nBe thorough, objective, and data-driven. Flag edge cases for human review."},"toolDescription":"Validates seller behavior against marketplace policies, analyzes compliance metrics, detects violations, and assesses violation severity. Returns detailed compliance assessment with evidence."},"typeVersion":3},{"id":"f4d33518-9ec5-41a0-a0c8-b9e681f99e9a","name":"Appeals Review Agent","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1024,832],"parameters":{"text":"={{ $fromAI('appeal_data', 'Appeal submission with seller arguments and evidence') }}","options":{"systemMessage":"You are the Appeals Review Agent. Your responsibilities:\n1. Review seller appeals with fresh perspective and open mind\n2. Evaluate new evidence or mitigating circumstances presented\n3. Assess whether original enforcement was proportionate and fair\n4. Check for procedural errors or bias in original decision\n5. Recommend appeal approval, partial approval, or denial with clear reasoning\n6. Ensure consistent treatment across similar cases\n\nPrioritize fairness, transparency, and non-discriminatory enforcement. Give sellers benefit of doubt when evidence is ambiguous."},"toolDescription":"Evaluates seller appeals for fairness, reviews evidence, assesses mitigating circumstances, and recommends appeal outcomes. Ensures non-discriminatory treatment and procedural fairness."},"typeVersion":3},{"id":"bdb1649c-c348-40fc-b4db-cec3c57adf22","name":"Enforcement Decision Agent","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1312,832],"parameters":{"text":"={{ $fromAI('violation_assessment', 'Violation assessment and seller context for enforcement decision') }}","options":{"systemMessage":"You are the Enforcement Decision Agent. Your responsibilities:\n1. Determine appropriate enforcement action based on violation severity and seller history\n2. Apply progressive discipline (warning → review → suspension → termination)\n3. Consider mitigating factors (first offense, good faith effort, technical issues)\n4. Ensure consistency with past enforcement decisions for similar violations\n5. Recommend human review for high-stakes decisions (suspensions, terminations)\n6. Balance marketplace safety with seller livelihood considerations\n\nBe fair, proportionate, and consistent. Escalate ambiguous cases to human review."},"toolDescription":"Determines appropriate enforcement actions (warning, review, suspension, termination) based on violation severity, seller history, and marketplace policies. Ensures proportionate and consistent enforcement."},"typeVersion":3},{"id":"7d9d4a8a-0656-44cb-a6bd-377b3831b45d","name":"Policy Monitoring Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[592,1040],"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":"60628091-0dd6-49e6-956b-497b4bf3abe6","name":"Appeals Review Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1104,1040],"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":"18eb0c76-7989-45a2-8940-ac4e223b8c23","name":"Enforcement Decision Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1392,1040],"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":"fa3d6f94-35a2-4c60-8bf9-30248a047570","name":"Output Parser Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1680,1040],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o-mini"},"options":{"temperature":0},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"98e19c91-4844-4bf1-8887-fc05e2198102","name":"Compliance Calculator","type":"@n8n/n8n-nodes-langchain.toolCalculator","position":[752,1056],"parameters":{},"typeVersion":1},{"id":"43691cf0-9e8f-4446-84b8-758950ef9fe0","name":"Violation Severity Scorer","type":"@n8n/n8n-nodes-langchain.toolCode","position":[880,1056],"parameters":{"jsCode":"const returnRate = $fromAI('return_rate', 'Product return rate percentage', 'number', 0);\nconst complaintCount = $fromAI('complaint_count', 'Number of customer complaints', 'number', 0);\nconst violationHistory = $fromAI('violation_history', 'Number of previous violations', 'number', 0);\nconst responseTime = $fromAI('avg_response_time', 'Average customer service response time in hours', 'number', 24);\n\n// Scoring algorithm\nlet score = 0;\nscore += Math.min(returnRate * 2, 40); // Max 40 points for returns\nscore += Math.min(complaintCount * 5, 30); // Max 30 points for complaints\nscore += Math.min(violationHistory * 10, 20); // Max 20 points for history\nscore += Math.min((responseTime / 24) * 10, 10); // Max 10 points for slow response\n\n// Classify severity\nlet severity;\nif (score < 25) severity = 'low';\nelse if (score < 50) severity = 'medium';\nelse if (score < 75) severity = 'high';\nelse severity = 'critical';\n\nreturn { score: Math.round(score), severity, breakdown: { returnRate, complaintCount, violationHistory, responseTime } };","description":"Calculates violation severity score based on impact metrics, frequency, and seller history. Returns numerical score (0-100) and severity classification."},"typeVersion":1.3},{"id":"a9383de6-f2dd-4f1c-a954-f3f55314b843","name":"Route Enforcement Action","type":"n8n-nodes-base.switch","position":[1968,544],"parameters":{"rules":{"values":[{"conditions":{"options":{"leftValue":"","caseSensitive":true},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcement_action }}","rightValue":"warning"}]}},{"conditions":{"options":{"leftValue":"","caseSensitive":true},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcement_action }}","rightValue":"review"}]}},{"conditions":{"options":{"leftValue":"","caseSensitive":true},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcement_action }}","rightValue":"suspension"}]}},{"conditions":{"options":{"leftValue":"","caseSensitive":true},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcement_action }}","rightValue":"termination"}]}},{"conditions":{"options":{"leftValue":"","caseSensitive":true},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcement_action }}","rightValue":"appeal_approved"}]}},{"conditions":{"options":{"leftValue":"","caseSensitive":true},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcement_action }}","rightValue":"appeal_denied"}]}}]},"options":{}},"typeVersion":3.4},{"id":"61671c1e-5fa5-4b8e-8478-f813ccb7451b","name":"Prepare Audit Log","type":"n8n-nodes-base.set","position":[2192,608],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"seller_id","type":"string","value":"={{ $json.seller_id }}"},{"id":"id-2","name":"violation_type","type":"string","value":"={{ $json.violation_type }}"},{"id":"id-3","name":"severity","type":"string","value":"={{ $json.severity }}"},{"id":"id-4","name":"enforcement_action","type":"string","value":"={{ $json.enforcement_action }}"},{"id":"id-5","name":"reasoning","type":"string","value":"={{ $json.reasoning }}"},{"id":"id-6","name":"evidence","type":"string","value":"={{ JSON.stringify($json.evidence) }}"},{"id":"id-7","name":"requires_human_review","type":"boolean","value":"={{ $json.requires_human_review }}"},{"id":"id-8","name":"timestamp","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-9","name":"workflow_execution_id","type":"string","value":"={{ $execution.id }}"}]}},"typeVersion":3.4},{"id":"d592f7d2-6bcc-42bf-aff7-a0970dc879af","name":"Enforcement Audit Trail","type":"n8n-nodes-base.dataTable","position":[2416,608],"parameters":{"columns":{"value":null,"mappingMode":"autoMapInputData"},"options":{},"dataTableId":{"__rl":true,"mode":"id","value":"<__PLACEHOLDER_VALUE__enforcement_audit_trail__>"}},"typeVersion":1.1},{"id":"4f58b8b2-dbd9-441f-aeec-d617d1b1d25b","name":"Send Warning Email","type":"n8n-nodes-base.gmail","position":[2880,784],"webhookId":"56fc2485-cb84-4294-954d-b4ac3247c086","parameters":{"sendTo":"<__PLACEHOLDER_VALUE__seller_email__>","message":"=Dear Seller,\n\nWe have identified a policy violation on your account:\n\nViolation Type: {{ $json.violation_type }}\nSeverity: {{ $json.severity }}\n\nReasoning:\n{{ $json.reasoning }}\n\nEvidence:\n{{ $json.evidence ? $json.evidence.join('\\n') : 'See attached details' }}\n\nPlease review our marketplace policies and take corrective action within 7 days. Failure to address this issue may result in further enforcement actions.\n\nIf you believe this warning was issued in error, you may submit an appeal through your seller dashboard.\n\nBest regards,\nMarketplace Compliance Team","options":{},"subject":"=Policy Violation Warning - Action Required"},"credentials":{"gmailOAuth2":{"id":"u1N5nBDvQ0AWhNnV","name":"Gmail account"}},"typeVersion":2.2},{"id":"8d4818a7-883d-4491-99a1-a0c1dcfdf1ce","name":"Send Suspension Notice","type":"n8n-nodes-base.gmail","position":[2880,976],"webhookId":"8517b7a3-7013-4865-9a96-568332da6f9a","parameters":{"sendTo":"<__PLACEHOLDER_VALUE__seller_email__>","message":"=Dear Seller,\n\nYour marketplace account has been suspended due to policy violations:\n\nViolation Type: {{ $json.violation_type }}\nSeverity: {{ $json.severity }}\n\nReasoning:\n{{ $json.reasoning }}\n\nEvidence:\n{{ $json.evidence ? $json.evidence.join('\\n') : 'See attached details' }}\n\nYour account is suspended effective immediately. You may not process new orders during this suspension period.\n\nTo appeal this decision, please submit a detailed appeal through your seller dashboard within 14 days, including:\n1. Explanation of the circumstances\n2. Corrective actions taken\n3. Supporting documentation\n\nAppeals are reviewed by our compliance team within 5 business days.\n\nBest regards,\nMarketplace Compliance Team","options":{},"subject":"Account Suspension Notice - Immediate Action Required"},"credentials":{"gmailOAuth2":{"id":"u1N5nBDvQ0AWhNnV","name":"Gmail account"}},"typeVersion":2.2},{"id":"1dcfb679-52dd-478c-a24b-db90daae9e66","name":"Notify Compliance Team","type":"n8n-nodes-base.slack","position":[2656,1008],"webhookId":"6f30fdc0-f31c-418b-b21e-533cdecf7cf7","parameters":{"text":"=🚨 Enforcement Action Taken\n\n*Seller ID:* {{ $json.seller_id }}\n*Action:* {{ $json.enforcement_action }}\n*Violation:* {{ $json.violation_type }}\n*Severity:* {{ $json.severity }}\n\n*Reasoning:*\n{{ $json.reasoning }}\n\n*Human Review Required:* {{ $json.requires_human_review ? 'Yes ⚠️' : 'No' }}\n\n*Execution ID:* {{ $json.workflow_execution_id }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"<__PLACEHOLDER_VALUE__compliance_alerts_channel__>"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"d34b1ayEBbvZm2lT","name":"Slack account"}},"typeVersion":2.4},{"id":"91887fe3-6d9f-4454-9e3e-05138e629ac2","name":"Send Appeal Decision","type":"n8n-nodes-base.gmail","position":[2880,592],"webhookId":"dc3c388d-0c97-42d6-a9ad-93c91f0ad804","parameters":{"sendTo":"=<__PLACEHOLDER_VALUE__seller_email__>","message":"={{ $json.enforcement_action === 'appeal_approved' ? 'Dear Seller,\\n\\nYour appeal has been approved after careful review.\\n\\nOriginal Violation: ' + $json.violation_type + '\\n\\nAppeal Reasoning:\\n' + $json.reasoning + '\\n\\nYour account restrictions have been lifted. We appreciate your cooperation in resolving this matter.\\n\\nBest regards,\\nMarketplace Compliance Team' : 'Dear Seller,\\n\\nAfter careful review, your appeal has been denied.\\n\\nOriginal Violation: ' + $json.violation_type + '\\n\\nAppeal Decision Reasoning:\\n' + $json.reasoning + '\\n\\nThe original enforcement action remains in effect. If you have additional evidence or information, you may submit a new appeal.\\n\\nBest regards,\\nMarketplace Compliance Team' }}","options":{},"subject":"=Appeal Decision - {{ $json.enforcement_action === 'appeal_approved' ? 'Approved' : 'Denied' }}"},"credentials":{"gmailOAuth2":{"id":"u1N5nBDvQ0AWhNnV","name":"Gmail account"}},"typeVersion":2.2},{"id":"09f99b94-7ad5-4038-918c-fdbd85563c54","name":"Seller Compliance Records","type":"n8n-nodes-base.dataTable","position":[3328,688],"parameters":{"columns":{"value":null,"mappingMode":"autoMapInputData"},"filters":{"conditions":[{"keyName":"seller_id","keyValue":"={{ $json.seller_id }}"}]},"options":{},"operation":"upsert","dataTableId":{"__rl":true,"mode":"id","value":"<__PLACEHOLDER_VALUE__seller_compliance_records__>"}},"typeVersion":1.1},{"id":"a8ab9b70-aa43-45e0-a208-7317ac346a70","name":"Prepare Seller Record","type":"n8n-nodes-base.set","position":[3104,688],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"seller_id","type":"string","value":"={{ $json.seller_id }}"},{"id":"id-2","name":"current_status","type":"string","value":"={{ $json.enforcement_action }}"},{"id":"id-3","name":"last_violation_type","type":"string","value":"={{ $json.violation_type }}"},{"id":"id-4","name":"last_violation_severity","type":"string","value":"={{ $json.severity }}"},{"id":"id-5","name":"last_action_date","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-6","name":"total_violations","type":"number","value":"={{ ($json.total_violations || 0) + 1 }}"},{"id":"id-7","name":"requires_monitoring","type":"boolean","value":"={{ $json.severity === 'high' || $json.severity === 'critical' }}"}]}},"typeVersion":3.4},{"id":"3ad0844c-9c58-4166-8f6b-59a277343f7b","name":"Route Notifications","type":"n8n-nodes-base.switch","position":[2656,752],"parameters":{"rules":{"values":[{"conditions":{"options":{"leftValue":"","caseSensitive":true},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcement_action }}","rightValue":"warning"}]}},{"conditions":{"options":{"leftValue":"","caseSensitive":true},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcement_action }}","rightValue":"suspension"}]}},{"conditions":{"options":{"leftValue":"","caseSensitive":true},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcement_action }}","rightValue":"appeal_approved"}]}},{"conditions":{"options":{"leftValue":"","caseSensitive":true},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.enforcement_action }}","rightValue":"appeal_denied"}]}}]},"options":{}},"typeVersion":3.4},{"id":"1222b060-b7b4-40b1-9234-175e75096a71","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1360,-16],"parameters":{"color":6,"width":464,"height":384,"content":"## Prerequisites\n- Gmail account with OAuth2 credentials\n- Slack workspace and bot token\n- Database or Google Sheets for audit and records storage\n## Use Cases\n- Automated suspension and warning issuance for policy-violating marketplace sellers\n## Customisation\n- Swap enforcement channels (e.g., replace Gmail with SendGrid)\n## Benefits\n- Eliminates manual seller case reviews — scales enforcement without added headcount\n"},"typeVersion":1},{"id":"6cd21534-e4d9-4f3a-bb81-4391eec6ec0c","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[864,112],"parameters":{"width":384,"height":256,"content":"## Setup Steps\n1. Configure webhook URL in **Receive Seller Data** node and secure with authentication.\n2. Set AI model credentials (OpenAI/Anthropic) in all agent and model nodes.\n3. Add Slack credentials and target channel to **Notify Compliance Team** node.\n4. Connect database/Google Sheets credentials.\n5. Activate and test with a sample seller payload."},"typeVersion":1},{"id":"d88f9b37-1fac-4d67-b37a-21cadf51aa40","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[240,96],"parameters":{"width":576,"height":288,"content":"## How It Works\nThis workflow automates marketplace seller compliance monitoring and enforcement for platform trust, legal, and operations teams. It receives seller data via webhook, routes it through a central Governance Agent backed by persistent memory, and fans out to four specialised AI sub-agents: Policy Monitoring (with compliance scoring and violation severity calculation), Appeals Review, and Enforcement Decision. A Structured Enforcement Output parser standardises results before routing to enforcement actions. The workflow then prepares an audit log, writes to an Enforcement Audit Trail, and triggers multi-channel notifications — Gmail appeal decisions, warning emails, Slack alerts to the compliance team, and suspension notices. Finally, seller records are updated in a Seller Compliance Records store. This eliminates manual case reviews, ensures consistent policy application, and creates a full auditable enforcement trail at scale.\n"},"typeVersion":1},{"id":"fabbdf5c-b3bb-4fdc-b01a-0297a6a45e36","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1904,416],"parameters":{"color":7,"width":672,"height":880,"content":"## Audit & Route Actions\n**What** — Formats audit log, writes to Enforcement Audit Trail, routes enforcement action.\n**Why** — Guarantees full traceability and triggers the correct downstream response path."},"typeVersion":1},{"id":"0940168c-d1bf-415d-b55b-193827381e42","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[1008,432],"parameters":{"color":7,"width":864,"height":848,"content":"## Appeals & Enforcement Decision\n**What** — Appeals Review Agent and Enforcement Decision Agent evaluate case in parallel.\n**Why** — Separates appeals logic from enforcement to ensure fair, independent assessment."},"typeVersion":1},{"id":"ddb3f5b7-579f-432c-b517-6442b8d96b33","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[224,432],"parameters":{"color":7,"width":752,"height":800,"content":"## Policy & Violation Analysis\n**What** — Policy Monitoring Agent scores compliance; Violation Severity Scorer calculates risk level.\n**Why** — Quantifies risk objectively, removing human bias from initial triage."},"typeVersion":1},{"id":"4707d11e-a756-411b-bb0a-d3d5a1b7e7e8","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[2608,400],"parameters":{"color":7,"width":944,"height":896,"content":"## Notify & Record\n**What** — Sends Gmail decisions, warning emails, Slack alerts, suspension notices; updates seller records.\n**Why** — Closes the loop with all stakeholders and maintains a live compliance database."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"a903aabc-ec22-4786-b30d-52df8e0c79ae","connections":{"Governance Agent":{"main":[[{"node":"Route Enforcement Action","type":"main","index":0}]]},"Governance Model":{"ai_languageModel":[[{"node":"Governance Agent","type":"ai_languageModel","index":0}]]},"Governance Memory":{"ai_memory":[[{"node":"Governance Agent","type":"ai_memory","index":0}]]},"Prepare Audit Log":{"main":[[{"node":"Enforcement Audit Trail","type":"main","index":0}]]},"Send Warning Email":{"main":[[{"node":"Prepare Seller Record","type":"main","index":0}]]},"Output Parser Model":{"ai_languageModel":[[{"node":"Structured Enforcement Output","type":"ai_languageModel","index":0}]]},"Receive Seller Data":{"main":[[{"node":"Governance Agent","type":"main","index":0}]]},"Route Notifications":{"main":[[{"node":"Send Warning Email","type":"main","index":0}],[{"node":"Send Suspension Notice","type":"main","index":0}],[{"node":"Send Appeal Decision","type":"main","index":0}],[{"node":"Send Appeal Decision","type":"main","index":0}]]},"Appeals Review Agent":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"Appeals Review Model":{"ai_languageModel":[[{"node":"Appeals Review Agent","type":"ai_languageModel","index":0}]]},"Send Appeal Decision":{"main":[[{"node":"Prepare Seller Record","type":"main","index":0}]]},"Compliance Calculator":{"ai_tool":[[{"node":"Policy Monitoring Agent","type":"ai_tool","index":0}]]},"Prepare Seller Record":{"main":[[{"node":"Seller Compliance Records","type":"main","index":0}]]},"Send Suspension Notice":{"main":[[{"node":"Prepare Seller Record","type":"main","index":0}]]},"Enforcement Audit Trail":{"main":[[{"node":"Notify Compliance Team","type":"main","index":0},{"node":"Route Notifications","type":"main","index":0}]]},"Policy Monitoring Agent":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"Policy Monitoring Model":{"ai_languageModel":[[{"node":"Policy Monitoring Agent","type":"ai_languageModel","index":0}]]},"Route Enforcement Action":{"main":[[{"node":"Prepare Audit Log","type":"main","index":0}],[{"node":"Prepare Audit Log","type":"main","index":0}],[{"node":"Prepare Audit Log","type":"main","index":0}],[{"node":"Prepare Audit Log","type":"main","index":0}],[{"node":"Prepare Audit Log","type":"main","index":0}],[{"node":"Prepare Audit Log","type":"main","index":0}]]},"Violation Severity Scorer":{"ai_tool":[[{"node":"Policy Monitoring Agent","type":"ai_tool","index":0}]]},"Enforcement Decision Agent":{"ai_tool":[[{"node":"Governance Agent","type":"ai_tool","index":0}]]},"Enforcement Decision Model":{"ai_languageModel":[[{"node":"Enforcement Decision Agent","type":"ai_languageModel","index":0}]]},"Structured Enforcement Output":{"ai_outputParser":[[{"node":"Governance Agent","type":"ai_outputParser","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":31,"nodeTypes":{"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.gmail":{"count":3},"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.stickyNote":{"count":7},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.toolCode":{"count":1},"@n8n/n8n-nodes-langchain.agentTool":{"count":3},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":5},"@n8n/n8n-nodes-langchain.toolCalculator":{"count":1},"@n8n/n8n-nodes-langchain.memoryBufferWindow":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"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":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":356,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmail","codex":{"data":{"alias":["email","human","form","wait","hitl","approval"],"resources":{"generic":[{"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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with 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-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/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"transform\"]","defaults":{"name":"Gmail"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"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":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":1163,"icon":"fa:database","name":"@n8n/n8n-nodes-langchain.memoryBufferWindow","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Memory"],"Memory":["For beginners"]}}},"group":"[\"transform\"]","defaults":{"name":"Simple Memory"},"iconData":{"icon":"database","type":"icon"},"displayName":"Simple Memory","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1195,"icon":"fa:calculator","name":"@n8n/n8n-nodes-langchain.toolCalculator","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcalculator/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Other Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Calculator"},"iconData":{"icon":"calculator","type":"icon"},"displayName":"Calculator","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":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":35,"name":"Document Extraction"},{"id":48,"name":"AI RAG"}],"image":[]}}