{
  "id": "ENHDNg2Zo5amFDEDtvbnv",
  "name": "AI-powered concert ticket validation and fan experience orchestration",
  "tags": [],
  "nodes": [
    {
      "id": "4fc2c390-0092-4a11-ba8d-852097aba399",
      "name": "Ticket Booking Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1648,
        208
      ],
      "parameters": {
        "path": "concert-ticket-booking",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "lastNode"
      },
      "typeVersion": 2.1
    },
    {
      "id": "13a3b63c-b9b4-40bb-87e8-1fdf054433c1",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        -1424,
        208
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "inventoryApiUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Inventory API endpoint URL__>"
            },
            {
              "id": "id-2",
              "name": "ticketingApiUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Ticketing system API endpoint URL__>"
            },
            {
              "id": "id-3",
              "name": "venueCapacity",
              "type": "number",
              "value": 5000
            },
            {
              "id": "id-4",
              "name": "maxTicketsPerCustomer",
              "type": "number",
              "value": 8
            },
            {
              "id": "id-5",
              "name": "fraudScoreThreshold",
              "type": "number",
              "value": 75
            },
            {
              "id": "id-6",
              "name": "highRiskThreshold",
              "type": "number",
              "value": 80
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "f087e8e7-f7f2-4dd5-97a8-f865040c023d",
      "name": "OpenAI Model - Validation",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -752,
        432
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.1
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "3b2c1835-290e-416f-a538-f5a007793be0",
      "name": "Validation Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -576,
        432
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"validationStatus\": \"VALID\",\n  \"riskLevel\": \"LOW\",\n  \"riskScore\": 15,\n  \"eligibilityStatus\": \"APPROVED\",\n  \"fraudIndicators\": [],\n  \"inventoryCheck\": \"AVAILABLE\",\n  \"duplicatePurchaseCheck\": \"PASS\",\n  \"botDetectionScore\": 5,\n  \"paymentAuthStatus\": \"AUTHORIZED\",\n  \"refundEligibility\": \"ELIGIBLE\",\n  \"pricingValidation\": \"CORRECT\",\n  \"resaleRestrictionCheck\": \"COMPLIANT\",\n  \"consentFlagsCheck\": \"VERIFIED\",\n  \"seatAllocationStatus\": \"CONFIRMED\",\n  \"reasoning\": \"All validation checks passed successfully\",\n  \"requiresHumanReview\": false,\n  \"escalationReason\": null\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "1f5d3304-45d1-4d76-a2d3-b6f55be08624",
      "name": "Ticket Validation Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -752,
        208
      ],
      "parameters": {
        "text": "={{ $json }}",
        "options": {
          "systemMessage": "You are a Ticket Validation Agent responsible for comprehensive verification of concert ticket bookings.\n\nYour task is to analyze booking signals and perform the following validations:\n\n1. **Ticket Tier & Seat Allocation**: Verify requested tier matches availability and seat assignments are valid\n2. **Payment Authorization**: Confirm payment method is authorized and amount matches pricing rules\n3. **Fraud Detection**: Analyze fraud indicators including velocity checks, IP reputation, device fingerprinting, and behavioral patterns\n4. **Inventory Consistency**: Cross-check available inventory against venue capacity and existing bookings\n5. **Duplicate Purchase Detection**: Identify duplicate bookings by same customer (email, payment method, address)\n6. **Bot Detection**: Evaluate bot detection signals and CAPTCHA results\n7. **Dynamic Pricing Validation**: Verify pricing matches current tier and demand-based rules\n8. **Resale Restrictions**: Check compliance with resale policies and transfer limits\n9. **Customer Consent**: Validate required consent flags (terms, privacy, marketing)\n10. **Refund Eligibility**: Determine refund eligibility based on timing and policy\n\nRisk Classification:\n- LOW (0-30): All checks pass, standard processing\n- MEDIUM (31-60): Minor concerns, proceed with monitoring\n- HIGH (61-80): Significant issues, requires additional verification\n- CRITICAL (81-100): Severe fraud indicators or policy violations, requires human review\n\nOutput standardized risk and eligibility classifications with detailed reasoning. Flag transactions requiring human review (CRITICAL risk or policy violations)."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "3ff572d0-ce4e-4fb0-94bf-238e4bbc8a01",
      "name": "OpenAI Model - Orchestration",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -80,
        464
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.2
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "b0bf78c0-3e03-4461-a2a8-15c35134f2b6",
      "name": "Orchestration Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        80,
        432
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"actions\": [\n    {\n      \"actionType\": \"SEND_CONFIRMATION\",\n      \"priority\": 1,\n      \"details\": {\n        \"channel\": \"EMAIL\",\n        \"recipientEmail\": \"user@example.com\",\n        \"subject\": \"Ticket Confirmation\",\n        \"includeQRCode\": true\n      }\n    },\n    {\n      \"actionType\": \"UPDATE_LOYALTY_POINTS\",\n      \"priority\": 2,\n      \"details\": {\n        \"customerId\": \"CUST123\",\n        \"pointsToAdd\": 100\n      }\n    }\n  ],\n  \"ticketingSystemUpdate\": {\n    \"bookingId\": \"BK123456\",\n    \"status\": \"CONFIRMED\",\n    \"seatAssignments\": [\"A12\", \"A13\"],\n    \"paymentStatus\": \"COMPLETED\"\n  },\n  \"waitlistActivation\": false,\n  \"seatReassignment\": false,\n  \"refundRequired\": false,\n  \"vipEntitlements\": [],\n  \"escalationRequired\": false,\n  \"slaCompliance\": true,\n  \"auditLogSummary\": \"Standard booking processed successfully\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "f8ea89f2-6b61-48fd-a005-b7f9045a09ba",
      "name": "Fan Experience Orchestration Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -64,
        192
      ],
      "parameters": {
        "text": "={{ $json }}",
        "options": {
          "systemMessage": "You are a Fan Experience Orchestration Agent responsible for coordinating downstream workflows after ticket validation.\n\nYour task is to analyze validation results and orchestrate the following workflows:\n\n1. **Confirmation Communications**: Send real-time confirmation via email/SMS with ticket details, QR codes, and event information\n2. **Waitlist Management**: Activate waitlist for sold-out tiers and notify waiting customers\n3. **Seat Reassignment**: Handle automated seat reassignment for upgrades, accessibility requests, or overbooking resolution\n4. **Refund/Credit Processing**: Issue refunds or credits based on cancellation policies and timing\n5. **Loyalty Program Updates**: Update customer loyalty points, tier status, and VIP entitlements\n6. **VIP Entitlement Validation**: Verify and activate VIP benefits (early entry, meet-and-greet, lounge access)\n7. **Escalation Handling**: Route high-risk transactions, payment disputes, or overbooking issues to human review\n8. **Event Cancellation Management**: Process mass refunds and communications for cancelled events\n9. **SLA Monitoring**: Ensure all actions meet service level agreement thresholds\n10. **Audit Trail Generation**: Create structured audit logs for compliance and reporting\n\nPolicies to enforce:\n- Venue capacity constraints and fire code compliance\n- Resale limits (max 2 transfers per ticket)\n- Refund windows (full refund >30 days, 50% refund 7-30 days, no refund <7 days)\n- Compensation rules for overbooking (150% refund + priority rebooking)\n- SLA thresholds (confirmation within 2 minutes, refunds within 5 business days)\n\nPrioritize actions by urgency and coordinate parallel execution where possible. Generate detailed audit logs for all actions taken."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "6cb2151e-879e-4df2-93bb-a9639c7c7d68",
      "name": "Route by Risk Level",
      "type": "n8n-nodes-base.switch",
      "position": [
        -400,
        192
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Low/Medium Risk",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "or",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.riskLevel }}",
                    "rightValue": "LOW"
                  },
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.riskLevel }}",
                    "rightValue": "MEDIUM"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "High Risk - Human Review",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "or",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.riskLevel }}",
                    "rightValue": "HIGH"
                  },
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.output.riskLevel }}",
                    "rightValue": "CRITICAL"
                  },
                  {
                    "operator": {
                      "type": "boolean",
                      "operation": "true"
                    },
                    "leftValue": "={{ $json.output.requiresHumanReview }}",
                    "rightValue": true
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra",
          "renameFallbackOutput": "Unclassified"
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b02dc223-2dc7-4366-914a-b3450a10c2e3",
      "name": "Fetch Inventory Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1200,
        208
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.inventoryApiUrl }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "b8ea7b28-2402-411c-ab0e-597ad1116a08",
      "name": "Update Ticketing System",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        224,
        160
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.ticketingApiUrl }}",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json.output.ticketingSystemUpdate }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "cd58dfb4-90e6-4d8f-afbf-f77b0df3b678",
      "name": "Send Confirmation Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        496,
        176
      ],
      "parameters": {
        "sendTo": "={{ $('Fan Experience Orchestration Agent').first().json.output.actions.find(a => a.actionType === 'SEND_CONFIRMATION')?.details?.recipientEmail || $('Ticket Booking Webhook').first().json.body.customerEmail }}",
        "message": "=<html><body style=\"font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px;\"><div style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 30px; text-align: center; border-radius: 10px 10px 0 0;\"><h1 style=\"color: white; margin: 0;\">\ud83c\udfb5 Ticket Confirmed!</h1></div><div style=\"background: #f9f9f9; padding: 30px; border-radius: 0 0 10px 10px;\"><p style=\"font-size: 16px; color: #333;\">Your concert tickets have been confirmed!</p><div style=\"background: white; padding: 20px; border-radius: 8px; margin: 20px 0;\"><h2 style=\"color: #667eea; margin-top: 0;\">Booking Details</h2><p><strong>Booking ID:</strong> {{ $('Fan Experience Orchestration Agent').first().json.output.ticketingSystemUpdate.bookingId }}</p><p><strong>Status:</strong> {{ $('Fan Experience Orchestration Agent').first().json.output.ticketingSystemUpdate.status }}</p><p><strong>Seats:</strong> {{ $('Fan Experience Orchestration Agent').first().json.output.ticketingSystemUpdate.seatAssignments?.join(', ') }}</p></div><p style=\"color: #666; font-size: 14px;\">Please bring this confirmation email and a valid ID to the venue.</p><p style=\"color: #666; font-size: 12px; margin-top: 30px;\">Questions? Contact our support team.</p></div></body></html>",
        "options": {},
        "subject": "={{ $('Fan Experience Orchestration Agent').first().json.output.actions.find(a => a.actionType === 'SEND_CONFIRMATION')?.details?.subject || 'Concert Ticket Confirmation' }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "5434a377-bbd8-4589-8828-31a7f48e127f",
      "name": "Alert Operations Team",
      "type": "n8n-nodes-base.slack",
      "position": [
        496,
        416
      ],
      "parameters": {
        "text": "=\ud83d\udea8 *HIGH RISK TICKET BOOKING - HUMAN REVIEW REQUIRED*\n\n*Risk Level:* {{ $('Ticket Validation Agent').first().json.output.riskLevel }}\n*Risk Score:* {{ $('Ticket Validation Agent').first().json.output.riskScore }}/100\n*Validation Status:* {{ $('Ticket Validation Agent').first().json.output.validationStatus }}\n\n*Booking Details:*\n\u2022 Customer Email: {{ $('Ticket Booking Webhook').first().json.body.customerEmail }}\n\u2022 Tickets Requested: {{ $('Ticket Booking Webhook').first().json.body.ticketQuantity }}\n\u2022 Total Amount: ${{ $('Ticket Booking Webhook').first().json.body.totalAmount }}\n\n*Fraud Indicators:*\n{{ $('Ticket Validation Agent').first().json.output.fraudIndicators?.join('\\n\u2022 ') || 'None' }}\n\n*Escalation Reason:*\n{{ $('Ticket Validation Agent').first().json.output.escalationReason || 'High risk score threshold exceeded' }}\n\n*Reasoning:*\n{{ $('Ticket Validation Agent').first().json.output.reasoning }}\n\n*Action Required:* Manual review and approval needed before processing.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__Slack channel ID (e.g., C1234567890)__>"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "c9aaba98-15e2-47f2-a4df-c0efd8ae3d36",
      "name": "Log to Audit Trail",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        896,
        288
      ],
      "parameters": {
        "columns": {
          "value": {
            "bookingId": "={{ $('Fan Experience Orchestration Agent').first().json.output.ticketingSystemUpdate?.bookingId || $('Ticket Booking Webhook').first().json.body.bookingId }}",
            "riskLevel": "={{ $('Ticket Validation Agent').first().json.output.riskLevel }}",
            "riskScore": "={{ $('Ticket Validation Agent').first().json.output.riskScore }}",
            "timestamp": "={{ $now.toISO() }}",
            "auditSummary": "={{ $('Fan Experience Orchestration Agent').first().json.output?.auditLogSummary || 'Processed' }}",
            "customerEmail": "={{ $('Ticket Booking Webhook').first().json.body.customerEmail }}",
            "validationStatus": "={{ $('Ticket Validation Agent').first().json.output.validationStatus }}",
            "requiresHumanReview": "={{ $('Ticket Validation Agent').first().json.output.requiresHumanReview }}"
          },
          "schema": [
            {
              "id": "bookingId",
              "required": false,
              "displayName": "bookingId",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "timestamp",
              "required": false,
              "displayName": "timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "customerEmail",
              "required": false,
              "displayName": "customerEmail",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "validationStatus",
              "required": false,
              "displayName": "validationStatus",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "riskLevel",
              "required": false,
              "displayName": "riskLevel",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "riskScore",
              "required": false,
              "displayName": "riskScore",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "requiresHumanReview",
              "required": false,
              "displayName": "requiresHumanReview",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "auditSummary",
              "required": false,
              "displayName": "auditSummary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "bookingId"
          ]
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "<__PLACEHOLDER_VALUE__Sheet name (e.g., Audit_Log)__>"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "<__PLACEHOLDER_VALUE__Google Sheets document ID for audit trail__>"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "11182175-c921-4acc-8f84-cf940ecf7223",
      "name": "Merge All Paths",
      "type": "n8n-nodes-base.merge",
      "position": [
        672,
        288
      ],
      "parameters": {
        "mode": "chooseBranch"
      },
      "typeVersion": 3.2
    },
    {
      "id": "377a491d-3e7b-4c19-9bbb-21af7f21c881",
      "name": "Prepare Validation Input",
      "type": "n8n-nodes-base.set",
      "position": [
        -976,
        208
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "bookingData",
              "type": "object",
              "value": "={{ $('Ticket Booking Webhook').first().json.body }}"
            },
            {
              "id": "id-2",
              "name": "inventoryData",
              "type": "object",
              "value": "={{ $json }}"
            },
            {
              "id": "id-3",
              "name": "venueCapacity",
              "type": "number",
              "value": "={{ $('Workflow Configuration').first().json.venueCapacity }}"
            },
            {
              "id": "id-4",
              "name": "maxTicketsPerCustomer",
              "type": "number",
              "value": "={{ $('Workflow Configuration').first().json.maxTicketsPerCustomer }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "5cf744e4-b699-4806-a481-f9785d819dac",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        -336
      ],
      "parameters": {
        "color": 6,
        "width": 448,
        "height": 352,
        "content": "## Prerequisites\nn8n account, OpenAI API key, ticketing API access, Gmail, Slack, Google Sheets\n## Use Cases\nConcert ticket sales, festival booking systems, venue seat management, VIP allocation handling\n## Customization\nAdjust fraud thresholds, add SMS notifications, integrate CRM, extend loyalty logic\n## Benefits\nReduces fraud, automates fan communication, enforces ticketing policies"
      },
      "typeVersion": 1
    },
    {
      "id": "de9e112e-d19e-4433-98bb-087a6759bec3",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        -192
      ],
      "parameters": {
        "width": 384,
        "height": 208,
        "content": "## Setup Steps\n1. Add OpenAI/Nvidia API credentials in n8n.\n2. Configure ticketing system HTTP endpoint.\n3. Connect Gmail for confirmations.\n4. Connect Slack for escalation alerts.\n5. Connect Google Sheets for audit logging.\n6. Define risk thresholds and SLA rules."
      },
      "typeVersion": 1
    },
    {
      "id": "1c368717-8d9e-4edb-813d-6c28fe21ee9c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1696,
        -320
      ],
      "parameters": {
        "width": 688,
        "height": 336,
        "content": "## How It Works\nThis workflow automates end-to-end concert ticket booking validation and fan experience management using two coordinated AI agents. It is designed for ticketing platforms, event operators, and venue operations teams that must prevent fraud, manage inventory accurately, and deliver seamless customer communication at scale. The workflow solves key challenges such as duplicate bookings, bot-driven purchases, payment failures, overbooking, and inconsistent refund handling. When a booking request enters via webhook, inventory data is fetched and normalized. The Ticket Validation Agent analyzes structured booking, payment authorization, pricing tier rules, seat allocation, resale restrictions, and fraud signals to produce a standardized risk classification. Based on risk level, the workflow routes transactions for auto-approval, conditional handling, or escalation. The Fan Experience Orchestration Agent then manages confirmations, ticket system updates, waitlist activation, refund or compensation logic, and SLA-driven escalation to operations. All outcomes are merged and logged into an audit trail, ensuring compliance, transparency, and consistent service enforcement while minimizing manual review."
      },
      "typeVersion": 1
    },
    {
      "id": "191b9b91-04e3-4c52-807c-fe5b5e52cc56",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1728,
        96
      ],
      "parameters": {
        "color": 7,
        "width": 1264,
        "height": 544,
        "content": "##  Ingest & Ticket Validation\n**What** \u2013 AI verifies payment, fraud signals, tier rules.\n**Why** \u2013 Prevent invalid or high-risk transactions."
      },
      "typeVersion": 1
    },
    {
      "id": "842d5cf5-07fa-4c39-957b-2627120649bf",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -112,
        80
      ],
      "parameters": {
        "color": 7,
        "width": 512,
        "height": 560,
        "content": "## Fan Orchestration\n**What** \u2013 Confirm, reschedule, refund, escalate.\n**Why** \u2013 Enforce SLAs and protect fan experience."
      },
      "typeVersion": 1
    },
    {
      "id": "d0a32c5a-f567-4c38-9139-9eafaf015bfb",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -448,
        80
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 576,
        "content": "## Risk Routing\n**What** \u2013 Route by low, medium, or high risk.\n**Why** \u2013 Focus human review only where necessary."
      },
      "typeVersion": 1
    },
    {
      "id": "8a4ce6a5-94f7-469c-93a2-9eba69ce60d7",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        64
      ],
      "parameters": {
        "color": 7,
        "width": 720,
        "height": 576,
        "content": "## Audit Logging\n**What** \u2013 Merge paths and log outcomes.\n**Why** \u2013 Maintain compliance and traceability."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "08f7ef11-610e-447d-8fdf-691ee90671b6",
  "connections": {
    "Merge All Paths": {
      "main": [
        [
          {
            "node": "Log to Audit Trail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route by Risk Level": {
      "main": [
        [
          {
            "node": "Fan Experience Orchestration Agent",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Alert Operations Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Inventory Data": {
      "main": [
        [
          {
            "node": "Prepare Validation Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Alert Operations Team": {
      "main": [
        [
          {
            "node": "Merge All Paths",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Ticket Booking Webhook": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Fetch Inventory Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Confirmation Email": {
      "main": [
        [
          {
            "node": "Merge All Paths",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ticket Validation Agent": {
      "main": [
        [
          {
            "node": "Route by Risk Level",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Ticketing System": {
      "main": [
        [
          {
            "node": "Send Confirmation Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Validation Input": {
      "main": [
        [
          {
            "node": "Ticket Validation Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validation Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Ticket Validation Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model - Validation": {
      "ai_languageModel": [
        [
          {
            "node": "Ticket Validation Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Orchestration Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Fan Experience Orchestration Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model - Orchestration": {
      "ai_languageModel": [
        [
          {
            "node": "Fan Experience Orchestration Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Fan Experience Orchestration Agent": {
      "main": [
        [
          {
            "node": "Update Ticketing System",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}