AutomationFlowsWeb Scraping › [dev] Eval / Sris-master-orchestrator

[dev] Eval / Sris-master-orchestrator

[DEV] eval / sris-master-orchestrator. Uses httpRequest. Webhook trigger; 11 nodes.

Webhook trigger★★★★☆ complexity11 nodesHTTP Request
Web Scraping Trigger: Webhook Nodes: 11 Complexity: ★★★★☆ Added:

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
{
  "name": "[DEV] eval / sris-master-orchestrator",
  "description": null,
  "active": true,
  "nodes": [
    {
      "id": "webhook-trigger",
      "name": "SRIS Trigger",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        300
      ],
      "parameters": {
        "path": "sris-orchestrator",
        "httpMethod": "POST",
        "responseMode": "responseNode",
        "options": {},
        "authentication": "headerAuth"
      }
    },
    {
      "id": "parse-config",
      "name": "Parse Config",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        220,
        300
      ],
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "const input = $input.first().json.body || $input.first().json || {};\n\nconst config = {\n  mode: input.mode || 'full',\n  trigger: input.trigger || 'manual',\n  target_agents: input.target_agents || ['<REDACTED:elevenlabs-agent-id>'],\n  target_workflows: input.target_workflows || [],\n  n8n_eval_webhook: input.n8n_eval_webhook || 'https://n8n.wranngle.com/webhook/parallel-eval-runner-v6',\n  elevenlabs_eval_webhook: 'https://n8n.wranngle.com/webhook/elevenlabs-conversation-eval',\n  thresholds: {\n    n8n_pass_rate_critical: 80,\n    n8n_pass_rate_warning: 95,\n    elevenlabs_pass_rate_critical: 75,\n    elevenlabs_tool_accuracy_critical: 85\n  },\n  started_at: new Date().toISOString(),\n  run_id: `sris_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n};\n\nreturn [{ json: config }];"
      }
    },
    {
      "id": "run-n8n-eval",
      "name": "Run n8n Evaluation",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        440,
        200
      ],
      "parameters": {
        "method": "POST",
        "url": "={{ $json.n8n_eval_webhook }}",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ limit: 100, batch_size: 25 }) }}",
        "options": {
          "timeout": 300000
        }
      }
    },
    {
      "id": "run-elevenlabs-eval",
      "name": "Run ElevenLabs Evaluation",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        440,
        400
      ],
      "parameters": {
        "method": "POST",
        "url": "={{ $('Parse Config').item.json.elevenlabs_eval_webhook }}",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ agent_id: $('Parse Config').item.json.target_agents[0] }) }}",
        "options": {
          "timeout": 300000
        }
      }
    },
    {
      "id": "merge-results",
      "name": "Merge Results",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3,
      "position": [
        660,
        300
      ],
      "parameters": {
        "mode": "combine",
        "combineBy": "combineAll",
        "options": {}
      }
    },
    {
      "id": "aggregate-metrics",
      "name": "Aggregate Unified Metrics",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        880,
        300
      ],
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "const items = $input.all();\nconst config = $('Parse Config').item.json;\n\nlet n8nResults = null;\nlet elevenlabsResults = null;\n\nfor (const item of items) {\n  const data = item.json;\n  if (data.summary && data.summary.total_tests !== undefined && !data.summary.total_scenarios) {\n    n8nResults = data;\n  } else if (data.summary && data.summary.total_scenarios !== undefined) {\n    elevenlabsResults = data.evaluation || data;\n  } else if (data.evaluation) {\n    elevenlabsResults = data.evaluation;\n  }\n}\n\nconst n8nPassRate = n8nResults?.summary?.pass_rate ? parseFloat(n8nResults.summary.pass_rate) : 100;\nconst n8nLatency = n8nResults?.summary?.avg_latency_ms || 0;\n\nconst elPassRate = elevenlabsResults?.summary?.pass_rate ? parseFloat(elevenlabsResults.summary.pass_rate) : 100;\nconst elToolAccuracy = elevenlabsResults?.summary?.avg_tool_accuracy ? parseFloat(elevenlabsResults.summary.avg_tool_accuracy) : 100;\n\nconst thresholds = config.thresholds;\n\nlet overallStatus = 'OK';\nlet actions = [];\n\nif (n8nPassRate < thresholds.n8n_pass_rate_critical) {\n  overallStatus = 'CRITICAL';\n  actions.push({ type: 'n8n_autocorrect', reason: `n8n pass rate ${n8nPassRate}% below critical threshold ${thresholds.n8n_pass_rate_critical}%` });\n} else if (n8nPassRate < thresholds.n8n_pass_rate_warning) {\n  if (overallStatus !== 'CRITICAL') overallStatus = 'WARNING';\n}\n\nif (elPassRate < thresholds.elevenlabs_pass_rate_critical || elToolAccuracy < thresholds.elevenlabs_tool_accuracy_critical) {\n  overallStatus = 'CRITICAL';\n  actions.push({ type: 'elevenlabs_autocorrect', reason: `ElevenLabs pass rate ${elPassRate}% or tool accuracy ${elToolAccuracy}% below threshold`, agent_id: config.target_agents[0], dominant_pattern: elevenlabsResults?.dominant_pattern });\n}\n\nconst unifiedMetrics = {\n  run_id: config.run_id,\n  trigger: config.trigger,\n  timestamp: new Date().toISOString(),\n  overall_status: overallStatus,\n  n8n_stack: {\n    pass_rate: n8nPassRate,\n    avg_latency_ms: n8nLatency,\n    total_tests: n8nResults?.summary?.total_tests || 0,\n    failures: n8nResults?.failure_count || 0\n  },\n  elevenlabs_stack: {\n    pass_rate: elPassRate,\n    tool_accuracy: elToolAccuracy,\n    total_scenarios: elevenlabsResults?.summary?.total_scenarios || 0,\n    failures: elevenlabsResults?.summary?.failed || 0,\n    dominant_pattern: elevenlabsResults?.dominant_pattern\n  },\n  actions_required: actions,\n  raw_results: { n8n: n8nResults, elevenlabs: elevenlabsResults }\n};\n\nreturn [{ json: unifiedMetrics }];"
      }
    },
    {
      "id": "check-status",
      "name": "Check Status",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [
        1100,
        300
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "critical",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.overall_status }}",
                    "rightValue": "CRITICAL"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra"
        }
      }
    },
    {
      "id": "process-actions",
      "name": "Process Actions",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1320,
        200
      ],
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "const metrics = $input.first().json;\nconst actions = metrics.actions_required || [];\n\nconst actionItems = [];\nfor (const action of actions) {\n  if (action.type === 'elevenlabs_autocorrect') {\n    actionItems.push({\n      json: {\n        action_type: 'elevenlabs',\n        webhook: 'https://n8n.wranngle.com/webhook/autorefinement-trigger',\n        payload: {\n          agent_id: action.agent_id,\n          dominant_pattern: action.dominant_pattern,\n          failures: metrics.raw_results.elevenlabs?.detailed_results?.filter(r => !r.passed) || [],\n          total_tests: metrics.elevenlabs_stack.total_scenarios,\n          passed_tests: metrics.elevenlabs_stack.total_scenarios - metrics.elevenlabs_stack.failures,\n          source: 'sris-orchestrator'\n        }\n      }\n    });\n  }\n  if (action.type === 'n8n_autocorrect') {\n    actionItems.push({\n      json: {\n        action_type: 'n8n',\n        webhook: null,\n        payload: { reason: action.reason, failures: metrics.raw_results.n8n?.failures_by_category || {} }\n      }\n    });\n  }\n}\n\nif (actionItems.length === 0) {\n  actionItems.push({ json: { action_type: 'none', payload: {} } });\n}\n\nreturn actionItems;"
      }
    },
    {
      "id": "execute-actions",
      "name": "Execute Autocorrection",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1540,
        200
      ],
      "parameters": {
        "method": "POST",
        "url": "={{ $json.webhook }}",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify($json.payload) }}",
        "options": {
          "timeout": 120000
        }
      }
    },
    {
      "id": "respond-critical",
      "name": "Respond: Critical",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        1760,
        200
      ],
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ { status: 'critical', run_id: $('Aggregate Unified Metrics').item.json.run_id, metrics: $('Aggregate Unified Metrics').item.json, autocorrection_triggered: true, autocorrection_result: $json } }}"
      }
    },
    {
      "id": "respond-ok",
      "name": "Respond: OK/Warning",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        1320,
        400
      ],
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ { status: $json.overall_status.toLowerCase(), run_id: $json.run_id, metrics: $json, autocorrection_triggered: false } }}"
      }
    }
  ],
  "connections": {
    "SRIS Trigger": {
      "main": [
        [
          {
            "node": "Parse Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Config": {
      "main": [
        [
          {
            "node": "Run n8n Evaluation",
            "type": "main",
            "index": 0
          },
          {
            "node": "Run ElevenLabs Evaluation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run n8n Evaluation": {
      "main": [
        [
          {
            "node": "Merge Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run ElevenLabs Evaluation": {
      "main": [
        [
          {
            "node": "Merge Results",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Merge Results": {
      "main": [
        [
          {
            "node": "Aggregate Unified Metrics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate Unified Metrics": {
      "main": [
        [
          {
            "node": "Check Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Status": {
      "main": [
        [
          {
            "node": "Process Actions",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Respond: OK/Warning",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process Actions": {
      "main": [
        [
          {
            "node": "Execute Autocorrection",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Execute Autocorrection": {
      "main": [
        [
          {
            "node": "Respond: Critical",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "callerPolicy": "workflowsFromSameOwner",
    "availableInMCP": true
  },
  "tags": [
    "DEV"
  ]
}
Pro

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

About this workflow

[DEV] eval / sris-master-orchestrator. Uses httpRequest. Webhook trigger; 11 nodes.

Source: https://github.com/wranngle/n8n_showcase/blob/main/workflows/eval/sris-master-orchestrator.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

eek-Go v2 (Batch-Then-Review). Uses httpRequest. Webhook trigger; 75 nodes.

HTTP Request
Web Scraping

This workflow receives webhook requests from a content calendar and uses the X API v2 to publish text posts, threads, image/video posts, and polls, as well as delete existing posts and run a credentia

HTTP Request
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request