{
  "id": "klo6ta4D1N8Ix3u9",
  "name": "AI Data Engineering Orchestrator with Multi-Agent and Severity-Based Routing",
  "tags": [],
  "nodes": [
    {
      "id": "497d93d5-8bae-46b5-8394-8a0680f5336d",
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "position": [
        0,
        144
      ],
      "parameters": {
        "path": "engineering-orchestration",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "lastNode"
      },
      "typeVersion": 2.1
    },
    {
      "id": "8f3ca3fb-49ff-4f61-8dea-72f71a5fe598",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        224,
        144
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "max_http_requests",
              "type": "number",
              "value": 2
            },
            {
              "id": "id-2",
              "name": "compliance_standards",
              "type": "array",
              "value": "[\"ISO 9001\", \"ISO 14001\", \"OSHA\", \"CE Marking\"]"
            },
            {
              "id": "id-3",
              "name": "severity_threshold",
              "type": "string",
              "value": "medium"
            },
            {
              "id": "id-4",
              "name": "confidence_threshold",
              "type": "number",
              "value": 0.7
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "721859ba-ce1d-4c1c-9eed-27466905c6c2",
      "name": "Engineering Orchestration Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        728,
        144
      ],
      "parameters": {
        "text": "=Engineering Data:\n{{ JSON.stringify($json, null, 2) }}\n\nConfiguration:\n- Max HTTP Requests: {{ $json.max_http_requests }}\n- Compliance Standards: {{ JSON.stringify($json.compliance_standards) }}\n- Severity Threshold: {{ $json.severity_threshold }}\n- Confidence Threshold: {{ $json.confidence_threshold }}",
        "options": {
          "systemMessage": "You are an AI engineering orchestration agent responsible for end-to-end management of complex engineering projects.\n\nYour responsibilities:\n1. Analyze design specifications, CAD models, simulation outputs, and real-time operational data\n2. Detect potential technical failures, performance deviations, safety hazards, or regulatory non-conformances\n3. Prioritize issues based on severity, impact, and probability\n4. Propose iterative design or process improvements\n5. Correlate prototype testing results with historical performance and workflow outcomes\n6. Predict resource, scheduling, and maintenance bottlenecks\n7. Enforce compliance with industry standards, certifications, and safety regulations\n8. Track mitigation actions and workflow states\n\nIMPORTANT CONSTRAINTS:\n- You MUST NOT make unauthorized engineering decisions\n- You provide analysis, recommendations, and risk assessments only\n- All outputs must be deterministic and audit-ready\n- Ensure full traceability of all findings and recommendations\n- Support multi-agent coordination through structured outputs\n\nAnalyze the provided engineering data and generate a comprehensive risk assessment with actionable insights. Consider all workflow states: design_validation, prototype_testing, risk_assessment, compliance_verification, operational_optimization, and mitigation_tracking.\n\nProvide your analysis in the structured JSON format defined by the output parser."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "54e72a0a-4b7b-4a35-aaa4-86be6f76a9ab",
      "name": "Anthropic Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        448,
        368
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-sonnet-4-5-20250929",
          "cachedResultName": "Claude Sonnet 4.5"
        },
        "options": {}
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "2c6da381-54d5-47d8-81a8-40a9dd169742",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1152,
        368
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"entity_id\": {\n      \"type\": \"string\"\n    },\n    \"workflow_state\": {\n      \"type\": \"string\",\n      \"enum\": [\"design_validation\", \"prototype_testing\", \"risk_assessment\", \"compliance_verification\", \"operational_optimization\", \"mitigation_tracking\"]\n    },\n    \"risk_type\": {\n      \"type\": \"string\",\n      \"enum\": [\"technical_failure\", \"performance_deviation\", \"safety_hazard\", \"regulatory_non_conformance\", \"resource_bottleneck\", \"scheduling_conflict\", \"maintenance_issue\"]\n    },\n    \"severity\": {\n      \"type\": \"string\",\n      \"enum\": [\"critical\", \"high\", \"medium\", \"low\"]\n    },\n    \"observed_issues\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"recommended_action\": {\n      \"type\": \"string\"\n    },\n    \"priority\": {\n      \"type\": \"number\",\n      \"minimum\": 1,\n      \"maximum\": 10\n    },\n    \"responsible_team\": {\n      \"type\": \"string\"\n    },\n    \"predicted_impact\": {\n      \"type\": \"string\"\n    },\n    \"confidence_score\": {\n      \"type\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 1\n    },\n    \"timestamp\": {\n      \"type\": \"string\"\n    },\n    \"data_sources\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"mitigation_status\": {\n      \"type\": \"string\"\n    }\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "60128457-b379-40d2-8053-8228423869f6",
      "name": "HTTP Request 1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3168,
        256
      ],
      "parameters": {
        "url": "<__PLACEHOLDER_VALUE__First downstream system API endpoint URL__>",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "<__PLACEHOLDER_VALUE__API authentication token for first system__>"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "ba930d64-660d-43ab-97e2-11c8b69a5d6f",
      "name": "HTTP Request 2",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3392,
        256
      ],
      "parameters": {
        "url": "<__PLACEHOLDER_VALUE__Second downstream system API endpoint URL__>",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $('Prepare Final Report').item.json }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "<__PLACEHOLDER_VALUE__API authentication token for second system__>"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "957f555a-b099-4621-a170-7427df2e27fb",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        3616,
        256
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{ { \"status\": \"success\", \"message\": \"Engineering orchestration analysis completed\", \"final_report\": $('Prepare Final Report').item.json, \"analysis_result\": $('Engineering Orchestration Agent').item.json, \"http_request_1_status\": $('HTTP Request 1').item.json.statusCode || \"completed\", \"http_request_2_status\": $('HTTP Request 2').item.json.statusCode || \"completed\", \"timestamp\": $now.toISO(), \"execution_id\": $execution.id } }}"
      },
      "typeVersion": 1.5
    },
    {
      "id": "02ec2f34-6f03-4847-bbcb-4e28110d83b4",
      "name": "Route by Severity",
      "type": "n8n-nodes-base.switch",
      "position": [
        1824,
        240
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Critical",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.severity }}",
                    "rightValue": "critical"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "High",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.severity }}",
                    "rightValue": "high"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Medium/Low",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "or",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.severity }}",
                    "rightValue": "medium"
                  },
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.severity }}",
                    "rightValue": "low"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.4
    },
    {
      "id": "5e479921-e481-4d9d-bfa1-e19691419b45",
      "name": "Enrich Critical Issues",
      "type": "n8n-nodes-base.code",
      "position": [
        2048,
        112
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Enrich critical issues with additional context\nconst item = $input.item.json;\n\n// Generate executive summary\nconst executiveSummary = `CRITICAL ALERT: ${item.risk_type || 'Unknown risk'} detected in ${item.workflow_state || 'unknown state'}. Severity: ${item.severity}. Priority: ${item.priority}/10. Confidence: ${(item.confidence_score * 100).toFixed(1)}%. Immediate attention required from ${item.responsible_team || 'engineering team'}.`;\n\n// Generate immediate actions based on observed issues\nconst immediateActions = [];\nif (item.observed_issues && Array.isArray(item.observed_issues)) {\n  item.observed_issues.forEach((issue, index) => {\n    immediateActions.push(`Action ${index + 1}: Investigate and address - ${issue}`);\n  });\n}\n\n// Add recommended action if available\nif (item.recommended_action) {\n  immediateActions.push(`Primary Recommendation: ${item.recommended_action}`);\n}\n\n// If no specific actions, add default critical response\nif (immediateActions.length === 0) {\n  immediateActions.push('Immediate investigation required');\n  immediateActions.push('Notify responsible team and stakeholders');\n  immediateActions.push('Implement emergency protocols');\n}\n\n// Return enriched item\nreturn {\n  ...item,\n  escalation_timestamp: new Date().toISOString(),\n  critical_alert_sent: true,\n  executive_summary: executiveSummary,\n  immediate_actions_required: immediateActions\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "3d195062-ea11-4b3d-bdb3-faefb6c26f50",
      "name": "Calculate Risk Score",
      "type": "n8n-nodes-base.code",
      "position": [
        1376,
        256
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Calculate composite risk score based on severity, priority, confidence_score, and predicted_impact\n\n// Parse severity to numeric value\nconst severityMap = {\n  'critical': 4,\n  'high': 3,\n  'medium': 2,\n  'low': 1\n};\n\nconst severity = $input.item.json.severity || 'low';\nconst severityValue = severityMap[severity.toLowerCase()] || 1;\n\nconst priority = $input.item.json.priority || 1;\nconst confidenceScore = $input.item.json.confidence_score || 0.5;\n\n// Calculate composite risk score\nconst compositeRiskScore = severityValue * priority * confidenceScore;\n\n// Categorize risk\nlet riskCategory = 'low';\nif (compositeRiskScore >= 10) {\n  riskCategory = 'critical';\n} else if (compositeRiskScore >= 6) {\n  riskCategory = 'high';\n} else if (compositeRiskScore >= 3) {\n  riskCategory = 'medium';\n}\n\n// Determine if escalation is required\nconst escalationRequired = compositeRiskScore >= 6 || severity === 'critical';\n\n// Return enriched data\nreturn {\n  ...$input.item.json,\n  composite_risk_score: Math.round(compositeRiskScore * 100) / 100,\n  risk_category: riskCategory,\n  escalation_required: escalationRequired\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "5e85a78f-c9ca-44ec-a287-8659daca31b0",
      "name": "Compliance Verification Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        576,
        368
      ],
      "parameters": {
        "text": "=Verify compliance for: {{ $fromAI(\"compliance_check_data\") }}",
        "options": {
          "systemMessage": "You are a compliance verification specialist. Analyze engineering data against the following standards: ISO 9001, ISO 14001, OSHA, CE Marking. Identify any non-conformances, gaps, or areas requiring attention. Provide specific recommendations for achieving compliance."
        },
        "toolDescription": "Verifies compliance with industry standards and regulations"
      },
      "typeVersion": 3
    },
    {
      "id": "e14b5ad9-8d23-484d-9c7a-cd90ae984666",
      "name": "Risk Analysis Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        864,
        368
      ],
      "parameters": {
        "text": "=Analyze risks for: {{ $fromAI(\"risk_analysis_data\") }}",
        "options": {
          "systemMessage": "You are a risk analysis specialist. Evaluate technical failures, performance deviations, safety hazards, resource bottlenecks, and scheduling conflicts. Calculate probability and impact scores. Provide detailed risk mitigation strategies."
        },
        "toolDescription": "Performs detailed risk analysis on engineering data"
      },
      "typeVersion": 3
    },
    {
      "id": "673c193d-739e-4785-9141-190aa7a46757",
      "name": "OpenAI Chat Model - Compliance",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        656,
        576
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "bee4f8bc-34e9-413d-9223-303400d4f382",
      "name": "OpenAI Chat Model - Risk",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        944,
        576
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "3fa76bd6-572c-49aa-a2da-aec612fafa80",
      "name": "Merge Analysis Results",
      "type": "n8n-nodes-base.merge",
      "position": [
        2272,
        240
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3.2
    },
    {
      "id": "f2f1ae2e-5791-4283-870e-fbaa4b4e744e",
      "name": "Aggregate Issues",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        2496,
        256
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "observed_issues"
      },
      "typeVersion": 1
    },
    {
      "id": "659ad1ab-9bef-456f-a735-0dfc16f28735",
      "name": "Prepare Final Report",
      "type": "n8n-nodes-base.set",
      "position": [
        2720,
        256
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "report_generated_at",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            },
            {
              "id": "id-2",
              "name": "total_issues_count",
              "type": "number",
              "value": "={{ $json.observed_issues ? $json.observed_issues.length : 0 }}"
            },
            {
              "id": "id-3",
              "name": "workflow_execution_id",
              "type": "string",
              "value": "={{ $execution.id }}"
            },
            {
              "id": "id-4",
              "name": "report_version",
              "type": "string",
              "value": "1.0"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "e7d5776a-20db-43a6-9a26-6ad8f17bbda2",
      "name": "Wait for Rate Limit",
      "type": "n8n-nodes-base.wait",
      "position": [
        2944,
        256
      ],
      "parameters": {
        "amount": 2
      },
      "typeVersion": 1.1
    },
    {
      "id": "28dbd136-98b7-4ee9-b0e8-db2d89ac0f5b",
      "name": "Fetch Historical Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1600,
        256
      ],
      "parameters": {
        "url": "<__PLACEHOLDER_VALUE__Historical data API endpoint URL__>",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "entity_id",
              "value": "={{ $json.entity_id }}"
            },
            {
              "name": "lookback_days",
              "value": "90"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "<__PLACEHOLDER_VALUE__Historical data API token__>"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "a759adf4-8bf0-4652-983f-a6a3e0218a6f",
      "name": "Process High Severity",
      "type": "n8n-nodes-base.set",
      "position": [
        2048,
        400
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "high_priority_flag",
              "type": "boolean",
              "value": true
            },
            {
              "id": "id-2",
              "name": "review_deadline",
              "type": "string",
              "value": "={{ $now.plus({ days: 3 }).toISO() }}"
            },
            {
              "id": "id-3",
              "name": "assigned_reviewer",
              "type": "string",
              "value": "Senior Engineering Team"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "cd924c34-d30d-4286-8c45-0e219ff08c13",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1600,
        -416
      ],
      "parameters": {
        "color": 5,
        "width": 576,
        "height": 336,
        "content": "## Prerequisites\nActive Anthropic and OpenAI API accounts, data processing system with webhook capability\n## Use Cases\nETL pipeline quality monitoring, data anomaly detection, dataset validation before production deployment\n## Customization\nModify orchestration agent logic for custom analysis pathways\n## Benefits\nAccelerates data quality assessment by 70%, enables proactive issue detection before production impact"
      },
      "typeVersion": 1
    },
    {
      "id": "4bdd4f03-4cf8-4dd0-b1cd-f89e0eb02851",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        944,
        -304
      ],
      "parameters": {
        "width": 592,
        "height": 224,
        "content": "## Setup Steps\n1. Configure webhook trigger endpoint for data processing system integration\n2. Set up Anthropic API credentials for Orchestrating Orchestration Agent node\n3. Configure specialized agent tools \n4. Update Calculate Risk Score node with your risk scoring methodology\n5. Set up Fetch Historical Data node with data warehouse API credentials\n6. Configure severity threshold in Route by Severity node for alert triggering\n7. Connect HTTP Request nodes with stakeholder notification endpoints"
      },
      "typeVersion": 1
    },
    {
      "id": "ef7bb249-2140-4eb7-ab6e-08473df77819",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -304
      ],
      "parameters": {
        "width": 960,
        "height": 240,
        "content": "## How It Works\nThis workflow automates complex data engineering operations by orchestrating multiple specialized AI agents to analyze datasets, calculate risk metrics, and route findings based on severity levels. Designed for data engineers, analytics teams, and business intelligence managers, it solves the challenge of processing diverse datasets through appropriate analytical frameworks while ensuring critical insights reach stakeholders immediately. The system receives data processing requests via webhook, deploys an orchestration agent that determines which specialized analysis agents to invoke (Anthropic Chat Model for general analysis, Risk Analysis Verification Agent, and Test Validation Agent), calculates risk scores, fetches relevant historical context, then routes results by severity. High-severity findings trigger immediate HTTP notifications to stakeholders, while all results are aggregated into comprehensive reports, formatted for clarity, and logged with appropriate priority markers before webhook response."
      },
      "typeVersion": 1
    },
    {
      "id": "72019adf-de37-40cf-a1f9-5c2018886c1a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2448,
        16
      ],
      "parameters": {
        "color": 7,
        "width": 1376,
        "height": 640,
        "content": "## Severity-Based Routing and Report Generation\n**Why:** Routes high-severity findings through immediate HTTP notifications for rapid stakeholder response, merges all analysis results, aggregates issues by category, formats comprehensive task reports with structured output parsing, waits for stakeholder acknowledgment, logs prioritized findings before webhook response."
      },
      "typeVersion": 1
    },
    {
      "id": "5bfa2eda-16db-4b0e-bf5a-769dfbbc5038",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1296,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 1104,
        "height": 768,
        "content": "## Multi-Agent Parallel Analysis with Risk Assessment\n**Why:** Executes specialized agents (Anthropic Chat Model, Risk Analysis Verification, Test Validation) equipped with OpenAI models for domain-specific analysis, calculates risk scores using defined algorithms, fetches historical data for trend context, ensuring comprehensive multi-dimensional dataset evaluation."
      },
      "typeVersion": 1
    },
    {
      "id": "e7dadf77-fc35-4f49-ae5a-60d3224b59f4",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        -16
      ],
      "parameters": {
        "color": 7,
        "width": 1328,
        "height": 784,
        "content": "## Webhook Intake and AI Orchestration Deployment\n**Why:** Receives data processing requests containing dataset references and analysis requirements, immediately deploys Orchestrating Orchestration Agent using Anthropic's Claude to intelligently determine which specialized analysis agents"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "c0f8d56d-f05f-44e2-9746-15decf36cc7f",
  "connections": {
    "HTTP Request 1": {
      "main": [
        [
          {
            "node": "HTTP Request 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request 2": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate Issues": {
      "main": [
        [
          {
            "node": "Prepare Final Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route by Severity": {
      "main": [
        [
          {
            "node": "Enrich Critical Issues",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Process High Severity",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Merge Analysis Results",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Wait for Rate Limit": {
      "main": [
        [
          {
            "node": "HTTP Request 1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Anthropic Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Engineering Orchestration Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Calculate Risk Score": {
      "main": [
        [
          {
            "node": "Fetch Historical Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Final Report": {
      "main": [
        [
          {
            "node": "Wait for Rate Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Historical Data": {
      "main": [
        [
          {
            "node": "Route by Severity",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process High Severity": {
      "main": [
        [
          {
            "node": "Merge Analysis Results",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Enrich Critical Issues": {
      "main": [
        [
          {
            "node": "Merge Analysis Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Analysis Results": {
      "main": [
        [
          {
            "node": "Aggregate Issues",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Engineering Orchestration Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model - Risk": {
      "ai_languageModel": [
        [
          {
            "node": "Risk Analysis Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Risk Analysis Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Engineering Orchestration Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Engineering Orchestration Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model - Compliance": {
      "ai_languageModel": [
        [
          {
            "node": "Compliance Verification Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Engineering Orchestration Agent": {
      "main": [
        [
          {
            "node": "Calculate Risk Score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compliance Verification Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Engineering Orchestration Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}