AI Cold Caller - FN Call - Check Availability

    Shared 11/19/2025

    22 views

    Visual Workflow

    JSON Code

    {
      "id": "JmnniCSwc052gQL5",
      "meta": {
        "instanceId": "9fb634bb746cbe3fe9f7fa86fdd635510d2f0c24c4ba919fbba1ca6aec3c4e57",
        "templateCredsSetupCompleted": true
      },
      "name": "AI Cold Caller - FN Call - Check Availability",
      "tags": [],
      "nodes": [
        {
          "id": "e9953c8a-ab31-4f10-b362-5007a835f387",
          "name": "Webhook",
          "type": "n8n-nodes-base.webhook",
          "position": [
            -96,
            -144
          ],
          "webhookId": "6b61911a-8f03-4494-86c0-f9e11e67cd69",
          "parameters": {
            "path": "6b61911a-8f03-4494-86c0-f9e11e67cd69",
            "options": {},
            "httpMethod": "POST",
            "responseMode": "responseNode"
          },
          "typeVersion": 2.1
        },
        {
          "id": "6974c55c-bbd2-4304-bd36-0fce56748705",
          "name": "Structured Output Parser1",
          "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
          "position": [
            704,
            96
          ],
          "parameters": {
            "schemaType": "manual",
            "inputSchema": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"title\": \"Date Range Schema\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"startDate\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"description\": \"The start date in ISO 8601 format\"\n    },\n    \"endDate\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"description\": \"The end date in ISO 8601 format\"\n    }\n  },\n  \"required\": [\"startDate\", \"endDate\"],\n  \"additionalProperties\": false\n}\n"
          },
          "typeVersion": 1.3
        },
        {
          "id": "0cbc72f9-32fa-4b7f-afc0-e0eca91936b5",
          "name": "Create Booking",
          "type": "n8n-nodes-base.httpRequest",
          "onError": "continueErrorOutput",
          "position": [
            1472,
            96
          ],
          "parameters": {
            "url": "https://api.cal.com/v2/bookings",
            "method": "POST",
            "options": {},
            "jsonBody": "={{ $json.payload }}",
            "sendBody": true,
            "sendHeaders": true,
            "specifyBody": "json",
            "headerParameters": {
              "parameters": [
                {
                  "name": "cal-api-version",
                  "value": "=2024-08-13"
                }
              ]
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "24fb4bb0-19cb-4dfc-9806-f47b50298ad6",
          "name": "Get Booking",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            1024,
            -160
          ],
          "parameters": {
            "url": "https://api.cal.com/v2/bookings",
            "options": {},
            "sendQuery": true,
            "sendHeaders": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "startTime",
                  "value": "={{ $json.startDate }}"
                },
                {
                  "name": "endTime",
                  "value": "={{ $json.endDate }}"
                },
                {
                  "name": "status",
                  "value": "upcoming"
                },
                {
                  "name": "limit",
                  "value": "=1"
                },
                {
                  "name": "eventTypeId",
                  "value": "={{ $('Set Vars').item.json.cal_call_id }}"
                }
              ]
            },
            "headerParameters": {
              "parameters": [
                {
                  "name": "cal-api-version",
                  "value": "=2024-08-13"
                }
              ]
            }
          },
          "credentials": {
            "httpBearerAuth": {
              "id": "DvbTOgvkcULlmmzE",
              "name": "Vapi Auth Bearer account"
            },
            "httpHeaderAuth": {
              "id": "tlMMaHIx7zqf0LCc",
              "name": "Cal Header Auth"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "266e3f45-da06-4c7a-8376-0ae53469d322",
          "name": "OpenRouter Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
          "position": [
            512,
            96
          ],
          "parameters": {
            "options": {}
          },
          "credentials": {
            "openRouterApi": {
              "id": "6z6zYFNsqyqFRUEB",
              "name": "OpenRouter account"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "3752391f-a104-41b6-9e41-0f0c067c35b2",
          "name": "Set Vars",
          "type": "n8n-nodes-base.set",
          "position": [
            96,
            -144
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "ad1d9422-de52-4a8c-872f-3750476e9f70",
                  "name": "date_time",
                  "type": "string",
                  "value": "={{ $json.body.message.toolCallList[0].function.arguments.date_time }}"
                },
                {
                  "id": "ea19cb2e-1768-4ec5-9868-f0cf44208e32",
                  "name": "name",
                  "type": "string",
                  "value": "={{ $json.body.message.toolCallList[0].function.arguments.name }}"
                },
                {
                  "id": "a62e8508-3732-4b12-a443-14edd7b3cc2c",
                  "name": "email",
                  "type": "string",
                  "value": "={{ $json.body.message.toolCallList[0].function.arguments.email }}"
                },
                {
                  "id": "4b6cf6e0-8f45-487e-ba6e-05381dd9fc1c",
                  "name": "cal_call_id",
                  "type": "number",
                  "value": {}
                },
                {
                  "id": "6cefa32a-2bda-434f-a42e-0aed6fd6abc1",
                  "name": "cal_call_name",
                  "type": "string",
                  "value": ""
                },
                {
                  "id": "e82e38dd-b2d1-45e5-a0ad-a7a58a98ce8d",
                  "name": "cal_call_min_duration",
                  "type": "number",
                  "value": {}
                },
                {
                  "id": "d1930405-9e13-46c3-91c2-8a5e65d3fd32",
                  "name": "cal_call_username",
                  "type": "string",
                  "value": ""
                },
                {
                  "id": "02ba9870-629a-4cc3-ad29-4325f2cf1e2d",
                  "name": "cal_call_timezone",
                  "type": "string",
                  "value": "America/New_York"
                },
                {
                  "id": "6a4473e5-fae9-4ffd-aa80-a8b007146914",
                  "name": "tool_call_Id",
                  "type": "string",
                  "value": "={{ $json.body.message.toolCalls[0].id }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "cf7a972a-1636-43df-b27a-0a5c5cfad991",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -112,
            -240
          ],
          "parameters": {
            "width": 1296,
            "height": 528,
            "content": "## Set Vars and Booking Timing"
          },
          "typeVersion": 1
        },
        {
          "id": "27f3e3c1-b7ea-45d5-9f48-aff49cb59497",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1216,
            -240
          ],
          "parameters": {
            "color": 6,
            "width": 704,
            "height": 528,
            "content": "## Create a booking in cal.com"
          },
          "typeVersion": 1
        },
        {
          "id": "5b79ceeb-a926-4132-8ea5-2f532a77e642",
          "name": "Create Booking Payload",
          "type": "n8n-nodes-base.code",
          "position": [
            1264,
            96
          ],
          "parameters": {
            "jsCode": "const startDate = $(\"Booking Start and End Time\").first().json.output.startDate;\nconst start = new Date(startDate).toISOString()\n\nconst data = {\n  start: start,\n  attendee: {\n    name: $(\"Set Vars\").first().json.name,\n    email: $(\"Set Vars\").first().json.email,\n    timeZone: $(\"Set Vars\").first().json.cal_call_timezone,\n    language: \"en\"\n  },\n  eventTypeId: $(\"Set Vars\").first().json.cal_call_id\n};\n\nconst payload = JSON.stringify(data);\n\nreturn {\n  json: {\n    data,\n    payload\n  }\n};\n"
          },
          "typeVersion": 2
        },
        {
          "id": "5fd967ca-811c-4ac5-815e-6b71675a27c6",
          "name": "OpenRouter Chat Model2",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
          "position": [
            1232,
            672
          ],
          "parameters": {
            "options": {}
          },
          "credentials": {
            "openRouterApi": {
              "id": "6z6zYFNsqyqFRUEB",
              "name": "OpenRouter account"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "7ce3cb8a-e177-4074-8c45-8eecf8629f83",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -112,
            320
          ],
          "parameters": {
            "color": 5,
            "width": 2032,
            "height": 528,
            "content": "## Check for other booking timings"
          },
          "typeVersion": 1
        },
        {
          "id": "b33cd0aa-68b3-4bce-8de5-6c5d25464491",
          "name": "Booking Start and End Time",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            512,
            -160
          ],
          "parameters": {
            "text": "=You are a date-time calculator.\nGiven an input containing a startDate (ISO 8601 format) and minutesToAdd (integer), calculate the endDate by adding the given minutes to the start date.\n\nReturn only a JSON object — no text, no explanations, no complements.\n\nOutput format (strictly):\n{\n  \"startDate\": \"<ISO 8601 string>\",\n  \"minutesToAdd\": <integer>,\n  \"endDate\": \"<ISO 8601 string>\"\n}\n\nExample:\n\nInput:\n\nstartDate: 2025-10-27T09:30:00Z\nminutesToAdd: 150\n\n\nExpected Output:\n\n{\n  \"startDate\": \"2025-10-27T09:30:00Z\",\n  \"minutesToAdd\": 150,\n  \"endDate\": \"2025-10-27T12:00:00Z\"\n}\n\nHere is the startDate: {{ $json.date_time }}\nadd minutes: {{ $json.cal_call_min_duration }}\n",
            "options": {},
            "promptType": "define",
            "hasOutputParser": true
          },
          "typeVersion": 2.2
        },
        {
          "id": "f7c0d304-dcfc-4b3b-9d5f-65cd6fd6e631",
          "name": "Get Near By Available Slots",
          "type": "n8n-nodes-base.code",
          "position": [
            576,
            448
          ],
          "parameters": {
            "jsCode": "// Safely extract input data\nconst firstInput = $input.first();\n\nconst rawStart = firstInput?.json?.startDate;\nconst rawEnd = firstInput?.json?.endDate;\n\n// Validate that both are valid ISO date strings\nif (!rawStart || !rawEnd) {\n  throw new Error(`Missing startDate or endDate. Received startDate=${rawStart}, endDate=${rawEnd}`);\n}\n\n// Parse into JS Date objects\nconst startDate = new Date(rawStart);\nconst endDate = new Date(rawEnd);\n\n// Check if parsing succeeded\nif (isNaN(startDate) || isNaN(endDate)) {\n  throw new Error(`Invalid date format. startDate=${rawStart}, endDate=${rawEnd}`);\n}\n\n// ✅ Expand the search range\nstartDate.setHours(startDate.getHours() - 4);  // move back 4 hours\nendDate.setDate(endDate.getDate() + 4);        // move forward 4 days\n\n// ✅ Format to ISO 8601\nconst expandedStartDate = startDate.toISOString();\nconst expandedEndDate = endDate.toISOString();\n\nreturn {\n  json: {\n    expandedStartDate,\n    expandedEndDate\n  }\n};\n"
          },
          "typeVersion": 2
        },
        {
          "id": "6e75bd02-3568-4599-827e-4e95d2e6bbe2",
          "name": "Set Timeslot 1",
          "type": "n8n-nodes-base.set",
          "position": [
            832,
            -160
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "e524aaaf-deb3-4b0e-a8c1-9466a5a0c9a4",
                  "name": "startDate",
                  "type": "string",
                  "value": "={{ $json.output.startDate }}"
                },
                {
                  "id": "ee4f7d99-21ff-491a-b6bf-36c0b8cf36d3",
                  "name": "endDate",
                  "type": "string",
                  "value": "={{ $json.output.endDate }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "cf516d89-6c7c-4e54-85fa-e4d51514f106",
          "name": "Get Other Booking Slots",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            800,
            448
          ],
          "parameters": {
            "url": "https://api.cal.com/v2/slots",
            "options": {},
            "sendQuery": true,
            "sendHeaders": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "eventTypeSlug",
                  "value": "={{ $('Set Vars').item.json.cal_call_name }}"
                },
                {
                  "name": "username",
                  "value": "={{ $('Set Vars').item.json.cal_call_username }}"
                },
                {
                  "name": "end",
                  "value": "={{ $json.expandedEndDate }}"
                },
                {
                  "name": "start",
                  "value": "={{ $json.expandedStartDate }}"
                }
              ]
            },
            "headerParameters": {
              "parameters": [
                {
                  "name": "cal-api-version",
                  "value": "=2024-09-04"
                }
              ]
            }
          },
          "credentials": {
            "httpHeaderAuth": {
              "id": "tlMMaHIx7zqf0LCc",
              "name": "Cal Header Auth"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "498b9b0f-2979-4c95-be08-85f68f41a77f",
          "name": "Format Booking Slots",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            1232,
            448
          ],
          "parameters": {
            "text": "=Here are the available booking slots in JSON format:\n{{ $json.data }}\n\nPlease tell the customer in natural language what the next available booking timings are.\n\nToday is {{ $now }}",
            "options": {
              "systemMessage": "AI Receptionist — Humanized Booking Availability (Optimized Version)\n\nYou are an AI receptionist that helps customers find the next available booking times.\n\nThe input will always be provided in JSON format containing available booking slots (start, end, service, and/or location).\n\nYour task:\n\nParse the JSON input of available time slots.\n\nConsider only the earliest 3–4 future slots, sorted by time.\n\nMerge continuous hourly slots on the same day into a single time range (e.g., “from 9 AM to 5 PM”).\n\nFor non-continuous times on the same day, list them separately (e.g., “at 4 PM and 6 PM”).\n\nFormat output in friendly, conversational language.\n\nPrefer relative days like “tomorrow” or “day after tomorrow”, otherwise use weekday names.\n\nUse 12-hour clock with AM/PM (no 24-hour time).\n\nRespond ONLY with natural language — no JSON, no code.\n\nIf no slots exist:\n→ “I’m sorry, there are no available slots in the next few days. Would you like me to check further ahead?”\n\nExample behavior\nInput:\n\n[\n  {\"start\": \"2025-10-28T09:00:00+05:30\"}, \n  {\"start\": \"2025-10-28T10:00:00+05:30\"},\n  {\"start\": \"2025-10-28T11:00:00+05:30\"},\n  {\"start\": \"2025-10-28T17:00:00+05:30\"},\n  {\"start\": \"2025-10-29T16:00:00+05:30\"}\n]\n\n\nOutput:\n\n“Tomorrow, we have availability from 9 AM to 11 AM, and also at 5 PM. The day after tomorrow, we can take you at 4 PM.”"
            },
            "promptType": "define"
          },
          "typeVersion": 2.2
        },
        {
          "id": "520dd0a3-6b1b-4ea7-93fb-10b72b94d3d5",
          "name": "Book if slot is empty",
          "type": "n8n-nodes-base.if",
          "position": [
            1456,
            -160
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 2,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "11e69321-041e-4db3-b903-e1f2386ab675",
                  "operator": {
                    "type": "number",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.pagination.totalItems }}",
                  "rightValue": 0
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "6bc71e49-9500-4784-917e-d2651df62f40",
          "name": "Merge",
          "type": "n8n-nodes-base.merge",
          "position": [
            352,
            448
          ],
          "parameters": {},
          "typeVersion": 3.2
        },
        {
          "id": "d7efea65-30e1-4345-84ab-3a5d9483b76c",
          "name": "Set Time 1",
          "type": "n8n-nodes-base.code",
          "position": [
            -64,
            432
          ],
          "parameters": {
            "jsCode": "let startDate = $('Set Timeslot 1').first().json.startDate\nlet endDate = $('Set Timeslot 1').first().json.endDate\n\nreturn {\n  json:{\n    startDate,\n    endDate\n  }\n}"
          },
          "typeVersion": 2
        },
        {
          "id": "5e4bba3a-1987-40ca-ac39-60f9bf3442d2",
          "name": "Set Time 2",
          "type": "n8n-nodes-base.code",
          "position": [
            128,
            464
          ],
          "parameters": {
            "jsCode": "let startDate = new Date().toISOString()\nlet endDate = new Date()\nendDate.setDate(endDate.getDate() + 1);\n\nreturn {\n  json:{\n    startDate,\n    endDate\n  }\n}"
          },
          "typeVersion": 2
        },
        {
          "id": "597a615c-902c-44e3-b26a-88354090d0ad",
          "name": "If Time Does Not Exists",
          "type": "n8n-nodes-base.if",
          "position": [
            272,
            -144
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 2,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "or",
              "conditions": [
                {
                  "id": "27e17ee9-8381-4c56-8e04-e1d2bbc4c953",
                  "operator": {
                    "type": "string",
                    "operation": "exists",
                    "singleValue": true
                  },
                  "leftValue": "={{ $json.date_time }}",
                  "rightValue": ""
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "2f6b93d3-2945-4f6e-acef-472f8f3f398a",
          "name": "Format Data",
          "type": "n8n-nodes-base.code",
          "position": [
            1024,
            448
          ],
          "parameters": {
            "jsCode": "let data = $input.first().json.data\ndata = JSON.stringify(data)\n\nreturn {\n  json:{\n    data\n  }\n}"
          },
          "typeVersion": 2
        },
        {
          "id": "f1b56745-0cfc-492d-91b5-4b7645b28d47",
          "name": "Respond Other Slots",
          "type": "n8n-nodes-base.respondToWebhook",
          "position": [
            1584,
            448
          ],
          "parameters": {
            "options": {},
            "respondWith": "json",
            "responseBody": "=   {\n     \"results\": [\n       {\n         \"toolCallId\": \"{{ $('Set Vars').item.json.tool_call_Id }}\",\n         \"result\": \"{{ $json.output }}\"\n       }\n     ]\n   }"
          },
          "typeVersion": 1.4
        },
        {
          "id": "58a83831-8718-41b9-9e36-a012aa24e75a",
          "name": "Respond Confirmation",
          "type": "n8n-nodes-base.respondToWebhook",
          "position": [
            1712,
            80
          ],
          "parameters": {
            "options": {},
            "respondWith": "json",
            "responseBody": "=   {\n     \"results\": [\n       {\n         \"toolCallId\": \"{{ $('Set Vars').item.json.tool_call_Id }}\",\n         \"result\": \"Awesome! You’re all set consultation call. You’ll get a quick confirmation email soon. Thanks for your time — we look forward to speaking with you!\"\n       }\n     ]\n   }"
          },
          "typeVersion": 1.4
        },
        {
          "id": "345f4f71-f59e-4ee6-88a8-af328d11bf92",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -672,
            -240
          ],
          "parameters": {
            "width": 528,
            "height": 288,
            "content": "# 🛠️ Setup Guide\n---\n\n**Author: [Sohail Jafri](https://link.thesohailjafri.me/web_ai) | [Youtube](https://link.thesohailjafri.me/yt_ai) | [Instagram](https://link.thesohailjafri.me/ig_ai) | [Join Skool](https://link.thesohailjafri.me/join-skool)**\n\n## ☕ Buy Me a Coffee\nhttps://link.thesohailjafri.me/buymeacoffee\n\n## Follow these steps to complete your setup"
          },
          "typeVersion": 1
        },
        {
          "id": "219cc54c-e325-4b9f-a86a-bb50e4d85a2a",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -672,
            80
          ],
          "parameters": {
            "width": 528,
            "height": 848,
            "content": "### 1. Webhook Setup\n- Copy your Webhook URL from n8n and paste it into Vapi:  \n**Tools → check-cal-booking-availability → server.url**\n\n---\n\n### 2. Connect Required Credentials\n- **OpenRouter API Key** → Interprets & formats booking times  \n- **Cal.com Header Auth** → Fetches & creates bookings  \n\n---\n\n### 3. Set Vars Node\nEnsure it extracts:\n- `name`\n- `email`\n- `date_time`\n- `tool_call_id`\n- `cal_call_id`\n- `cal_call_username`\n- `cal_call_min_duration`\n\n---\n\n### 4. Booking Logic\nWorkflow handles:\n- Checking if selected slot is free  \n- Expanding search range if needed  \n- Returning 3–4 best future slots  \n- Auto-creating a booking when available  \n\n---\n\n### 5. Final Responses\nTwo webhook responses:\n- **Confirmation** → If booking is created  \n- **Alternative Slots** → If booking must be rescheduled  \n\n"
          },
          "typeVersion": 1
        }
      ],
      "active": true,
      "pinData": {
        "Webhook": [
          {
            "json": {
              "body": {
                "message": {
                  "call": {
                    "id": "019a26b1-0500-7558-a82e-9f6031a4e684",
                    "cost": 0,
                    "type": "outboundPhoneCall",
                    "orgId": "fb7ae6bd-eb9c-46a9-9f21-c19e37ee9644",
                    "status": "queued",
                    "monitor": {
                      "listenUrl": "wss://phone-call-websocket.aws-us-west-2-backend-production2.vapi.ai/019a26b1-0500-7558-a82e-9f6031a4e684/listen",
                      "controlUrl": "https://phone-call-websocket.aws-us-west-2-backend-production2.vapi.ai/019a26b1-0500-7558-a82e-9f6031a4e684/control"
                    },
                    "customer": {
                      "name": "Cakes By Keon",
                      "number": "+918356946202"
                    },
                    "assistant": {
                      "name": "Emma",
                      "model": {
                        "model": "gpt-4o",
                        "toolIds": [
                          "91c2dce8-5d0c-427c-8009-238de0aacc23"
                        ],
                        "messages": [
                          {
                            "role": "system",
                            "content": "\n### Context\nBusiness Name: Cakes By Keon\nBusiness Number: +918356946202\nTodays Is: 2025-10-27\nAvailable Bookings: The next available booking slots are tomorrow at 3 PM and 4 PM, and the day after tomorrow at 4 PM.\n\nYou are **Emma**, a friendly business development assistant from **WebLabs**, a website and software agency helping restaurants and small businesses grow online.\n\nYour job is simple:\nCall small restaurants or local businesses that currently don’t have a website.\n\n### GOAL\nBriefly explain why you’re calling, see if they’re interested in getting a website, and if they are, collect their **name** and **email** to schedule a **consultation call**.\n\n---\n\n### INTRO (Natural, Short)\n\"Hi, this is Emma from WebLabs. The reason for my call is we’re reaching out to local businesses that don’t yet have a website. Would you be open to a quick call with our consultant to discuss getting your business online?\"\n\nIf they say they’re busy:\n\"No worries at all — when would be a better time for a short follow-up call?\"\n\n---\n\n### IF INTERESTED\n\"That’s great! Could I have your **name** and **best email** so we can send you a link to schedule the call at your convenience?\"\n\nThen use the **check-cal-booking-availability** tool to verify open slots and mention a couple:\n\"Looks like we have Tuesday at 3 PM or Wednesday at 11 AM — which time works best for you?\"\n\n---\n\n### IF NOT INTERESTED\n\"Totally understand! Thanks for your time — have a great day.\"\n\n---\n\n### RULES\n- Keep it short, friendly, and conversational.\n- Don’t oversell — just introduce, gauge interest, and collect contact details.\n- Never argue or pressure.\n- Always thank the person before ending the call.\n          "
                          }
                        ],
                        "provider": "openai"
                      },
                      "voice": {
                        "voiceId": "Paige",
                        "provider": "vapi"
                      },
                      "transcriber": {
                        "model": "nova-2",
                        "language": "en",
                        "provider": "deepgram"
                      },
                      "firstMessage": "Hi Cakes By Keon, this is Emma from WebLabs. I was trying to check out your menu on your website, but it seems the site isn’t live yet.",
                      "compliancePlan": {
                        "pciEnabled": false,
                        "hipaaEnabled": false
                      },
                      "endCallMessage": "Thanks for your time! I’ll send over the Calendly link if you’re interested. Have a great day!",
                      "voicemailMessage": "Hi, this is Emma from WebLabs. I wanted to discuss how a website can help you attract more customers. Feel free to call back anytime!"
                    },
                    "createdAt": "2025-10-27T17:22:06.720Z",
                    "transport": {
                      "callSid": "CA15b962badae5c1499f6cf487e3d8288f",
                      "provider": "twilio",
                      "accountSid": "AC0386bc277c6bebcd095f42a3d54c7b43"
                    },
                    "updatedAt": "2025-10-27T17:22:06.720Z",
                    "phoneNumberId": "ca3182f4-297c-4914-85c4-7be5af1b8abc",
                    "phoneCallProvider": "twilio",
                    "phoneCallTransport": "pstn",
                    "phoneCallProviderId": "CA15b962badae5c1499f6cf487e3d8288f"
                  },
                  "type": "tool-calls",
                  "artifact": {
                    "messages": [
                      {
                        "role": "system",
                        "time": 1761585734108,
                        "message": "\n### Context\nBusiness Name: Cakes By Keon\nBusiness Number: +918356946202\nTodays Is: 2025-10-27\nAvailable Bookings: The next available booking slots are tomorrow at 3 PM and 4 PM, and the day after tomorrow at 4 PM.\n\nYou are **Emma**, a friendly business development assistant from **WebLabs**, a website and software agency helping restaurants and small businesses grow online.\n\nYour job is simple:\nCall small restaurants or local businesses that currently don’t have a website.\n\n### GOAL\nBriefly explain why you’re calling, see if they’re interested in getting a website, and if they are, collect their **name** and **email** to schedule a **consultation call**.\n\n---\n\n### INTRO (Natural, Short)\n\"Hi, this is Emma from WebLabs. The reason for my call is we’re reaching out to local businesses that don’t yet have a website. Would you be open to a quick call with our consultant to discuss getting your business online?\"\n\nIf they say they’re busy:\n\"No worries at all — when would be a better time for...",
                        "secondsFromStart": 0
                      },
                      {
                        "role": "bot",
                        "time": 1761585736055,
                        "source": "",
                        "endTime": 1761585742055,
                        "message": "Hi, Cakes by Kion. This is Emma from WebLabs. I was trying to check out your menu on your website, but it seems the site isn't live yet.",
                        "duration": 5959.999755859375,
                        "secondsFromStart": 1.773
                      },
                      {
                        "role": "user",
                        "time": 1761585743915,
                        "endTime": 1761585746335,
                        "message": "Uh, yes. Uh, the website is not live.",
                        "duration": 2420,
                        "metadata": {
                          "wordLevelConfidence": [
                            {
                              "end": 9.700001,
                              "word": "uh",
                              "start": 9.54,
                              "confidence": 0.8342285,
                              "punctuated_word": "Uh,"
                            },
                            {
                              "end": 10.18,
                              "word": "yes",
                              "start": 9.700001,
                              "confidence": 0.9770508,
                              "punctuated_word": "yes."
                            },
                            {
                              "end": 10.66,
                              "word": "uh",
                              "start": 10.18,
                              "confidence": 0.9941406,
                              "punctuated_word": "Uh,"
                            },
                            {
                              "end": 10.820001,
                              "word": "the",
                              "start": 10.66,
                              "confidence": 0.8989258,
                              "punctuated_word": "the"
                            },
                            {
                              "end": 11.22,
                              "word": "website",
                              "start": 10.820001,
                              "confidence": 0.28222656,
                              "punctuated_word": "website"
                            },
                            {
                              "end": 11.38,
                              "word": "is",
                              "start": 11.22,
                              "confidence": 0.99902344,
                              "punctuated_word": "is"
                            },
                            {
                              "end": 11.540001,
                              "word": "not",
                              "start": 11.38,
                              "confidence": 1,
                              "punctuated_word": "not"
                            },
                            {
                              "end": 11.96,
                              "word": "live",
                              "start": 11.540001,
                              "confidence": 0.9472656,
                              "punctuated_word": "live."
                            }
                          ]
                        },
                        "secondsFromStart": 9.633
                      },
                      {
                        "role": "bot",
                        "time": 1761585747625,
                        "source": "",
                        "endTime": 1761585760545,
                        "message": "No problem. The reason I'm calling is that we specialize in helping businesses like yours get a website set up. It's a great way to showcase your cakes, take online orders, and reach more customers. Would you be interested in a quick call with 1 of our consultants to learn more?",
                        "duration": 12680,
                        "secondsFromStart": 13.343
                      },
                      {
                        "role": "user",
                        "time": 1761585762060,
                        "endTime": 1761585762560,
                        "message": "Yes.",
                        "duration": 500,
                        "metadata": {
                          "wordLevelConfidence": [
                            {
                              "end": 28.185,
                              "word": "yes",
                              "start": 27.685,
                              "confidence": 1,
                              "punctuated_word": "Yes."
                            }
                          ]
                        },
                        "secondsFromStart": 27.778
                      },
                      {
                        "role": "bot",
                        "time": 1761585763475,
                        "source": "",
                        "endTime": 1761585768505,
                        "message": "That's great. Could I have your name and the best email address to send you the link for scheduling a convenient time?",
                        "duration": 4790,
                        "secondsFromStart": 29.193
                      },
                      {
                        "role": "user",
                        "time": 1761585769825,
                        "endTime": 1761585773565,
                        "message": "Sure. My name is Sohil, and my email address is suhil at g mail dot",
                        "duration": 3740,
                        "metadata": {
                          "wordLevelConfidence": [
                            {
                              "end": 35.850002,
                              "word": "sure",
                              "start": 35.45,
                              "confidence": 0.7468262,
                              "punctuated_word": "Sure."
                            },
                            {
                              "end": 36.010002,
                              "word": "my",
                              "start": 35.850002,
                              "confidence": 0.9980469,
                              "punctuated_word": "My"
                            },
                            {
                              "end": 36.170002,
                              "word": "name",
                              "start": 36.010002,
                              "confidence": 1,
                              "punctuated_word": "name"
                            },
                            {
                              "end": 36.41,
                              "word": "is",
                              "start": 36.170002,
                              "confidence": 0.9970703,
                              "punctuated_word": "is"
                            },
                            {
                              "end": 36.73,
                              "word": "sohil",
                              "start": 36.41,
                              "confidence": 0.80999756,
                              "punctuated_word": "Sohil,"
                            },
                            {
                              "end": 36.89,
                              "word": "and",
                              "start": 36.73,
                              "confidence": 1,
                              "punctuated_word": "and"
                            },
                            {
                              "end": 37.13,
                              "word": "my",
                              "start": 36.89,
                              "confidence": 1,
                              "punctuated_word": "my"
                            },
                            {
                              "end": 37.45,
                              "word": "email",
                              "start": 37.13,
                              "confidence": 1,
                              "punctuated_word": "email"
                            },
                            {
                              "end": 37.850002,
                              "word": "address",
                              "start": 37.45,
                              "confidence": 0.99902344,
                              "punctuated_word": "address"
                            },
                            {
                              "end": 37.94,
                              "word": "is",
                              "start": 37.850002,
                              "confidence": 0.99902344,
                              "punctuated_word": "is"
                            }
                          ]
                        },
                        "secondsFromStart": 35.543
                      },
                      {
                        "role": "tool_calls",
                        "time": 1761585773354,
                        "message": "",
                        "toolCalls": [
                          {
                            "id": "call_suZqdwNAKh5hSiUUT9fTgOUh",
                            "type": "function",
                            "function": {
                              "name": "check-cal-booking-availability",
                              "arguments": "{\n  \"name\": \"Sohil\",\n  \"email\": \"suhil@gmail.com\",\n  \"date_time\": \"\"\n}"
                            }
                          }
                        ],
                        "secondsFromStart": 39.072
                      },
                      {
                        "role": "user",
                        "time": 1761585773565,
                        "endTime": 1761585773955,
                        "message": "com.",
                        "duration": 390,
                        "metadata": {
                          "wordLevelConfidence": [
                            {
                              "end": 39.58,
                              "word": "com",
                              "start": 39.19,
                              "confidence": 0.9980469,
                              "punctuated_word": "com."
                            }
                          ]
                        },
                        "secondsFromStart": 39.283
                      },
                      {
                        "role": "bot",
                        "time": 1761585774655.003,
                        "source": "",
                        "endTime": 1761585776355.003,
                        "message": "Let me check available bookings.",
                        "duration": 1700,
                        "secondsFromStart": 40.3730029296875
                      },
                      {
                        "role": "user",
                        "time": 1761585777075,
                        "endTime": 1761585777575,
                        "message": "Sure.",
                        "duration": 500,
                        "metadata": {
                          "wordLevelConfidence": [
                            {
                              "end": 43.2,
                              "word": "sure",
                              "start": 42.7,
                              "confidence": 0.9880371,
                              "punctuated_word": "Sure."
                            }
                          ]
                        },
                        "secondsFromStart": 42.793
                      },
                      {
                        "name": "check-cal-booking-availability",
                        "role": "tool_call_result",
                        "time": 1761585778229,
                        "result": "No result returned. If this is unexpected, see troubleshooting tips at https://docs.vapi.ai/tools/custom-tools-troubleshooting#no-result-returned-error",
                        "toolCallId": "call_suZqdwNAKh5hSiUUT9fTgOUh",
                        "secondsFromStart": 43.947
                      },
                      {
                        "role": "tool_calls",
                        "time": 1761585778831,
                        "message": "",
                        "toolCalls": [
                          {
                            "id": "call_GQHnzM0sRVo8fG6kwGNwsDVS",
                            "type": "function",
                            "function": {
                              "name": "check-cal-booking-availability",
                              "arguments": "{\n  \"name\": \"Sohil\",\n  \"email\": \"suhil@gmail.com\",\n  \"date_time\": \"\"\n}"
                            }
                          }
                        ],
                        "secondsFromStart": 44.549
                      }
                    ],
                    "messagesOpenAIFormatted": [
                      {
                        "role": "system",
                        "content": "\n### Context\nBusiness Name: Cakes By Keon\nBusiness Number: +918356946202\nTodays Is: 2025-10-27\nAvailable Bookings: The next available booking slots are tomorrow at 3 PM and 4 PM, and the day after tomorrow at 4 PM.\n\nYou are **Emma**, a friendly business development assistant from **WebLabs**, a website and software agency helping restaurants and small businesses grow online.\n\nYour job is simple:\nCall small restaurants or local businesses that currently don’t have a website.\n\n### GOAL\nBriefly explain why you’re calling, see if they’re interested in getting a website, and if they are, collect their **name** and **email** to schedule a **consultation call**.\n\n---\n\n### INTRO (Natural, Short)\n\"Hi, this is Emma from WebLabs. The reason for my call is we’re reaching out to local businesses that don’t yet have a website. Would you be open to a quick call with our consultant to discuss getting your business online?\"\n\nIf they say they’re busy:\n\"No worries at all — when would be a better time for..."
                      },
                      {
                        "role": "assistant",
                        "content": "Hi, Cakes by Kion. This is Emma from WebLabs. I was trying to check out your menu on your website, but it seems the site isn't live yet."
                      },
                      {
                        "role": "user",
                        "content": "Uh, yes. Uh, the website is not live."
                      },
                      {
                        "role": "assistant",
                        "content": "No problem. The reason I'm calling is that we specialize in helping businesses like yours get a website set up. It's a great way to showcase your cakes, take online orders, and reach more customers. Would you be interested in a quick call with 1 of our consultants to learn more?"
                      },
                      {
                        "role": "user",
                        "content": "Yes."
                      },
                      {
                        "role": "assistant",
                        "content": "That's great. Could I have your name and the best email address to send you the link for scheduling a convenient time?"
                      },
                      {
                        "role": "user",
                        "content": "Sure. My name is Sohil, and my email address is suhil at g mail dot"
                      },
                      {
                        "role": "assistant",
                        "tool_calls": [
                          {
                            "id": "call_suZqdwNAKh5hSiUUT9fTgOUh",
                            "type": "function",
                            "function": {
                              "name": "check-cal-booking-availability",
                              "arguments": "{\n  \"name\": \"Sohil\",\n  \"email\": \"suhil@gmail.com\",\n  \"date_time\": \"\"\n}"
                            }
                          }
                        ]
                      },
                      {
                        "role": "tool",
                        "content": "No result returned. If this is unexpected, see troubleshooting tips at https://docs.vapi.ai/tools/custom-tools-troubleshooting#no-result-returned-error",
                        "tool_call_id": "call_suZqdwNAKh5hSiUUT9fTgOUh"
                      },
                      {
                        "role": "user",
                        "content": "com."
                      },
                      {
                        "role": "assistant",
                        "content": "Let me check available bookings."
                      },
                      {
                        "role": "user",
                        "content": "Sure."
                      },
                      {
                        "role": "assistant",
                        "tool_calls": [
                          {
                            "id": "call_GQHnzM0sRVo8fG6kwGNwsDVS",
                            "type": "function",
                            "function": {
                              "name": "check-cal-booking-availability",
                              "arguments": "{\n  \"name\": \"Sohil\",\n  \"email\": \"suhil@gmail.com\",\n  \"date_time\": \"\"\n}"
                            }
                          }
                        ]
                      },
                      {
                        "role": "tool",
                        "content": "Tool Result Still Pending But Proceed Further If Possible.",
                        "tool_call_id": "call_GQHnzM0sRVo8fG6kwGNwsDVS"
                      }
                    ]
                  },
                  "customer": {
                    "name": "Cakes By Keon",
                    "number": "+918356946202"
                  },
                  "assistant": {
                    "name": "Emma",
                    "model": {
                      "model": "gpt-4o",
                      "tools": [
                        {
                          "id": "91c2dce8-5d0c-427c-8009-238de0aacc23",
                          "type": "function",
                          "orgId": "fb7ae6bd-eb9c-46a9-9f21-c19e37ee9644",
                          "server": {
                            "url": "https://n8n.thesohailjafri.me/webhook/6b61911a-8f03-4494-86c0-f9e11e67cd69",
                            "credentialId": "5e11c2d3-1efb-4e2b-814b-fc148e499938"
                          },
                          "function": {
                            "name": "check-cal-booking-availability",
                            "parameters": {
                              "type": "object",
                              "required": [
                                "date_time\n",
                                "email",
                                "name"
                              ],
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "default": "",
                                  "description": "name of person"
                                },
                                "email": {
                                  "type": "string",
                                  "default": "",
                                  "description": "email of person we are booking call for"
                                },
                                "date_time\n": {
                                  "type": "string",
                                  "default": "",
                                  "description": "check for booking on this datetime in \"dd-MMM-yyyy HH:mm:ss:aa\" format"
                                }
                              }
                            },
                            "description": "Check-Cal bookings to find open slots and suggest the best meeting times."
                          },
                          "messages": [
                            {
                              "type": "request-start",
                              "content": "Let me check available bookings ",
                              "blocking": false
                            }
                          ],
                          "createdAt": "2025-10-23T15:32:07.440Z",
                          "updatedAt": "2025-10-27T16:19:55.490Z"
                        }
                      ],
                      "toolIds": [
                        "91c2dce8-5d0c-427c-8009-238de0aacc23"
                      ],
                      "messages": [
                        {
                          "role": "system",
                          "content": "\n### Context\nBusiness Name: Cakes By Keon\nBusiness Number: +918356946202\nTodays Is: 2025-10-27\nAvailable Bookings: The next available booking slots are tomorrow at 3 PM and 4 PM, and the day after tomorrow at 4 PM.\n\nYou are **Emma**, a friendly business development assistant from **WebLabs**, a website and software agency helping restaurants and small businesses grow online.\n\nYour job is simple:\nCall small restaurants or local businesses that currently don’t have a website.\n\n### GOAL\nBriefly explain why you’re calling, see if they’re interested in getting a website, and if they are, collect their **name** and **email** to schedule a **consultation call**.\n\n---\n\n### INTRO (Natural, Short)\n\"Hi, this is Emma from WebLabs. The reason for my call is we’re reaching out to local businesses that don’t yet have a website. Would you be open to a quick call with our consultant to discuss getting your business online?\"\n\nIf they say they’re busy:\n\"No worries at all — when would be a better time for a short follow-up call?\"\n\n---\n\n### IF INTERESTED\n\"That’s great! Could I have your **name** and **best email** so we can send you a link to schedule the call at your convenience?\"\n\nThen use the **check-cal-booking-availability** tool to verify open slots and mention a couple:\n\"Looks like we have Tuesday at 3 PM or Wednesday at 11 AM — which time works best for you?\"\n\n---\n\n### IF NOT INTERESTED\n\"Totally understand! Thanks for your time — have a great day.\"\n\n---\n\n### RULES\n- Keep it short, friendly, and conversational.\n- Don’t oversell — just introduce, gauge interest, and collect contact details.\n- Never argue or pressure.\n- Always thank the person before ending the call.\n          "
                        }
                      ],
                      "provider": "openai"
                    },
                    "voice": {
                      "voiceId": "Paige",
                      "provider": "vapi"
                    },
                    "transcriber": {
                      "model": "nova-2",
                      "language": "en",
                      "provider": "deepgram"
                    },
                    "firstMessage": "Hi Cakes By Keon, this is Emma from WebLabs. I was trying to check out your menu on your website, but it seems the site isn’t live yet.",
                    "compliancePlan": {
                      "pciEnabled": false,
                      "hipaaEnabled": false
                    },
                    "endCallMessage": "Thanks for your time! I’ll send over the Calendly link if you’re interested. Have a great day!",
                    "voicemailMessage": "Hi, this is Emma from WebLabs. I wanted to discuss how a website can help you attract more customers. Feel free to call back anytime!"
                  },
                  "timestamp": 1761585778835,
                  "toolCalls": [
                    {
                      "id": "call_GQHnzM0sRVo8fG6kwGNwsDVS",
                      "type": "function",
                      "function": {
                        "name": "check-cal-booking-availability",
                        "arguments": {
                          "name": "Sohil",
                          "email": "suhil@gmail.com",
                          "date_time": ""
                        }
                      }
                    }
                  ],
                  "phoneNumber": {
                    "id": "ca3182f4-297c-4914-85c4-7be5af1b8abc",
                    "name": "Sohail",
                    "orgId": "fb7ae6bd-eb9c-46a9-9f21-c19e37ee9644",
                    "number": "+19789172907",
                    "status": "active",
                    "provider": "twilio",
                    "createdAt": "2025-10-23T11:45:53.525Z",
                    "updatedAt": "2025-10-23T11:45:53.525Z",
                    "smsEnabled": false,
                    "twilioAccountSid": "AC0386bc277c6bebcd095f42a3d54c7b43"
                  },
                  "toolCallList": [
                    {
                      "id": "call_GQHnzM0sRVo8fG6kwGNwsDVS",
                      "type": "function",
                      "function": {
                        "name": "check-cal-booking-availability",
                        "arguments": {
                          "name": "Sohil",
                          "email": "suhil@gmail.com",
                          "date_time": ""
                        }
                      }
                    }
                  ],
                  "toolWithToolCallList": [
                    {
                      "type": "function",
                      "server": {
                        "url": "https://n8n.thesohailjafri.me/webhook/6b61911a-8f03-4494-86c0-f9e11e67cd69",
                        "credentialId": "5e11c2d3-1efb-4e2b-814b-fc148e499938"
                      },
                      "function": {
                        "name": "check-cal-booking-availability",
                        "parameters": {
                          "type": "object",
                          "required": [
                            "date_time\n",
                            "email",
                            "name"
                          ],
                          "properties": {
                            "name": {
                              "type": "string",
                              "default": "",
                              "description": "name of person"
                            },
                            "email": {
                              "type": "string",
                              "default": "",
                              "description": "email of person we are booking call for"
                            },
                            "date_time\n": {
                              "type": "string",
                              "default": "",
                              "description": "check for booking on this datetime in \"dd-MMM-yyyy HH:mm:ss:aa\" format"
                            }
                          }
                        },
                        "description": "Check-Cal bookings to find open slots and suggest the best meeting times."
                      },
                      "messages": [
                        {
                          "type": "request-start",
                          "content": "Let me check available bookings ",
                          "blocking": false,
                          "contents": [],
                          "conditions": []
                        }
                      ],
                      "toolCall": {
                        "id": "call_GQHnzM0sRVo8fG6kwGNwsDVS",
                        "type": "function",
                        "function": {
                          "name": "check-cal-booking-availability",
                          "arguments": {
                            "name": "Sohil",
                            "email": "suhil@gmail.com",
                            "date_time": ""
                          }
                        }
                      }
                    }
                  ]
                }
              },
              "query": {},
              "params": {},
              "headers": {
                "host": "n8n.thesohailjafri.me",
                "accept": "application/json, text/plain, */*",
                "cookie": "callId=019a26b1-0500-7558-a82e-9f6031a4e684",
                "baggage": "sentry-environment=production,sentry-public_key=a0021577936aec367b16615ad816c078,sentry-trace_id=7b5f0bec391d4fb89bbe4eee3c6f304c",
                "x-call-id": "019a26b1-0500-7558-a82e-9f6031a4e684",
                "x-real-ip": "167.150.225.177",
                "user-agent": "axios/1.8.3",
                "content-type": "application/json",
                "sentry-trace": "7b5f0bec391d4fb89bbe4eee3c6f304c-993a06308fdb606c",
                "x-my-n8n-key": "bToioyUh0HedIaWHDEvUjKIEcpv67vpi",
                "x-vapi-secret": "",
                "content-length": "17677",
                "accept-encoding": "identity",
                "x-forwarded-for": "167.150.225.177",
                "x-forwarded-host": "n8n.thesohailjafri.me",
                "x-forwarded-port": "443",
                "x-forwarded-proto": "https",
                "x-forwarded-server": "58fcf0a00990"
              },
              "webhookUrl": "https://n8n.thesohailjafri.me/webhook/6b61911a-8f03-4494-86c0-f9e11e67cd69",
              "executionMode": "production"
            }
          }
        ]
      },
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "7ea67d31-9726-47aa-bbe4-5c17f2034863",
      "connections": {
        "Merge": {
          "main": [
            [
              {
                "node": "Get Near By Available Slots",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Webhook": {
          "main": [
            [
              {
                "node": "Set Vars",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Set Vars": {
          "main": [
            [
              {
                "node": "If Time Does Not Exists",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Set Time 1": {
          "main": [
            [
              {
                "node": "Merge",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Set Time 2": {
          "main": [
            [
              {
                "node": "Merge",
                "type": "main",
                "index": 1
              }
            ]
          ]
        },
        "Format Data": {
          "main": [
            [
              {
                "node": "Format Booking Slots",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Get Booking": {
          "main": [
            [
              {
                "node": "Book if slot is empty",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Create Booking": {
          "main": [
            [
              {
                "node": "Respond Confirmation",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Set Time 1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Set Timeslot 1": {
          "main": [
            [
              {
                "node": "Get Booking",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format Booking Slots": {
          "main": [
            [
              {
                "node": "Respond Other Slots",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Book if slot is empty": {
          "main": [
            [
              {
                "node": "Create Booking Payload",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Set Time 1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "OpenRouter Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "Booking Start and End Time",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Create Booking Payload": {
          "main": [
            [
              {
                "node": "Create Booking",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "OpenRouter Chat Model2": {
          "ai_languageModel": [
            [
              {
                "node": "Format Booking Slots",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Get Other Booking Slots": {
          "main": [
            [
              {
                "node": "Format Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "If Time Does Not Exists": {
          "main": [
            [
              {
                "node": "Booking Start and End Time",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Set Time 2",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Structured Output Parser1": {
          "ai_outputParser": [
            [
              {
                "node": "Booking Start and End Time",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        },
        "Booking Start and End Time": {
          "main": [
            [
              {
                "node": "Set Timeslot 1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Get Near By Available Slots": {
          "main": [
            [
              {
                "node": "Get Other Booking Slots",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    }