{
  "id": "nuzeMUCQyZCTuLvJ",
  "name": "AI Restaurant Virtual Waiter Chatbot for WhatsApp",
  "tags": [],
  "nodes": [
    {
      "id": "ab0c732c-8597-4984-84e9-c5b2b4771dfe",
      "name": "WhatsApp Trigger",
      "type": "n8n-nodes-base.whatsAppTrigger",
      "position": [
        304,
        1664
      ],
      "parameters": {
        "options": {},
        "updates": [
          "messages"
        ]
      },
      "credentials": {
        "whatsAppTriggerApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "cb5adbf0-eb1d-484a-819a-6b0d2e52cc10",
      "name": "Not supported",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        720,
        1936
      ],
      "parameters": {
        "textBody": "=You can only send text messages",
        "operation": "send",
        "phoneNumberId": "470271332838881",
        "additionalFields": {},
        "recipientPhoneNumber": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f68714c5-7059-4ec7-a125-d4ec59998713",
      "name": "Input type",
      "type": "n8n-nodes-base.switch",
      "position": [
        672,
        1664
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Text",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "08fd0c80-307e-4f45-b1de-35192ee4ec5e",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.messages[0].text.body }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra"
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "32f07aa1-d158-46d3-8d02-cff1efa391b4",
      "name": "Guardrails",
      "type": "@n8n/n8n-nodes-langchain.guardrails",
      "position": [
        2096,
        1584
      ],
      "parameters": {
        "text": "={{ $json.message }}",
        "guardrails": {
          "jailbreak": {
            "value": {
              "threshold": 0.7,
              "customizePrompt": true
            }
          }
        },
        "customizeSystemMessage": true
      },
      "typeVersion": 2
    },
    {
      "id": "0503afb8-057c-4c1f-913e-a2ac825e4551",
      "name": "Google Gemini Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        2032,
        1808
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.5-flash-lite"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a544701b-038c-4473-bbdb-fc76c7634099",
      "name": "Send message1",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        2944,
        2208
      ],
      "parameters": {
        "textBody": "=What was communicated does not reflect our policies or is not relevant.",
        "operation": "send",
        "phoneNumberId": "470271332838881",
        "additionalFields": {},
        "recipientPhoneNumber": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "10e7da52-82d0-4744-82d1-8c03b7e483dd",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        288,
        1232
      ],
      "parameters": {
        "options": {
          "responseMode": "responseNodes"
        }
      },
      "typeVersion": 1.4
    },
    {
      "id": "5b62a3a0-fa30-4498-98c1-58044926fa99",
      "name": "Normalize",
      "type": "n8n-nodes-base.set",
      "position": [
        1824,
        1424
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "125c9831-791b-4b6e-979b-ceda1d77ad7a",
              "name": "message",
              "type": "string",
              "value": "={{ $json.message }}"
            },
            {
              "id": "a802bf83-f88a-4eb1-b4bd-5b253a15e2cb",
              "name": "sessionId",
              "type": "string",
              "value": "={{ $json.sessionId }}"
            },
            {
              "id": "3014000a-962e-449c-93a9-99fe74a1a21e",
              "name": "type",
              "type": "string",
              "value": "={{$json.type}}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "380fded1-8350-431b-b508-565e7190661d",
      "name": "Chat1",
      "type": "@n8n/n8n-nodes-langchain.chat",
      "position": [
        2944,
        2400
      ],
      "parameters": {
        "message": "=What was communicated does not reflect our policies or is not relevant.",
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "b89f1298-2d52-4241-9613-0df6eec8c3a5",
      "name": "Message",
      "type": "n8n-nodes-base.set",
      "position": [
        1136,
        1568
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c53cd9f9-77c1-4331-98ff-bfc9bdf95a3c",
              "name": "message",
              "type": "string",
              "value": "={{ $('WhatsApp Trigger').item.json.messages[0].text.body }}"
            },
            {
              "id": "87dbdb41-66ba-4c02-a441-a6b44777dcbd",
              "name": "sessionId",
              "type": "string",
              "value": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}"
            },
            {
              "id": "6e097caf-b3d4-4a17-8f63-57aa735e12ac",
              "name": "type",
              "type": "string",
              "value": "whatsapp"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ab2b7498-eb59-4cd2-8ace-a016be6f1c87",
      "name": "From Chat",
      "type": "n8n-nodes-base.set",
      "position": [
        1392,
        1232
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c53cd9f9-77c1-4331-98ff-bfc9bdf95a3c",
              "name": "message",
              "type": "string",
              "value": "={{ $json.chatInput }}"
            },
            {
              "id": "e355708a-2353-46c9-9423-9e15ea731955",
              "name": "sessionId",
              "type": "string",
              "value": "={{ $json.sessionId }}"
            },
            {
              "id": "66727ae5-1767-4c3a-83c5-d1f632b9083f",
              "name": "type",
              "type": "string",
              "value": "chat"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8dc3d90b-26f7-47a1-a77b-69e57a3223c6",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        1072
      ],
      "parameters": {
        "color": 7,
        "width": 1392,
        "height": 368,
        "content": "## STEP 1 - Chat Input (for testing)\nMessage from chatbot"
      },
      "typeVersion": 1
    },
    {
      "id": "51c1824b-3bce-4183-ac19-9cb5cb203a68",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        1472
      ],
      "parameters": {
        "color": 7,
        "width": 1392,
        "height": 656,
        "content": "## STEP 1 bis - WhatsApp Input\nMessage (text or audio with speech to text) from WhatsApp"
      },
      "typeVersion": 1
    },
    {
      "id": "f58f7359-71bc-4705-8b58-fcff8c3195f7",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1616,
        1072
      ],
      "parameters": {
        "color": 7,
        "width": 880,
        "height": 1056,
        "content": "## STEP 2  - Guardrails\nA jailbreak attempt is any deliberate attempt to circumvent, deceive, or manipulate the AI's safety, ethical, or policy constraints."
      },
      "typeVersion": 1
    },
    {
      "id": "5411bc62-39f9-43f0-b5e2-6beb8dd424e9",
      "name": "Menu?",
      "type": "n8n-nodes-base.switch",
      "position": [
        2608,
        1136
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Menu",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "f43bfc1b-411b-449d-9b65-a3f02e01e2f8",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.guardrailsInput }}",
                    "rightValue": "I would like to see the menu"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra",
          "renameFallbackOutput": "Other"
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "4694ab95-fd33-4d0c-8400-d3ee9cc9b0a9",
      "name": "Add new client",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3488,
        1120
      ],
      "parameters": {
        "columns": {
          "value": {
            "DATE": "={{$now.format('yyyy-MM-dd')}}",
            "CLIENT": "={{ $('Normalize').item.json.sessionId }}"
          },
          "schema": [
            {
              "id": "DATE",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "DATE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "CLIENT",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "CLIENT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "CLIENT"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Pzs_xlK6drjIhHnI7S1i2amLgT15dzuzkTKLbKcGpE4/edit#gid=0",
          "cachedResultName": "Clients"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1Pzs_xlK6drjIhHnI7S1i2amLgT15dzuzkTKLbKcGpE4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Pzs_xlK6drjIhHnI7S1i2amLgT15dzuzkTKLbKcGpE4/edit?usp=drivesdk",
          "cachedResultName": "Restaurant Database Clients"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "56c91059-abdf-4159-b56a-321f041fea96",
      "name": "Send message2",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        3968,
        880
      ],
      "parameters": {
        "textBody": "=Hi, this is the Menu: https://go.forkmenu.com/demo",
        "operation": "send",
        "phoneNumberId": "470271332838881",
        "additionalFields": {},
        "recipientPhoneNumber": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "42c252a8-8b76-4bf8-bbfe-30a1701c358a",
      "name": "Chat2",
      "type": "@n8n/n8n-nodes-langchain.chat",
      "position": [
        3968,
        1120
      ],
      "parameters": {
        "message": "=Hi, this is the Menu: https://go.forkmenu.com/demo",
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "60e47c14-eaab-4a63-8131-82d52cf1a493",
      "name": "Wait 2 Hours",
      "type": "n8n-nodes-base.wait",
      "position": [
        4336,
        880
      ],
      "parameters": {
        "unit": "hours",
        "amount": 2
      },
      "typeVersion": 1.1
    },
    {
      "id": "a8dd2f94-0a73-41e9-a222-751e0b1a0864",
      "name": "Send message3",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        4736,
        880
      ],
      "parameters": {
        "textBody": "=We hope you enjoyed your experience at our restaurant. Please consider leaving us a review. https://search.google.com/local/writereview?placeid=xxx",
        "operation": "send",
        "phoneNumberId": "470271332838881",
        "additionalFields": {},
        "recipientPhoneNumber": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "97b11345-88f1-4674-9d55-8c6ed3bf6fe4",
      "name": "Chat3",
      "type": "@n8n/n8n-nodes-langchain.chat",
      "position": [
        4736,
        1120
      ],
      "parameters": {
        "message": "=We hope you enjoyed your experience at our restaurant. Please consider leaving us a review. https://search.google.com/local/writereview?placeid=xxx",
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "2d97f036-8584-4126-b1db-b8b895dfbda5",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        3312,
        1792
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-3.1-flash-lite-preview"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6676bcc4-b231-47f1-b205-ddec9f83a074",
      "name": "Wait 1 Minute",
      "type": "n8n-nodes-base.wait",
      "position": [
        4352,
        1120
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "1feeea47-2b50-4aba-ae93-74268d610167",
      "name": "Chat",
      "type": "@n8n/n8n-nodes-langchain.chat",
      "position": [
        4048,
        1696
      ],
      "parameters": {
        "message": "={{ $json.output }}",
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "10cf10a6-0b97-490d-8c54-2d30e589869e",
      "name": "Menu dishes",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        3632,
        1776
      ],
      "parameters": {
        "url": "https://demo.forkmenu.com/api/menu/piatti/2?key=MjAyNjA0MjQwOTI0Mjc=",
        "options": {},
        "toolDescription": "Menu dishes"
      },
      "typeVersion": 4.4
    },
    {
      "id": "c22cb678-c255-40a9-b290-9b1eed452caf",
      "name": "Send message",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        4048,
        1536
      ],
      "parameters": {
        "textBody": "={{ $json.output }}",
        "operation": "send",
        "phoneNumberId": "470271332838881",
        "additionalFields": {},
        "recipientPhoneNumber": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}"
      },
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "58961035-d1d6-4b5c-84a6-d40cc35f87b0",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        3472,
        1792
      ],
      "parameters": {
        "sessionKey": "={{ $('Normalize').item.json.sessionId }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "56260fc9-0455-4294-850f-4b98183b5d6c",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        3008,
        1584
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.2
    },
    {
      "id": "ca0f5da6-a5c1-41ac-ae8c-642aa0f60a6a",
      "name": "Calculator",
      "type": "@n8n/n8n-nodes-langchain.toolCalculator",
      "position": [
        3760,
        1792
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "54ae6a93-699b-4e02-8ac1-7f912c2de2a5",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2880,
        1392
      ],
      "parameters": {
        "color": 7,
        "width": 2160,
        "height": 640,
        "content": "## STEP 4  - Virtual Waiter\nThe virtual waiter responds to the dishes on the menu (available dishes, price, allergens, recommended dishes) based on the Virtual Menu API (Demo Menu https://go.forkmenu.com/demo)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0f86f8c0-b913-4fae-82c2-438ebe66d218",
      "name": "Virtual waiter",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3488,
        1584
      ],
      "parameters": {
        "text": "={{ $json.guardrailsInput }}",
        "options": {
          "systemMessage": "You are a helpful assistant about the restaurant.\n\nYou are a helpful assistant for this restaurant.\n\n## Core Rules\n- NEVER invent or assume information. Only use data retrieved from available tools.\n- Always respond in the same language the user wrote in.\n- Keep answers relevant and concise, based strictly on retrieved data.\n\n## Menu Requests\nWhen the user asks anything related to the menu (dishes, ingredients, prices, availability, allergens, recommendations, etc.):\n1. Call the \"Menu dishes\" tool\n2. Wait for the response\n3. Elaborate the retrieved data to answer the user's question accurately\n\n## Out-of-Scope Requests\nIf the user asks about something you have no data for, politely let them know you don't have that information \u2014 do not make anything up."
        },
        "promptType": "define"
      },
      "retryOnFail": true,
      "typeVersion": 3.1
    },
    {
      "id": "d2cd13b4-5d36-49a4-b70c-a1f3e820cc7c",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2880,
        720
      ],
      "parameters": {
        "color": 7,
        "width": 1328,
        "height": 640,
        "content": "## STEP 3  - Send Virtuale Menu\n[Clone this Sheet](https://docs.google.com/spreadsheets/d/1Pzs_xlK6drjIhHnI7S1i2amLgT15dzuzkTKLbKcGpE4/edit?usp=sharing) Send virtual menu links via chatbot (or WhatsApp) and save customer data in a database (Google Sheets)"
      },
      "typeVersion": 1
    },
    {
      "id": "23c3b1a6-a3d4-49ee-80af-c2d5144521fa",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4240,
        720
      ],
      "parameters": {
        "color": 7,
        "width": 800,
        "height": 640,
        "content": "## STEP 5  - Request review after dinner\n\nOnce dinner is over (after 2 hours for WhatsApp) or after 1 minute for the Chatbot (for the test), a link to the restaurant review is sent to the device used."
      },
      "typeVersion": 1
    },
    {
      "id": "6211234f-ed90-4a45-a969-2727930d717e",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        640
      ],
      "parameters": {
        "width": 1392,
        "height": 400,
        "content": "## AI Restaurant Virtual Waiter Chatbot for WhatsApp & Website (Menu, Orders & Review)\n\nThis workflow implements a **WhatsApp-based virtual restaurant assistant** that automates customer interaction from the first message to post-dining follow-up.\n\nThe system can receive messages either from **WhatsApp or a chatbot interface**, normalize the input, and process it through **AI guardrails** to ensure safe and relevant communication. \n\nIt is possible to replace the chatbot on the restaurant website with a WhatsApp bot\n\n### How it works\n\nThis workflow automates a WhatsApp and chat-based restaurant assistant. It receives customer messages, filters unsupported formats, applies AI guardrails against jailbreaks, and routes safe requests either to menu delivery or a virtual waiter agent.\n\nMenu requests are logged in Google Sheets, followed by an automated menu link and delayed review request. General questions are handled by an AI agent using Gemini, memory, a calculator, and a ForkMenu API tool, ensuring answers are based only on real menu data.\n\n### Setup steps\n\nAdd credentials for WhatsApp, Gemini, and Google Sheets, then configure WhatsApp phone IDs and the Meta webhook. Clone or prepare a Google Sheet with `CLIENT` and `DATE` columns.\n\nUpdate the ForkMenu API URL/key, customize customer-facing messages, adjust Wait node timers for review follow-ups, and activate the workflow. For website chat, enable the n8n chat trigger and embed the chat widget on your site.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2fe2bff6-76c6-4e43-9a9d-a08300b5ad1a",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1632,
        304
      ],
      "parameters": {
        "color": 7,
        "width": 736,
        "height": 736,
        "content": "## MY NEW YOUTUBE CHANNEL\n\ud83d\udc49 [Subscribe to my new **YouTube channel**](https://youtube.com/@n3witalia). Here I\u2019ll share videos and Shorts with practical tutorials and **FREE templates for n8n**.\n\n[![image](https://n3wstorage.b-cdn.net/n3witalia/youtube-n8n-cover.jpg)](https://youtube.com/@n3witalia)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "81614725-8a67-413c-b502-174b1685591d",
  "connections": {
    "Chat2": {
      "main": [
        [
          {
            "node": "Wait 1 Minute",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Menu?": {
      "main": [
        [
          {
            "node": "Add new client",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Virtual waiter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message": {
      "main": [
        [
          {
            "node": "Normalize",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "From Chat": {
      "main": [
        [
          {
            "node": "Normalize",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize": {
      "main": [
        [
          {
            "node": "Guardrails",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Calculator": {
      "ai_tool": [
        [
          {
            "node": "Virtual waiter",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Guardrails": {
      "main": [
        [
          {
            "node": "Menu?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Chat1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Input type": {
      "main": [
        [
          {
            "node": "Message",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Not supported",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Menu dishes": {
      "ai_tool": [
        [
          {
            "node": "Virtual waiter",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Wait 2 Hours": {
      "main": [
        [
          {
            "node": "Send message3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send message2": {
      "main": [
        [
          {
            "node": "Wait 2 Hours",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "Virtual waiter",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Wait 1 Minute": {
      "main": [
        [
          {
            "node": "Chat3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add new client": {
      "main": [
        [
          {
            "node": "Chat2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Virtual waiter": {
      "main": [
        [
          {
            "node": "Chat",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WhatsApp Trigger": {
      "main": [
        [
          {
            "node": "Input type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Virtual waiter",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Guardrails",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "From Chat",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}