AutomationFlowsAI & RAG › Triage and Escalate Ethics Disclosures with Gpt-4o, Policy API and Slack

Triage and Escalate Ethics Disclosures with Gpt-4o, Policy API and Slack

ByCheng Siong Chin @cschin on n8n.io

This workflow automates ethics disclosure intake, investigation, risk routing, and escalation for compliance officers, legal teams, and ethics oversight boards. Disclosures arrive via webhook and are processed by a central Governance Agent with persistent memory, supported by…

Webhook trigger★★★★★ complexityAI-powered31 nodesAgentOpenAI ChatMemory Buffer WindowOutput Parser StructuredAgent ToolData Table ToolHTTP Request ToolSlack Tool
AI & RAG Trigger: Webhook Nodes: 31 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #13916 — we link there as the canonical source.

This workflow follows the Agent → Agenttool recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "WFGO25zYXOruJuKk",
  "name": "Intelligent ethics disclosure governance and escalation agent",
  "tags": [],
  "nodes": [
    {
      "id": "9104e76c-4fab-4034-93bd-04913c10bb88",
      "name": "Ethics Disclosure Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        256,
        400
      ],
      "parameters": {
        "path": "ethics-disclosure",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 2.1
    },
    {
      "id": "1db969f6-030b-4c5f-9b31-feb926602fab",
      "name": "Governance Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1464,
        400
      ],
      "parameters": {
        "text": "={{ $json.body }}",
        "options": {
          "systemMessage": "You are the Governance Agent responsible for orchestrating ethics monitoring, investigations, reporting, and escalation workflows. You coordinate specialized sub-agents (Ethics Monitoring, Investigation, Reporting, Escalation) to ensure comprehensive oversight with full explainability. Always document your reasoning and maintain human authority checkpoints for critical decisions."
        },
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "0f8e61e8-f770-4a5e-8877-f7b7759aa849",
      "name": "Governance Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        416,
        624
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.2
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "611641c6-636a-467b-93ea-fffe666e124a",
      "name": "Governance Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        608,
        624
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "273edac3-1cce-47c6-8b1e-2b042fb49273",
      "name": "Governance Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2384,
        624
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"decision\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"riskLevel\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"enum\": [\"low\", \"medium\", \"high\", \"critical\"]\n\t\t},\n\t\t\"investigationRequired\": {\n\t\t\t\"type\": \"boolean\"\n\t\t},\n\t\t\"escalationPriority\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"reasoning\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"nextActions\": {\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}\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "22dda23c-005e-448c-a60a-f98e2b0ded96",
      "name": "Ethics Monitoring Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        736,
        624
      ],
      "parameters": {
        "text": "={{ $fromAI('disclosure_data', 'The disclosure data to evaluate including conflicts, declarations, and policy signals') }}",
        "options": {
          "systemMessage": "You are the Ethics Monitoring Agent. Analyze disclosures for conflicts of interest, policy violations, and compliance risks. Evaluate: 1) Financial conflicts, 2) Relationship disclosures, 3) Policy adherence, 4) Regulatory compliance. Provide detailed risk assessments with evidence and severity ratings."
        },
        "toolDescription": "Evaluates structured disclosures, conflict-of-interest declarations, and policy adherence signals. Returns risk scores, compliance flags, and policy violation assessments."
      },
      "typeVersion": 3
    },
    {
      "id": "7b804034-f646-40d0-9b8b-16c43c32bf57",
      "name": "Ethics Monitoring Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        816,
        832
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.1
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "786e792b-510c-4032-9643-c1d0fc56d61d",
      "name": "Investigation Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        1024,
        624
      ],
      "parameters": {
        "text": "={{ $fromAI('investigation_request', 'The investigation request with case details, flagged issues, and scope') }}",
        "options": {
          "systemMessage": "You are the Investigation Agent. Conduct thorough investigations into ethics violations and policy breaches. Document: 1) Evidence collection, 2) Stakeholder interviews, 3) Timeline reconstruction, 4) Impact assessment, 5) Mitigation recommendations. Maintain detailed audit trails and ensure procedural compliance."
        },
        "toolDescription": "Conducts detailed investigations into flagged disclosures, gathering evidence, interviewing stakeholders, and documenting findings with full audit trails."
      },
      "typeVersion": 3
    },
    {
      "id": "78237b88-47b8-4051-9482-0f03ad9b6ede",
      "name": "Investigation Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1104,
        832
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.2
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "7f019cec-58c5-42f9-9224-940825f07661",
      "name": "Reporting Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        1312,
        624
      ],
      "parameters": {
        "text": "={{ $fromAI('report_request', 'The report request with investigation findings, compliance data, and reporting requirements') }}",
        "options": {
          "systemMessage": "You are the Reporting Agent. Generate detailed compliance reports that include: 1) Executive summary, 2) Findings and evidence, 3) Risk assessment, 4) Recommendations, 5) Audit trail documentation. Ensure reports are clear, actionable, and suitable for stakeholder review and regulatory compliance."
        },
        "toolDescription": "Generates comprehensive compliance reports, investigation summaries, and audit documentation with full explainability and evidence trails."
      },
      "typeVersion": 3
    },
    {
      "id": "6e07ced0-0958-4e81-8476-6fb07e74bd28",
      "name": "Reporting Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1392,
        832
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.3
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "c7e1a7e1-e5cd-4ad0-bcac-cb5474527ea9",
      "name": "Escalation Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        1600,
        624
      ],
      "parameters": {
        "text": "={{ $fromAI('escalation_assessment', 'The case data requiring escalation assessment including risk level, findings, and impact') }}",
        "options": {
          "systemMessage": "You are the Escalation Agent. Assess cases and determine appropriate escalation levels based on: 1) Severity and impact, 2) Regulatory implications, 3) Stakeholder involvement, 4) Organizational risk, 5) Urgency. Provide clear escalation recommendations with justification and identify required human authority checkpoints."
        },
        "toolDescription": "Determines escalation priorities, identifies oversight requirements, and routes critical issues to appropriate authority levels with full justification."
      },
      "typeVersion": 3
    },
    {
      "id": "9eb85d69-8a5d-4f11-9019-d0bb30c62895",
      "name": "Escalation Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1680,
        832
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.1
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "c4d28358-13bd-4da4-b296-7d4a0dafdcf6",
      "name": "Audit Trail Storage Tool",
      "type": "n8n-nodes-base.dataTableTool",
      "position": [
        1888,
        624
      ],
      "parameters": {
        "columns": {
          "value": {
            "action": "={{ $fromAI('action', 'Action taken or event description') }}",
            "caseId": "={{ $fromAI('caseId', 'Unique case identifier') }}",
            "findings": "={{ $fromAI('findings', 'Investigation findings or event details') }}",
            "agentName": "={{ $fromAI('agentName', 'Name of the agent performing the action') }}",
            "eventType": "={{ $fromAI('eventType', 'Type of event (e.g., disclosure, investigation, escalation)') }}",
            "riskLevel": "={{ $fromAI('riskLevel', 'Risk level assessment (low, medium, high, critical)') }}",
            "timestamp": "={{ $fromAI('timestamp', 'Event timestamp') }}"
          },
          "mappingMode": "defineBelow"
        },
        "filters": {
          "conditions": [
            {
              "keyName": "caseId",
              "keyValue": "={{ $fromAI('caseId', 'The unique case identifier to match for upsert') }}"
            }
          ]
        },
        "options": {},
        "operation": "upsert",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "<__PLACEHOLDER_VALUE__ethics_audit_trail__>"
        },
        "descriptionType": "manual",
        "toolDescription": "Stores and retrieves audit trail records, investigation findings, and compliance history in the Ethics Audit Trail data table."
      },
      "typeVersion": 1.1
    },
    {
      "id": "7778af8d-49ac-4b31-a27d-c0ef4f267ee3",
      "name": "Policy Database API Tool",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        2048,
        624
      ],
      "parameters": {
        "url": "={{ $fromAI('api_endpoint', 'The API endpoint to query for policy data', 'string', 'https://api.example.com/policies') }}",
        "options": {},
        "toolDescription": "Queries external policy database or compliance system to retrieve current policy definitions, regulatory requirements, and compliance standards."
      },
      "typeVersion": 4.4
    },
    {
      "id": "2b0ce6e7-1f8e-444c-b364-22fa3e574f76",
      "name": "Slack Notification Tool",
      "type": "n8n-nodes-base.slackTool",
      "position": [
        2192,
        624
      ],
      "parameters": {
        "text": "={{ $fromAI('notification_message', 'The notification message to send') }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $fromAI('notification_channel', 'The Slack channel ID or name for notifications', 'string', '<__PLACEHOLDER_VALUE__ethics_alerts_channel__>') }}"
        },
        "otherOptions": {},
        "authentication": "oAuth2",
        "descriptionType": "manual",
        "toolDescription": "Sends real-time notifications to oversight teams about ethics violations, investigation updates, and governance alerts."
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "f746df57-7252-4122-8bd5-79f6bc56a126",
      "name": "Risk Level Router",
      "type": "n8n-nodes-base.switch",
      "position": [
        2528,
        368
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "critical",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.riskLevel }}",
                    "rightValue": "critical"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "high",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.riskLevel }}",
                    "rightValue": "high"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "medium",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.riskLevel }}",
                    "rightValue": "medium"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "low",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.riskLevel }}",
                    "rightValue": "low"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.4
    },
    {
      "id": "41d4e07f-dc8e-4ff7-b218-63ef1bd87cec",
      "name": "Prepare Critical Case Data",
      "type": "n8n-nodes-base.set",
      "position": [
        2704,
        304
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "caseId",
              "type": "string",
              "value": "={{ $json.body.caseId || $now.toISO() }}"
            },
            {
              "id": "id-2",
              "name": "timestamp",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            },
            {
              "id": "id-3",
              "name": "riskLevel",
              "type": "string",
              "value": "={{ $json.riskLevel }}"
            },
            {
              "id": "id-4",
              "name": "decision",
              "type": "string",
              "value": "={{ $json.decision }}"
            },
            {
              "id": "id-5",
              "name": "reasoning",
              "type": "string",
              "value": "={{ $json.reasoning }}"
            },
            {
              "id": "id-6",
              "name": "escalationPriority",
              "type": "string",
              "value": "={{ $json.escalationPriority }}"
            },
            {
              "id": "id-7",
              "name": "investigationRequired",
              "type": "boolean",
              "value": "={{ $json.investigationRequired }}"
            },
            {
              "id": "id-8",
              "name": "nextActions",
              "type": "array",
              "value": "={{ JSON.stringify($json.nextActions) }}"
            },
            {
              "id": "id-9",
              "name": "rawDisclosure",
              "type": "object",
              "value": "={{ JSON.stringify($json.body) }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f64d934e-3b90-4885-acac-30910aa70fec",
      "name": "Prepare Standard Case Data",
      "type": "n8n-nodes-base.set",
      "position": [
        2960,
        496
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "caseId",
              "type": "string",
              "value": "={{ $json.body.caseId || $now.toISO() }}"
            },
            {
              "id": "id-2",
              "name": "timestamp",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            },
            {
              "id": "id-3",
              "name": "riskLevel",
              "type": "string",
              "value": "={{ $json.riskLevel }}"
            },
            {
              "id": "id-4",
              "name": "decision",
              "type": "string",
              "value": "={{ $json.decision }}"
            },
            {
              "id": "id-5",
              "name": "reasoning",
              "type": "string",
              "value": "={{ $json.reasoning }}"
            },
            {
              "id": "id-6",
              "name": "nextActions",
              "type": "array",
              "value": "={{ $json.nextActions }}"
            },
            {
              "id": "id-7",
              "name": "rawDisclosure",
              "type": "object",
              "value": "={{ JSON.stringify($json.body) }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "c3eb16ce-fa4d-4ecd-8f5a-99893f30b274",
      "name": "Store Critical Cases",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        2928,
        304
      ],
      "parameters": {
        "columns": {
          "value": null,
          "mappingMode": "autoMapInputData"
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__critical_cases_table__>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "e5484049-7ef5-49d4-b5a4-3cb58f4d6b95",
      "name": "Store Standard Cases",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        3152,
        496
      ],
      "parameters": {
        "columns": {
          "value": null,
          "mappingMode": "autoMapInputData"
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__standard_cases_table__>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "6580819a-48f3-4f38-bffa-3389896cd65d",
      "name": "Alert Oversight Team",
      "type": "n8n-nodes-base.slack",
      "position": [
        3152,
        304
      ],
      "parameters": {
        "text": "=\ud83d\udea8 CRITICAL ETHICS ALERT\n\nCase ID: {{ $json.caseId }}\nRisk Level: {{ $json.riskLevel }}\nDecision: {{ $json.decision }}\n\nReasoning:\n{{ $json.reasoning }}\n\nEscalation Priority: {{ $json.escalationPriority }}\nInvestigation Required: {{ $json.investigationRequired }}\n\nNext Actions:\n{{ $json.nextActions.join('\\n- ') }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__critical_alerts_channel__>"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "a76f8aeb-ae6e-4129-9077-c5a7e9e446c1",
      "name": "Merge All Outcomes",
      "type": "n8n-nodes-base.merge",
      "position": [
        3376,
        400
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "0ec15496-664a-4320-a021-74ab88359d7d",
      "name": "Send Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        3600,
        400
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{ { status: 'processed', caseId: $json.caseId, riskLevel: $json.riskLevel, decision: $json.decision, message: 'Ethics disclosure processed successfully' } }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "916410d6-b82d-4128-8639-e92051fb4a2c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1328,
        -240
      ],
      "parameters": {
        "color": 6,
        "width": 352,
        "height": 416,
        "content": "## Prerequisites\n- Slack workspace and bot token\n- Ethics policy database or API endpoint\n- Database or Google Sheets for case and audit storage\n## Use Cases\n- Automated triage and escalation of employee ethics disclosures in regulated industries\n## Customisation\n- Adjust Risk Level Router thresholds to match organisational severity definitions\n## Benefits\n- Eliminates manual disclosure triage \u2014 processes cases consistently at scale"
      },
      "typeVersion": 1
    },
    {
      "id": "b5bc9884-7212-4d34-b0db-b482c74f7ce8",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        -112
      ],
      "parameters": {
        "width": 416,
        "height": 272,
        "content": "## Setup Steps\n1. Configure webhook URL in **Ethics Disclosure Webhook** with secure authentication.\n2. Set AI model credentials (OpenAI/Anthropic) in all agent and model nodes.\n3. Connect Slack credentials and oversight channel.\n4. Configure **Policy Database API** with your organisation's ethics policy endpoint or dataset.\n5. Connect database/Google Sheets credentials \n6. Test with sample disclosure payloads across both risk tracks before activating."
      },
      "typeVersion": 1
    },
    {
      "id": "41de5e80-12e5-41a2-93b1-8a2f7692877c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        -128
      ],
      "parameters": {
        "width": 576,
        "height": 336,
        "content": "## How It Works\nThis workflow automates ethics disclosure intake, investigation, risk routing, and escalation for compliance officers, legal teams, and ethics oversight boards. Disclosures arrive via webhook and are processed by a central Governance Agent with persistent memory, supported by four specialised AI sub-agents: Ethics Monitoring Agent (flags policy breaches), Investigation Agent (conducts structured inquiry), Reporting Agent (generates case summaries), and Escalation Agent (determines escalation need). Shared tools include Audit Trail Storage, Policy Database API, and Slack Notification Tool. A Governance Output Parser structures results for a Risk Level Router, which splits cases into critical and standard tracks. Critical cases trigger Slack alerts to the oversight team; all cases are stored and merged before a final response is dispatched. This eliminates manual triage, ensures consistent policy application, and maintains a complete audit trail for regulatory accountability."
      },
      "typeVersion": 1
    },
    {
      "id": "7d1c31b2-93bf-4e09-be82-1d6c7dd08545",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2496,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 1024,
        "content": "## Risk-Level Routing\n**What** \u2014 Governance Output Parser structures results; Risk Level Router splits into critical and standard tracks.\n**Why** \u2014 Ensures proportionate response \u2014 critical cases receive immediate oversight attention."
      },
      "typeVersion": 1
    },
    {
      "id": "6ffec648-e5c7-4920-b4de-8d51186a4adc",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1296,
        256
      ],
      "parameters": {
        "color": 7,
        "width": 1184,
        "height": 848,
        "content": "## Report & Escalate\n**What** \u2014 Reporting Agent drafts case summary; Escalation Agent determines escalation path.\n**Why** \u2014 Produces consistent, policy-aligned outputs before risk routing begins."
      },
      "typeVersion": 1
    },
    {
      "id": "5a170724-b691-43ba-99d1-7bbf082a43cc",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        272
      ],
      "parameters": {
        "color": 7,
        "width": 1088,
        "height": 832,
        "content": "## Monitor & Investigate\n**What** \u2014 Ethics Monitoring Agent flags violations; Investigation Agent conducts structured inquiry.\n**Why** \u2014 Separates detection from investigation to ensure thorough, unbiased case handling.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b48174fc-d29b-4781-9401-305be6414825",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2912,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 912,
        "height": 1056,
        "content": "## Store, Alert & Respond\n**What** \u2014 Critical cases alert Slack and store separately; all cases merge before final response is sent.\n**Why** \u2014 Closes the loop with oversight teams and maintains a unified, auditable case record."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "84fcf1cf-3147-47bb-a5fb-2acb6010dd70",
  "connections": {
    "Reporting Model": {
      "ai_languageModel": [
        [
          {
            "node": "Reporting Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Escalation Model": {
      "ai_languageModel": [
        [
          {
            "node": "Escalation Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Governance Agent": {
      "main": [
        [
          {
            "node": "Risk Level Router",
            "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
          }
        ]
      ]
    },
    "Risk Level Router": {
      "main": [
        [
          {
            "node": "Prepare Critical Case Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Prepare Critical Case Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Prepare Standard Case Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Prepare Standard Case Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge All Outcomes": {
      "main": [
        [
          {
            "node": "Send Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Investigation Model": {
      "ai_languageModel": [
        [
          {
            "node": "Investigation Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Alert Oversight Team": {
      "main": [
        [
          {
            "node": "Merge All Outcomes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Reporting Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Store Critical Cases": {
      "main": [
        [
          {
            "node": "Alert Oversight Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Store Standard Cases": {
      "main": [
        [
          {
            "node": "Merge All Outcomes",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Escalation Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Ethics Monitoring Model": {
      "ai_languageModel": [
        [
          {
            "node": "Ethics Monitoring Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Slack Notification Tool": {
      "ai_tool": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Audit Trail Storage Tool": {
      "ai_tool": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Governance Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Investigation Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Policy Database API Tool": {
      "ai_tool": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Ethics Disclosure Webhook": {
      "main": [
        [
          {
            "node": "Governance Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Critical Case Data": {
      "main": [
        [
          {
            "node": "Store Critical Cases",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Standard Case Data": {
      "main": [
        [
          {
            "node": "Store Standard Cases",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ethics Monitoring Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow automates ethics disclosure intake, investigation, risk routing, and escalation for compliance officers, legal teams, and ethics oversight boards. Disclosures arrive via webhook and are processed by a central Governance Agent with persistent memory, supported by…

Source: https://n8n.io/workflows/13916/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow automates enterprise resource planning (ERP) operations across Engineering, Finance, HR, and Admin departments for operations managers, ERP administrators, and business process owners wh

Agent, Gmail, Slack +6
AI & RAG

This workflow automates enterprise compliance governance using a multi-agent AI architecture. It targets compliance officers, legal teams, and risk managers who need continuous, jurisdiction-aware mon

Agent, OpenAI Chat, Memory Buffer Window +8
AI & RAG

This 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,

Agent, OpenAI Chat, Output Parser Structured +4
AI & RAG

This workflow automates credit operations onboarding by running KYC verification, credit bureau checks, identity validation, and sanctions screening through a single AI-powered agent. Built for credit

Agent, OpenAI Chat, Output Parser Structured +8
AI & RAG

This workflow automates credit operations onboarding by running KYC verification, credit bureau checks, identity validation, and sanctions screening through a single AI-powered agent. Built for credit

Agent, OpenAI Chat, Output Parser Structured +8