{
  "id": "PIqEzLo8xiWlZlLkehAYo",
  "name": "AI-driven academic promotion governance and performance validation system",
  "tags": [],
  "nodes": [
    {
      "id": "6b9a6d8c-ea9d-49a6-8e1b-747a254d0ce7",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2288,
        288
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "47b23ea2-1fd4-41fa-890c-d9873e99914b",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        -2064,
        288
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "performanceDataApiUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Performance Data API URL__>"
            },
            {
              "id": "id-2",
              "name": "policyRulesApiUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Policy Rules API URL__>"
            },
            {
              "id": "id-3",
              "name": "hrEscalationEmail",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__HR Escalation Email Address__>"
            },
            {
              "id": "id-4",
              "name": "minResearchOutputs",
              "type": "number",
              "value": 5
            },
            {
              "id": "id-5",
              "name": "minTeachingScore",
              "type": "number",
              "value": 7.5
            },
            {
              "id": "id-6",
              "name": "minServiceContributions",
              "type": "number",
              "value": 3
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "e304549c-c311-4228-bee6-785d19349c85",
      "name": "Fetch Performance Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1840,
        192
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.performanceDataApiUrl }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "ca94d8d0-57fc-4301-87d1-cce500970aed",
      "name": "Fetch Policy Rules",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1840,
        384
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.policyRulesApiUrl }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "62d5cdf4-82f5-47ce-a44e-275029241f2c",
      "name": "OpenAI Model - Performance Agent",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1104,
        640
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.1
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "d4661b86-cfed-479c-9eb8-bacce0481c4f",
      "name": "OpenAI Model - Governance Agent",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1472,
        384
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.1
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "3dc5ef73-3c7b-479c-85ed-389876b2afc2",
      "name": "OpenAI Model - Calibration Agent",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -736,
        640
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.1
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "dfc6bfe1-976b-4fa7-94d2-5ce756deac20",
      "name": "Performance Validation Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -912,
        640
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"validationStatus\": \"VALID\",\n  \"peerReviewScore\": 8.5,\n  \"researchOutputsCount\": 12,\n  \"teachingEvaluationScore\": 8.2,\n  \"serviceContributionsCount\": 5,\n  \"flaggedIssues\": [],\n  \"overallAssessment\": \"Candidate meets all performance criteria for promotion consideration\",\n  \"reasoning\": \"All metrics exceed minimum thresholds with strong peer review scores\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "4d29a145-13b4-4f64-915e-4a33862bb2ac",
      "name": "Governance Decision Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -320,
        432
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"decision\": \"APPROVED\",\n  \"eligibilityStatus\": \"ELIGIBLE\",\n  \"calibrationCheckPassed\": true,\n  \"policyComplianceStatus\": \"COMPLIANT\",\n  \"escalationRequired\": false,\n  \"reasoning\": \"All validation checks passed, calibration confirms consistency with institutional standards, policy compliance verified\",\n  \"recommendedActions\": [\"Proceed with promotion approval\", \"Notify candidate and department\"],\n  \"auditTrail\": {\n    \"performanceValidation\": \"PASSED\",\n    \"calibrationCheck\": \"PASSED\",\n    \"policyCompliance\": \"VERIFIED\",\n    \"timestamp\": \"2024-01-15T10:30:00Z\"\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "942279c3-9494-472e-a9ce-62ab4bf5c761",
      "name": "Calibration Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -512,
        640
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"calibrationStatus\": \"ALIGNED\",\n  \"consistencyScore\": 9.2,\n  \"comparisonWithPeers\": \"Performance metrics align with successful promotion cases in similar departments\",\n  \"deviationFlags\": [],\n  \"calibrationNotes\": \"Candidate's profile is consistent with institutional promotion standards\",\n  \"reasoning\": \"Metrics fall within expected ranges for promotion at this level\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "bed49d06-a8f5-425a-bfd8-41f113d0b0c7",
      "name": "Performance Signal Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        -1088,
        432
      ],
      "parameters": {
        "text": "={{ $fromAI('performanceData', 'Performance data including peer reviews, research outputs, teaching evaluations, and service contributions', 'json') }}",
        "options": {
          "systemMessage": "You are a Performance Signal Validation Agent specialized in academic promotion assessment.\n\nYour task is to:\n1. Systematically validate structured performance inputs including peer reviews, research outputs, teaching evaluations, and service contributions\n2. Check each metric against minimum thresholds defined in institutional policy\n3. Identify any data quality issues, missing information, or anomalies\n4. Calculate aggregate performance scores\n5. Flag any concerns or exceptional cases\n6. Provide objective assessment without subjective scoring\n7. Return structured validation results with clear pass/fail status for each criterion\n\nValidation Criteria:\n- Peer Review Score: minimum 7.0/10\n- Research Outputs: minimum 5 publications\n- Teaching Evaluation: minimum 7.5/10\n- Service Contributions: minimum 3 activities\n\nEnsure transparency and eliminate subjective bias in all assessments."
        },
        "hasOutputParser": true,
        "toolDescription": "Validates academic performance data against institutional criteria including peer reviews, research outputs, teaching evaluations, and service contributions"
      },
      "typeVersion": 3
    },
    {
      "id": "66e8da1d-4c65-4720-90dd-11da22e1160b",
      "name": "Calibration Agent Tool",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        -736,
        432
      ],
      "parameters": {
        "text": "={{ $fromAI('validationResults', 'Performance validation results to calibrate against institutional standards', 'json') }}",
        "options": {
          "systemMessage": "You are a Calibration Agent responsible for ensuring consistency and fairness in promotion decisions.\n\nYour task is to:\n1. Compare candidate performance metrics with historical promotion cases\n2. Identify deviations from institutional norms and standards\n3. Enforce calibration checkpoints to ensure consistency across departments\n4. Flag cases that fall outside expected ranges\n5. Verify alignment with peer institutions and benchmarks\n6. Provide calibration scores and consistency assessments\n7. Return structured calibration results with alignment status\n\nCalibration ensures that promotion decisions are consistent, fair, and aligned with institutional standards, eliminating departmental bias and subjective variations."
        },
        "hasOutputParser": true,
        "toolDescription": "Calibrates promotion decisions against institutional standards and historical data to ensure consistency and fairness"
      },
      "typeVersion": 3
    },
    {
      "id": "2e44d957-7ee5-4cf8-81c8-55ceaf58cbc5",
      "name": "Governance Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1472,
        192
      ],
      "parameters": {
        "text": "={{ $json }}",
        "options": {
          "systemMessage": "You are a Governance Agent responsible for overseeing academic promotion eligibility workflows.\n\nYour task is to:\n1. Orchestrate the promotion evaluation process by calling specialized agent tools\n2. Call the Performance Signal Agent Tool to validate candidate performance data\n3. Call the Calibration Agent Tool to ensure consistency with institutional standards\n4. Call the Policy Compliance Checker Tool to verify adherence to promotion policies\n5. Synthesize findings from all agents to make a final promotion decision\n6. Enforce transparency and eliminate subjective scoring throughout the process\n7. Determine if HR review escalation is required based on policy-aligned criteria\n8. Return structured decision with clear reasoning and audit trail\n\nDecision Categories:\n- APPROVED: All checks passed, candidate eligible for promotion\n- REJECTED: Failed critical criteria, not eligible for promotion\n- ESCALATION_REQUIRED: Edge case requiring human HR review\n\nEnsure all decisions are policy-aligned, transparent, and consistently applied."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "15f1f293-f07e-4ec5-9a0d-9ca9245ae452",
      "name": "Route by Decision",
      "type": "n8n-nodes-base.switch",
      "position": [
        -576,
        160
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Approved",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": false,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.decision }}",
                    "rightValue": "APPROVED"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Rejected",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": false,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.decision }}",
                    "rightValue": "REJECTED"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Escalation",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": false,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.decision }}",
                    "rightValue": "ESCALATION_REQUIRED"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra",
          "renameFallbackOutput": "Unprocessed"
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "840e4f73-9f5e-4440-96c6-f836eb0e9c6e",
      "name": "Store Approved Promotions",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        -48,
        144
      ],
      "parameters": {
        "columns": {
          "value": null,
          "mappingMode": "autoMapInputData"
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__Approved Promotions Table ID__>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "b396915b-db2a-469b-8299-ee557e3bb7d5",
      "name": "Store Rejected Cases",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        -160,
        256
      ],
      "parameters": {
        "columns": {
          "value": null,
          "mappingMode": "autoMapInputData"
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__Rejected Cases Table ID__>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "09e83bdc-43f2-48b9-9337-6d673e4c1aae",
      "name": "Wait for HR Review",
      "type": "n8n-nodes-base.wait",
      "position": [
        48,
        512
      ],
      "parameters": {
        "resume": "webhook",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 1.1
    },
    {
      "id": "3000129c-ce9f-452e-acbc-66df8bc81ed5",
      "name": "Send HR Escalation Email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        448,
        512
      ],
      "parameters": {
        "html": "=<html>\n<body style='font-family: Arial, sans-serif; line-height: 1.6; color: #333;'>\n<div style='background-color: #ffc107; color: #000; padding: 20px; border-left: 5px solid #ff9800;'>\n<h2>\u26a0\ufe0f HR ESCALATION REQUIRED: Academic Promotion Review</h2>\n</div>\n\n<div style='padding: 20px;'>\n<p><strong>Candidate:</strong> {{ $json.output.candidateName || 'Not specified' }}</p>\n<p><strong>Department:</strong> {{ $json.output.department || 'Not specified' }}</p>\n<p><strong>Current Rank:</strong> {{ $json.output.currentRank || 'Not specified' }}</p>\n<p><strong>Proposed Rank:</strong> {{ $json.output.proposedRank || 'Not specified' }}</p>\n<p><strong>Escalation Reason:</strong> {{ $json.output.reasoning }}</p>\n\n<h3>Governance Decision Summary</h3>\n<p><strong>Eligibility Status:</strong> {{ $json.output.eligibilityStatus }}</p>\n<p><strong>Policy Compliance:</strong> {{ $json.output.policyComplianceStatus }}</p>\n<p><strong>Calibration Check:</strong> {{ $json.output.calibrationCheckPassed ? 'PASSED' : 'FAILED' }}</p>\n\n<h3>Recommended Actions</h3>\n<ul>\n{{ $json.output.recommendedActions ? $json.output.recommendedActions.map(action => `<li>${action}</li>`).join('') : '<li>Review case manually</li>' }}\n</ul>\n\n<h3>Audit Trail</h3>\n<pre style='background-color: #f5f5f5; padding: 15px; border-radius: 5px; overflow-x: auto;'>\n{{ JSON.stringify($json.output.auditTrail, null, 2) }}\n</pre>\n\n<p style='margin-top: 30px; padding: 15px; background-color: #e3f2fd; border-left: 4px solid #2196f3;'>\n<strong>Action Required:</strong> This case requires manual HR review and decision. Please review the details above and respond via the workflow webhook to proceed.\n</p>\n\n<p style='color: #666; font-size: 12px; margin-top: 30px;'>Generated by AI-Driven Academic Promotion Governance System on {{ $now.toFormat('yyyy-MM-dd HH:mm:ss') }}</p>\n</div>\n</body>\n</html>",
        "options": {},
        "subject": "=ESCALATION REQUIRED: Academic Promotion Review - {{ $json.output.candidateName || 'Candidate' }}",
        "toEmail": "={{ $('Workflow Configuration').first().json.hrEscalationEmail }}",
        "fromEmail": "<__PLACEHOLDER_VALUE__Sender Email Address__>"
      },
      "typeVersion": 2.1
    },
    {
      "id": "785c85d8-8492-4162-84fe-949090ba7871",
      "name": "Merge All Outcomes",
      "type": "n8n-nodes-base.merge",
      "position": [
        224,
        160
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3.2
    },
    {
      "id": "2f80270c-8b98-424e-ad07-a66e7acbd7d0",
      "name": "Store Audit Trail",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        416,
        176
      ],
      "parameters": {
        "columns": {
          "value": null,
          "mappingMode": "autoMapInputData"
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__Audit Trail Table ID__>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "353c8c26-a14d-4351-baf8-3fa799b3f4b0",
      "name": "Policy Compliance Checker Tool",
      "type": "@n8n/n8n-nodes-langchain.toolCode",
      "position": [
        -448,
        432
      ],
      "parameters": {
        "jsCode": "const candidateData = $fromAI('candidateData', 'Candidate performance and validation data to check against policy rules', 'json');\nconst policyRules = $fromAI('policyRules', 'Institutional policy rules for promotion eligibility', 'json');\n\ntry {\n  const data = typeof candidateData === 'string' ? JSON.parse(candidateData) : candidateData;\n  const rules = typeof policyRules === 'string' ? JSON.parse(policyRules) : policyRules;\n  \n  // Policy compliance checks\n  const checks = {\n    minimumYearsInRank: data.yearsInCurrentRank >= (rules.minYearsInRank || 5),\n    requiredPublications: data.researchOutputsCount >= (rules.minPublications || 5),\n    teachingRequirement: data.teachingEvaluationScore >= (rules.minTeachingScore || 7.5),\n    serviceRequirement: data.serviceContributionsCount >= (rules.minServiceContributions || 3),\n    noEthicsViolations: !data.ethicsViolations || data.ethicsViolations.length === 0,\n    departmentApproval: data.departmentApprovalStatus === 'APPROVED'\n  };\n  \n  const allChecksPassed = Object.values(checks).every(check => check === true);\n  const failedChecks = Object.keys(checks).filter(key => checks[key] === false);\n  \n  const result = {\n    complianceStatus: allChecksPassed ? 'COMPLIANT' : 'NON_COMPLIANT',\n    checks: checks,\n    failedChecks: failedChecks,\n    policyViolations: failedChecks.map(check => `Failed: ${check}`),\n    recommendation: allChecksPassed ? 'Proceed with promotion' : 'Address policy violations before proceeding',\n    verificationDate: new Date().toISOString()\n  };\n  \n  return JSON.stringify(result, null, 2);\n  \n} catch (error) {\n  return JSON.stringify({\n    complianceStatus: 'ERROR',\n    error: 'Policy compliance check failed',\n    message: error.message\n  });\n}",
        "description": "Verifies policy compliance for promotion decisions based on institutional rules and regulations"
      },
      "typeVersion": 1.3
    },
    {
      "id": "710c21a4-a6ec-4072-9c50-40df816826a1",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1184,
        -288
      ],
      "parameters": {
        "color": 6,
        "width": 480,
        "height": 352,
        "content": "## Prerequisites\nAPI key, performance management system data access, Gmail account with app password\n## Use Cases\nAnnual performance review calibration, promotion decision validation\n## Customization\nIntegrate HRIS for live performance data, add custom policy rule engines\n## Benefits\nReduces governance review time by 70%, ensures consistent policy application"
      },
      "typeVersion": 1
    },
    {
      "id": "4c4bc85f-b344-4577-8a39-18c9517520ef",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1616,
        -176
      ],
      "parameters": {
        "width": 368,
        "height": 272,
        "content": "## Setup Steps\n1. Configure API credentials with Llama-3.1-70B-Instruct model access\n2. Set up schedule trigger aligned with review cycles (quarterly/annual)\n3. Configure decision routing logic for approved versus exception cases\n4. Connect Gmail for HR escalation alerts to designated reviewers\n5. Set up Google Sheets for storing approved promotions and audit trails\n"
      },
      "typeVersion": 1
    },
    {
      "id": "02bfea25-75d8-4a7a-b0b7-dd7bca142632",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2288,
        -176
      ],
      "parameters": {
        "width": 608,
        "height": 272,
        "content": "## How It Works\nThis workflow automates performance governance and policy compliance monitoring for HR leaders, talent managers, and organizational development teams across enterprises. It solves the challenge of maintaining consistent performance standards while ensuring human judgment on promotion and termination decisions. Scheduled triggers initiate governance cycles that fetch performance data and policy rules, then orchestrate specialized AI agents working in parallel: governance assessment evaluates policy adherence, performance validation verifies metric accuracy, and calibration analysis ensures rating consistency across departments. A policy compliance checker synthesizes findings and routes outcomes intelligently\u2014approved promotions store automatically, while exceptions requiring HR review trigger human approval gates before case creation and email escalation."
      },
      "typeVersion": 1
    },
    {
      "id": "8d780832-91bd-40e6-97a5-8a628b050ab3",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -768,
        96
      ],
      "parameters": {
        "color": 7,
        "width": 1392,
        "height": 768,
        "content": "## Calibration Analysis \nMaintains organizational fairness and prevents manager bias from creating inequitable outcomes."
      },
      "typeVersion": 1
    },
    {
      "id": "238fd13f-e6c3-4a04-8fd0-cbac06d23e0a",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1184,
        112
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 784,
        "content": "## Performance Validation \nEnsures decisions rest on accurate, defensible evidence that withstands scrutiny during disputes."
      },
      "typeVersion": 1
    },
    {
      "id": "b6a524b6-360b-4d93-8e17-1724d0127b92",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2320,
        112
      ],
      "parameters": {
        "color": 7,
        "width": 1104,
        "height": 416,
        "content": "## Governance Assessment\nIdentifies rating inconsistencies and bias patterns requiring intervention before decisions become final."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "dc17dadd-ef29-4cee-b569-7e3731674639",
  "connections": {
    "Governance Agent": {
      "main": [
        [
          {
            "node": "Route by Decision",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route by Decision": {
      "main": [
        [
          {
            "node": "Store Approved Promotions",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Store Rejected Cases",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait for HR Review",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge All Outcomes": {
      "main": [
        [
          {
            "node": "Store Audit Trail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for HR Review": {
      "main": [
        [
          {
            "node": "Send HR Escalation Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Store Rejected Cases": {
      "main": [
        [
          {
            "node": "Merge All Outcomes",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Calibration Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Performance Data": {
      "main": [
        [
          {
            "node": "Governance Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Fetch Performance Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Fetch Policy Rules",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send HR Escalation Email": {
      "main": [
        [
          {
            "node": "Merge All Outcomes",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Calibration Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Calibration Agent Tool",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Store Approved Promotions": {
      "main": [
        [
          {
            "node": "Merge All Outcomes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Performance Signal Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Policy Compliance Checker Tool": {
      "ai_tool": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model - Governance Agent": {
      "ai_languageModel": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model - Calibration Agent": {
      "ai_languageModel": [
        [
          {
            "node": "Calibration Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model - Performance Agent": {
      "ai_languageModel": [
        [
          {
            "node": "Performance Signal Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Governance Decision Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Governance Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Performance Validation Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Performance Signal Agent Tool",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}