{
  "id": "tMuFNayeeZYimHLR",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "[MW] AI Customer Support Assistant - Cloud Version",
  "tags": [],
  "nodes": [
    {
      "id": "b617607e-61ae-4107-a72e-2a23b5a57c75",
      "name": "\ud83d\udccb Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 450,
        "height": 760,
        "content": "# \ud83c\udf10 AI Customer Support Assistant - Cloud Version\n\n## What this workflow does:\nThis AI-powered customer support automation processes incoming support requests via email or chat, analyzes them using AI, retrieves relevant context, and generates draft responses for support agents.\n\n## Key Features:\n\u2705 **Multi-channel Input**: Email & chat triggers\n\u2705 **AI-powered Analysis**: Extracts sentiment, urgency, and key information\n\u2705 **Context Integration**: Combines product manuals, ERP data, and support history\n\u2705 **Draft Response Generation**: Creates professional responses in German\n\u2705 **Human-in-the-loop**: Approval workflow before sending to customers\n\n## Demo Instructions:\n1. Use the Chat interface to test with sample customer queries\n2. Or send test emails to trigger the email workflow\n3. Watch how AI analyzes and generates contextual responses\n\n**\ud83c\udf10 This is the CLOUD version using OpenAI and Google services**"
      },
      "typeVersion": 1
    },
    {
      "id": "918dd7a6-1c69-43ed-872d-052ebf20a396",
      "name": "\ud83d\udce7 Email Input",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        500,
        300
      ],
      "parameters": {
        "color": 2,
        "width": 280,
        "height": 320,
        "content": "## \ud83d\udce7 Email Trigger\n\n**Purpose**: Monitors Gmail for incoming customer support requests\n\n**How it works**:\n\u2022 Polls Gmail every minute for new emails\n\u2022 Filters can be configured for specific labels/criteria\n\u2022 Extracts email content, sender info, and metadata\n\n**Demo tip**: Send a test email to see this in action!"
      },
      "typeVersion": 1
    },
    {
      "id": "cd753c63-7f5f-4e44-901a-d23eca0cb8e9",
      "name": "\ud83d\udce7 Support Email Received",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        620,
        660
      ],
      "parameters": {
        "filters": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "175a7569-f8d5-49b6-95ca-a83026b2aea4",
      "name": "\ud83d\udcac Chat Input",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        1160
      ],
      "parameters": {
        "color": 2,
        "width": 280,
        "height": 320,
        "content": "## \ud83d\udcac Chat Trigger\n\n**Purpose**: Provides a real-time chat interface for testing\n\n**How it works**:\n\u2022 Creates a webhook URL for chat interactions\n\u2022 Ideal for demos and testing scenarios\n\u2022 Processes messages instantly\n\n**Demo tip**: Perfect for live demonstrations!"
      },
      "typeVersion": 1
    },
    {
      "id": "f9f43182-9113-4ba0-b2a9-b82f3f9b5d46",
      "name": "\ud83e\udde0 AI Analysis",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        940,
        300
      ],
      "parameters": {
        "color": 3,
        "width": 300,
        "height": 380,
        "content": "## \ud83e\udde0 AI Information Extractor\n\n**Purpose**: Analyzes customer messages with AI to extract structured data\n\n**Extracts**:\n\u2022 Category (technical, billing, sales, etc.)\n\u2022 Urgency level (low, medium, high, critical)\n\u2022 Customer sentiment\n\u2022 Keywords for context search\n\u2022 Product identifiers\n\u2022 Required action type\n\n**AI Model**: OpenAI GPT-4o-mini"
      },
      "typeVersion": 1
    },
    {
      "id": "99ce470b-9c71-4303-a515-d197bfbf2d78",
      "name": "\ud83e\udd16 OpenAI Model (Extractor)",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        960,
        980
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e55da351-bb97-49a8-bbe7-f9f5814f7874",
      "name": "\ud83d\udcca Context Data",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1540,
        300
      ],
      "parameters": {
        "color": 4,
        "width": 300,
        "height": 380,
        "content": "## \ud83d\udcca Historical Support Data\n\n**Purpose**: Retrieves previous support cases for context\n\n**Data Source**: Google Sheets with historical customer interactions\n\n**Contains**:\n\u2022 Previous questions & answers\n\u2022 Common issues & solutions\n\u2022 Response templates\n\u2022 Product-specific guidance\n\n**Why important**: Ensures consistent, high-quality responses"
      },
      "typeVersion": 1
    },
    {
      "id": "aaf740e0-d78b-41d3-ba92-811c32b06f76",
      "name": "\ud83d\udcca Historical Support Cases",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1540,
        780
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1526853854,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1iiUzIfOoza0czupn_-4oTY6eOmH4vSENwnjSJ6Uxen4/edit#gid=1526853854",
          "cachedResultName": "zeiss_primotech_support"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1iiUzIfOoza0czupn_-4oTY6eOmH4vSENwnjSJ6Uxen4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1iiUzIfOoza0czupn_-4oTY6eOmH4vSENwnjSJ6Uxen4/edit?usp=drivesdk",
          "cachedResultName": "Zeiss Primotech Demo customer requests"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "16e63750-b911-458d-b18d-7ced534dbc44",
      "name": "\ud83d\udccb Aggregate Support Data",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1740,
        780
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "00c1c023-982b-49f7-a422-f02a3aa1c2a7",
      "name": "\ud83d\udcda Knowledge Base",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1160,
        980
      ],
      "parameters": {
        "color": 4,
        "width": 300,
        "height": 440,
        "content": "## \ud83d\udcda Product Knowledge Base\n\n**Purpose**: Accesses comprehensive product documentation\n\n**Data Source**: Google Drive (Primotech Manual PDF)\n\n**Contains**:\n\u2022 Technical specifications\n\u2022 Operating instructions\n\u2022 Troubleshooting guides\n\u2022 Safety information\n\n**Processing**: PDF text extraction for AI analysis\n\n**Cloud advantage**: Always up-to-date documentation"
      },
      "typeVersion": 1
    },
    {
      "id": "d4689f32-4c6c-4fab-94ef-4631b7b07632",
      "name": "\ud83d\udcda Download Product Manual",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1540,
        1140
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "list",
          "value": "1_MKUQLEw2RS8k-QgAP5rtw-tD49A82lG",
          "cachedResultUrl": "https://drive.google.com/file/d/1_MKUQLEw2RS8k-QgAP5rtw-tD49A82lG/view?usp=drivesdk",
          "cachedResultName": "Primotech_Manual.pdf"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "c291af40-8db0-4050-ad29-17774465cdb0",
      "name": "\ud83d\udcc4 Extract PDF Content",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        1740,
        1140
      ],
      "parameters": {
        "options": {},
        "operation": "pdf"
      },
      "typeVersion": 1
    },
    {
      "id": "e9a2cbd2-07eb-41a3-9333-2a3d4b936fe2",
      "name": "\ud83c\udfe2 ERP Integration",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1500,
        1700
      ],
      "parameters": {
        "color": 5,
        "width": 440,
        "height": 360,
        "content": "## \ud83c\udfe2 ERP System Integration\n\n**Purpose**: Retrieves customer & inventory data\n\n**Data Source**: Mock ERP API (demo purposes)\n\n**Provides**:\n\u2022 Customer account information\n\u2022 Order history\n\u2022 Product availability\n\u2022 Spare part pricing\n\n**Note**: In production, this would connect to your real ERP system\n\n**Cloud benefit**: Real-time data access"
      },
      "typeVersion": 1
    },
    {
      "id": "861dd2a5-b3ad-463c-aa19-f79c7b51c424",
      "name": "\ud83c\udfe2 Check ERP System",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1560,
        1500
      ],
      "parameters": {
        "url": "https://run.mocky.io/v3/d8892875-55d6-449d-bab3-3cb7a7b419c0",
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "578d7499-4c72-4181-b1c8-89b05d3bdae0",
      "name": "\ud83e\udd16 AI Response Generation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2000,
        1020
      ],
      "parameters": {
        "color": 3,
        "width": 320,
        "height": 400,
        "content": "## \ud83e\udd16 Response Generation\n\n**Purpose**: Creates professional customer responses using AI\n\n**AI Model**: OpenAI GPT-4o-mini\n\n**Input Context**:\n\u2022 Customer's original message\n\u2022 Extracted information (sentiment, urgency, etc.)\n\u2022 Product manual content\n\u2022 Historical support cases\n\u2022 ERP data (pricing, availability)\n\n**Output**: Professional German response following company standards"
      },
      "typeVersion": 1
    },
    {
      "id": "9858ac0e-2f3a-4476-a892-25c51b6dd654",
      "name": "\ud83e\udd16 Generate Customer Response",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1960,
        1500
      ],
      "parameters": {
        "text": "=This GPT acts as an expert customer support agent designed to draft thoughtful, accurate responses to customer queries. It takes in customer questions and leverages internal product documentation and a history of previously answered queries to prewrite complete and contextually appropriate replies. The GPT uses the full content of \n\n1. the uploaded Primotech Instruction Manual (in German): \n\n2. a CSV dataset of historical customer questions: {{ $('\ud83d\udccb Aggregate Support Data').item.json.data.toJsonString() }}\n\n3. Customer's original query: {{ \n$('Chat Message Received').isExecuted && $('Chat Message Received').last().json.chatInput;\n$('\ud83d\udce7 Support Email Received') && $('\ud83d\udce7 Support Email Received').item.json.snippet \n$('When clicking \u2018Execute workflow\u2019').isExecuted && $('When clicking \u2018Execute workflow\u2019').item.json.snippet\n}} \n\nand answers related to ZEISS Primotech microscopes. These sources provide comprehensive technical, usage, troubleshooting, and product-specific guidance.\n\nThe assistant aims to reduce agent workload by anticipating common follow-up questions, referencing appropriate product knowledge, and maintaining a polite, clear, and supportive tone. It is optimized for high response accuracy, minimal ambiguity, and internal efficiency.\n\nThe assistant never performs web searches. When the available context is insufficient to fully answer a query, it does not generate a customer email. Instead, it presents a warning for the human agent and offers any possibly relevant internal context that may assist in formulating a manual response.\n\nIt avoids answering questions that cannot be supported by available documentation and flags those for manual review. When generating responses, it uses complete, customer-facing sentences, structured for easy review and editing by human support agents, and may include links or references when based on internal content. Clarification is only requested when strictly necessary. If required data is missing, the assistant highlights placeholders for agent completion.\n\nAll responses that are complete must follow this structure:\n- Use a proper salutation starting with 'Sehr geehrter Herr' or 'Sehr geehrte Frau' followed by the customer's last name, if available. If no name is provided, use 'Sehr geehrte/r Kunde/in,'.\n- Begin with 'herzlichen Dank f\u00fcr Ihre Nachricht.'\n- Then insert the drafted response body.\n- If the request involves a spare part, the assistant uses the following API response and includes the relevant spare part name and price from the returned JSON: {{ $json.inventory.toJsonString() }}\n- Close with: 'Bei weiteren Fragen stehen wir Ihnen gerne zur Verf\u00fcgung, gerne k\u00f6nnen sie auch unsere (HILFE Seite)[http://www.zeiss.de] besuchen.' and 'Ich w\u00fcnsche Ihnen einen sch\u00f6nen Tag!'\n\nThe assistant uses professional and accessible language, aligned with the tone expected in technical product support, and maintains a helpful and competent demeanor throughout.",
        "promptType": "define"
      },
      "typeVersion": 1.6,
      "alwaysOutputData": false
    },
    {
      "id": "263a08b7-c29a-4556-af0d-2a42c7981f0f",
      "name": "\ud83e\udd16 OpenAI Model (Generator)",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1980,
        1680
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "769b302a-63b2-4801-9b0c-bb25d1f3e432",
      "name": "\ud83d\udc65 Quality Control",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2420,
        900
      ],
      "parameters": {
        "color": 6,
        "width": 320,
        "height": 460,
        "content": "## \ud83d\udc65 Human-in-the-Loop Approval\n\n**Purpose**: Ensures quality control before sending responses\n\n**Process**:\n1. AI-generated response is sent to support agent\n2. Agent reviews and can approve/reject/modify\n3. Only approved responses are sent to customers\n\n**Benefits**:\n\u2022 Quality assurance\n\u2022 Learning from modifications\n\u2022 Regulatory compliance\n\n**Note**: Critical for maintaining customer trust"
      },
      "typeVersion": 1
    },
    {
      "id": "33aa86d8-f613-4d9b-921c-781c796b23d1",
      "name": "\ud83d\udce7 Email or Chat?",
      "type": "n8n-nodes-base.if",
      "position": [
        2280,
        1500
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2473fa5c-8b22-479c-95e7-583d4adb934f",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $('\ud83d\udce7 Support Email Received').isExecuted }}",
              "rightValue": "true"
            }
          ]
        }
      },
      "typeVersion": 2.2,
      "alwaysOutputData": false
    },
    {
      "id": "8eee920b-1a44-4a8a-8db9-6ca32d9d0083",
      "name": "\ud83d\udce7 Request Approval (Email)",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2460,
        1400
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "=A customer support response has been generated and requires your approval:\n\n**Customer Query**: \n{{ \n$('Chat Message Received').isExecuted ?? $('Chat Message Received').last().json.chatInput\n$('\ud83d\udce7 Support Email Received').isExecuted ?? $('\ud83d\udce7 Support Email Received').item.json.snippet \n$('When clicking \u2018Execute workflow\u2019').isExecuted ?? $('When clicking \u2018Execute workflow\u2019').item.json.snippet\n}}\n\n**Generated Response**:\n{{ $json.text }}\n\nPlease review and approve/reject this response.",
        "options": {},
        "subject": "Customer Support Response - Approval Required",
        "operation": "sendAndWait",
        "approvalOptions": {
          "values": {
            "approvalType": "double"
          }
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "eee108b0-2d0d-4140-b298-ac0a6bb4422e",
      "name": "\ud83d\udce4 Send Response to Customer",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2680,
        1400
      ],
      "parameters": {
        "sendTo": "={{ $('\ud83d\udce7 Support Email Received').item.json.From }}",
        "message": "={{ $('\ud83e\udd16 Generate Customer Response').item.json.text }}",
        "options": {},
        "subject": "Re: Your Support Request"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "b6bb5258-6b1b-48b1-994b-9dbed3062559",
      "name": "\ud83d\udcdd Format Chat Response",
      "type": "n8n-nodes-base.set",
      "position": [
        2460,
        1600
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "409c228d-783f-4e7f-aa47-f0271d8409f8",
              "name": "text",
              "type": "string",
              "value": "={{ $json.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "3815458b-3b11-472f-9718-f9fd523b3325",
      "name": "Chat Message Received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        620,
        1020
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "9f6013c5-f25f-4134-b9b3-9eed10e10db8",
      "name": "AI Information Extractor",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        940,
        780
      ],
      "parameters": {
        "text": "={{ $json.chatInput ? $json.chatInput : $json.snippet }}",
        "options": {},
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"required\": [\"category\", \"urgency\", \"sentiment\", \"keywords\", \"productIdentifiers\", \"customerInfo\", \"requiredAction\"],\n  \"properties\": {\n    \"category\": {\n      \"type\": \"string\",\n      \"enum\": [\"technical\", \"billing\", \"sales\", \"returns\", \"general\"],\n      \"description\": \"The primary category of the customer request\"\n    },\n    \"urgency\": {\n      \"type\": \"string\",\n      \"enum\": [\"low\", \"medium\", \"high\", \"critical\"],\n      \"description\": \"How time-sensitive the request is\"\n    },\n    \"sentiment\": {\n      \"type\": \"string\",\n      \"enum\": [\"positive\", \"neutral\", \"negative\", \"very_negative\"],\n      \"description\": \"The emotional tone of the customer's message\"\n    },\n    \"keywords\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"description\": \"Key terms extracted from the request for searching knowledge base and ERP\"\n    },\n    \"productIdentifiers\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"type\": {\n            \"type\": \"string\",\n            \"enum\": [\"model\", \"serial\", \"part\"]\n          },\n          \"value\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"description\": \"Any product numbers, models, or parts mentioned in the request\"\n    },\n    \"customerInfo\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"firstName\": {\n          \"type\": \"string\"\n        },\n        \"lastName\": {\n          \"type\": \"string\"\n        },\n        \"customerId\": {\n          \"type\": \"string\",\n          \"description\": \"CRM Customer Id\"\n        },\n        \"mentionsCompetitor\": {\n          \"type\": \"boolean\",\n          \"description\": \"Customer references a competitor product or service\"\n        }\n      }\n    },\n    \"requiredAction\": {\n      \"type\": \"string\",\n      \"enum\": [\"information\", \"replacement\", \"refund\", \"repair\", \"callback\", \"escalation\"],\n      \"description\": \"The primary action needed to resolve the customer's request\"\n    }\n  }}"
      },
      "typeVersion": 1
    },
    {
      "id": "7fc3e443-9653-4706-a612-413fb6df1e23",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        800
      ],
      "parameters": {
        "color": 7,
        "width": 440,
        "height": 200,
        "content": "## How to run a demo\n- add google / openai credentials\n- change email of approver to something you can access"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "583ed6b5-00f7-4fbf-8354-5740c8c59376",
  "connections": {
    "\ud83d\udce7 Email or Chat?": {
      "main": [
        [
          {
            "node": "\ud83d\udce7 Request Approval (Email)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\ud83d\udcdd Format Chat Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Chat Message Received": {
      "main": [
        [
          {
            "node": "AI Information Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83c\udfe2 Check ERP System": {
      "main": [
        [
          {
            "node": "\ud83e\udd16 Generate Customer Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Information Extractor": {
      "main": [
        [
          {
            "node": "\ud83d\udcca Historical Support Cases",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udcc4 Extract PDF Content": {
      "main": [
        [
          {
            "node": "\ud83c\udfe2 Check ERP System",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udccb Aggregate Support Data": {
      "main": [
        [
          {
            "node": "\ud83d\udcda Download Product Manual",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udce7 Support Email Received": {
      "main": [
        [
          {
            "node": "AI Information Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udcda Download Product Manual": {
      "main": [
        [
          {
            "node": "\ud83d\udcc4 Extract PDF Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udcca Historical Support Cases": {
      "main": [
        [
          {
            "node": "\ud83d\udccb Aggregate Support Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udce7 Request Approval (Email)": {
      "main": [
        [
          {
            "node": "\ud83d\udce4 Send Response to Customer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udd16 OpenAI Model (Extractor)": {
      "ai_languageModel": [
        [
          {
            "node": "AI Information Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udd16 OpenAI Model (Generator)": {
      "ai_languageModel": [
        [
          {
            "node": "\ud83e\udd16 Generate Customer Response",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udd16 Generate Customer Response": {
      "main": [
        [
          {
            "node": "\ud83d\udce7 Email or Chat?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}