{
  "workflow": {
    "id": 6001,
    "name": "Automate restaurant orders with AI dish recommendations using Gemini and Telegram",
    "views": 1775,
    "recentViews": 1,
    "totalViews": 1775,
    "createdAt": "2025-07-14T13:43:20.484Z",
    "description": "In this guide, we’ll walk you through setting up a smart workflow that triggers on new restaurant orders, extracts and formats customer and dish details from Google Sheets, uses Gemini AI to recommend dishes or offers, and sends suggestions via Telegram. Ready to automate your order processing and enhance customer experience? Let’s dive in!\n\n## What’s the Goal?\n- Automatically trigger the workflow when a new order is placed.\n- Extract and format customer information and order details from Google Sheets.\n- Use Gemini AI to analyze orders and recommend dishes or offers.\n- Send personalized suggestions to customers via Telegram.\n- Enable real-time order processing and customer engagement.\n\nBy the end, you’ll have a smart system that processes orders and suggests items effortlessly.\n\n## Why Does It Matter?\nManual order processing and suggestion generation are inefficient and miss opportunities. Here’s why this workflow is a game changer:\n\n- **Real-Time Efficiency**: Instantly process orders and suggest items.\n- **Personalized Engagement**: AI-driven suggestions enhance customer satisfaction.\n- **Time-Saving Automation**: Reduce manual effort in order management.\n- **Improved Sales**: Targeted recommendations can boost order value.\nThink of it as your intelligent assistant for orders and customer delight.\n\n## How It Works\nHere’s the step-by-step magic behind the automation:\n\n### Step 1: New Order Trigger\n- Trigger the workflow when a new order is detected (e.g., via a form submission).\n\n### Step 2: Extract & Format Order\n- Extract and format dish ordering details from the customer order details sheet for further processing.\n\n### Step 3: Save Customer Info\n- Save customer information (e.g., ID, name, mobile number) from the customer details sheet.\n\n### Step 4: Save Dish Info\n- Save dish details (e.g., name, quantity, price) from the customer order details sheet.\n\n### Step 5: Prepare Dish Details for AI\n- Prepare the dish details for AI analysis to generate recommendations.\n\n### Step 6: Clean Data for Input to Improve AI Understanding\n- Clean and structure the data to enhance AI comprehension.\n\n### Step 7: Use Gemini AI to Recommend Dishes or Offers\n- Utilize Gemini AI (via Google Chat Model and Think Tool) to recommend dishes or offers based on order data.\n\n### Step 8: Format AI Suggestions\n- Format the AI-generated suggestions into a Telegram-friendly message.\n\n### Step 9: Send Suggestions via Telegram\n- Send the formatted suggestions directly to the customer via Telegram.\n\n## How to Use the Workflow?\nImporting a workflow in n8n is a straightforward process that allows you to use pre-built workflows to save time. Below is a step-by-step guide to importing the Smart Restaurant Order & Suggestion System workflow in n8n.\n\n### Steps to Import a Workflow in n8n\n\n1. **Obtain the Workflow JSON**\n   - **Source the Workflow**: Workflows are shared as JSON files or code snippets, e.g., from the n8n community, a colleague, or exported from another n8n instance.\n   - **Format**: Ensure you have the workflow in JSON format, either as a file (e.g., workflow.json) or copied text.\n\n2. **Access the n8n Workflow Editor**\n   - Log in to n8n (via n8n Cloud or self-hosted instance).\n   - Navigate to the Workflows tab in the n8n dashboard.\n   - Click Add Workflow to create a blank workflow.\n\n3. **Import the Workflow**\n   - **Option 1: Import via JSON Code (Clipboard)**:\n     - Click the three dots (⋯) in the top-right corner to open the menu.\n     - Select Import from Clipboard.\n     - Paste the JSON code into the text box.\n     - Click Import to load the workflow.\n   - **Option 2: Import via JSON File**:\n     - Click the three dots (⋯) in the top-right corner.\n     - Select Import from File.\n     - Choose the .json file from your computer.\n     - Click Open to import.\n\n### Setup Notes\n- **Google Sheet Columns**:\n  - **Customer Details Sheet**: `Customer id`, `Customer name`, `Customer mobile number` (e.g., `CUST-JW4Z8Y`, `ajay`, `9898989898`; `CUST-VEITPW`, `akash`, `9898976898`).\n  - **Customer Order Details Sheet**: `Customer id`, `Dish name`, `Dish quantity`, `Per unit price`, `Actual price` (e.g., `CUST-JW4Z8Y`, `Tandoori Chicken`, `1`, `250`, `250`; `CUST-VEITPW`, `Masala Dosa`, `1`, `150`, `150`).\n- **Google Sheets Credentials**: Configure OAuth2 settings in the extract and save nodes with your Google Sheet ID and credentials.\n- **Gemini AI**: Set up the Gemini AI node with Google Chat Model and Think Tool credentials.\n- **Telegram Integration**: Authorize the Send Suggestions node with Telegram API credentials and the customer’s chat ID or mobile number.\n- **Trigger Setup**: Configure the New Order Trigger node to detect new orders (e.g., via form or webhook).",
    "workflow": {
      "id": "aDRgA0zAqjUD2yvU",
      "meta": {
        "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
        "templateCredsSetupCompleted": true
      },
      "name": "Smart Restaurant Order & Suggestion System with Gemini AI and Telegram",
      "tags": [],
      "nodes": [
        {
          "id": "4492f7c4-0f63-4cc9-9772-b1d8194dd2fb",
          "name": "New Order Trigger (Form)",
          "type": "n8n-nodes-base.formTrigger",
          "position": [
            -880,
            360
          ],
          "webhookId": "cab910e4-9ffd-483b-8fc7-c1f4973ea948",
          "parameters": {
            "options": {},
            "formTitle": "Oneclick Restaurant Order - Table number 1",
            "formFields": {
              "values": [
                {
                  "fieldLabel": "Please enter your name",
                  "placeholder": "John doe",
                  "requiredField": true
                },
                {
                  "fieldType": "number",
                  "fieldLabel": "Please enter your phone number",
                  "placeholder": "123456789"
                },
                {
                  "fieldType": "number",
                  "fieldLabel": "Tandoori Chicken  -  250 Rupees"
                },
                {
                  "fieldType": "number",
                  "fieldLabel": "Biryani - 200 Rupees"
                },
                {
                  "fieldType": "number",
                  "fieldLabel": "Masala Dosa - 150 Rupees"
                },
                {
                  "fieldType": "number",
                  "fieldLabel": "Idli vada - 100 Rupees"
                },
                {
                  "fieldType": "number",
                  "fieldLabel": "Dal Tadka - 150 Rupees"
                },
                {
                  "fieldType": "number",
                  "fieldLabel": "Steam Rice - 100 Rupees"
                },
                {
                  "fieldLabel": "Paratha - 30 Rupees"
                },
                {
                  "fieldType": "number",
                  "fieldLabel": "Paneer butter masal - 250 Rupees"
                },
                {
                  "fieldType": "number",
                  "fieldLabel": "Fix Thali - 150 Rupees"
                }
              ]
            },
            "formDescription": "Please add your dish quantity and submit to place your order"
          },
          "typeVersion": 2.2
        },
        {
          "id": "1e2209ba-20d6-4d2a-9f03-6a62b3c98f4e",
          "name": "Extract & Format Order Data",
          "type": "n8n-nodes-base.code",
          "position": [
            -660,
            360
          ],
          "parameters": {
            "jsCode": "const input = $input.all();\nconst formData = input[0].json;\n\nconst name = formData[\"Please enter your name\"];\nconst mobile = String(formData[\"Please enter your phone number\"]);\n\nfunction generateCustomerId() {\n  const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n  let id = '';\n  for (let i = 0; i < 6; i++) {\n    id += chars.charAt(Math.floor(Math.random() * chars.length));\n  }\n  return `CUST-${id}`;\n}\n\nconst customerId = generateCustomerId();\n\nconst dishes = Object.entries(formData)\n  .map(([key, value]) => {\n    const match = key.match(/^(.*)\\s*-\\s*(\\d+)\\s*Rupees$/);\n    if (!match) return null;\n    const rawQty = Number(value);\n    if (isNaN(rawQty) || rawQty < 1) return null;  // only >1\n    const unitPrice = Number(match[2]);\n    return {\n      dishName: match[1].trim(),\n      quantity: rawQty,\n      unitPrice,\n      totalPrice: rawQty * unitPrice\n    };\n  })\n  .filter(item => item !== null);\n\nreturn [\n  {\n    json: {\n      customerId,\n      name,\n      mobile,\n      dishes,\n    },\n  },\n];\n"
          },
          "typeVersion": 2
        },
        {
          "id": "fc25b5bf-717a-40b9-9cf3-69bd12c3fc52",
          "name": "Save Customer Info",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            -440,
            360
          ],
          "parameters": {
            "columns": {
              "value": {
                "Customer id": "={{ $json.customerId }}",
                "Customer name": "={{ $json.name }}",
                "costomer mobile number": "={{ $json.mobile }}"
              },
              "schema": [
                {
                  "id": "Customer id",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Customer id",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Customer name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Customer name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "costomer mobile number",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "costomer mobile number",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "append",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QztyOVgP8vIAQGLeBNErIHqJ77fq4vDRVD1DvHJdGaI/edit#gid=0",
              "cachedResultName": "customer details"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1QztyOVgP8vIAQGLeBNErIHqJ77fq4vDRVD1DvHJdGaI",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QztyOVgP8vIAQGLeBNErIHqJ77fq4vDRVD1DvHJdGaI/edit?usp=drivesdk",
              "cachedResultName": "restaurant order placement "
            },
            "authentication": "serviceAccount"
          },
          "credentials": {
            "googleApi": {
              "id": "credential-id",
              "name": "googleApi Credential"
            }
          },
          "typeVersion": 4.6
        },
        {
          "id": "844defa5-d868-4397-a52e-9a165932aba0",
          "name": "Save Dish Info",
          "type": "n8n-nodes-base.code",
          "position": [
            -220,
            360
          ],
          "parameters": {
            "jsCode": "// Input comes from the previous node\nconst data = $('Extract & Format Order Data').first().json.dishes;\n\nreturn data;\n"
          },
          "typeVersion": 2
        },
        {
          "id": "c5d5435a-2d99-48f0-b5c2-48531fb12670",
          "name": "Prepare Dish Details for AI",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            0,
            360
          ],
          "parameters": {
            "columns": {
              "value": {
                "dish name": "={{ $json.dishName }}",
                "Customer id": "={{ $('Extract & Format Order Data').item.json.customerId }}",
                "actual price": "={{ $json.totalPrice }}",
                "dish quantity": "={{ $json.quantity }}",
                "per unit price": "={{ $json.unitPrice }}"
              },
              "schema": [
                {
                  "id": "Customer id",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Customer id",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "dish name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "dish name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "dish quantity",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "dish quantity",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "per unit price",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "per unit price",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "actual price",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "actual price",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "append",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 1326050181,
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QztyOVgP8vIAQGLeBNErIHqJ77fq4vDRVD1DvHJdGaI/edit#gid=1326050181",
              "cachedResultName": "customer order details"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1QztyOVgP8vIAQGLeBNErIHqJ77fq4vDRVD1DvHJdGaI",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QztyOVgP8vIAQGLeBNErIHqJ77fq4vDRVD1DvHJdGaI/edit?usp=drivesdk",
              "cachedResultName": "restaurant order placement "
            },
            "authentication": "serviceAccount"
          },
          "credentials": {
            "googleApi": {
              "id": "credential-id",
              "name": "googleApi Credential"
            }
          },
          "typeVersion": 4.6
        },
        {
          "id": "560536c7-a876-4418-9ad7-f4d3461d85f3",
          "name": "Clean Data for AI Input",
          "type": "n8n-nodes-base.code",
          "position": [
            220,
            360
          ],
          "parameters": {
            "jsCode": "// Fetch all incoming items\nconst items = $input.all();\n\n// Extract the raw row data (each item.json is one row)\nconst rawRows = items.map(item => item.json);\n\n// Bundle everything into a single field\nconst payload = { rows: rawRows };\n\n// Return a single output item whose json contains your full dataset\nreturn [{ json: { data: payload } }];"
          },
          "typeVersion": 2
        },
        {
          "id": "c0a4ab92-9ae3-45ca-806c-f4e1e5e396cc",
          "name": "Gemini AI Dish Suggestion Agent",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            440,
            360
          ],
          "parameters": {
            "text": "={{ $json.data }}",
            "options": {
              "systemMessage": "You are a friendly AI assistant for a restaurant, designed to suggest dishes that customers might enjoy based on their recent order. \n\nWe will provide you with structured JSON input representing a customer’s previous order, for example:\n\nYou are a friendly AI assistant for a restaurant, designed to suggest dishes that customers might enjoy based on their recent order. \n\nWe will provide you with structured JSON input representing a customer’s previous order, for example:\n\n{\n  \"customerId\": \"CUST-1D0RWH\",\n  \"name\": \"ajay\",\n  \"mobile\": \"9898989898\",\n  \"dishes\": [\n    { \"dishName\": \"Tandoori Chicken\", \"quantity\": 1, \"unitPrice\": 250, \"totalPrice\": 250 },\n    { \"dishName\": \"Masala Dosa\",       \"quantity\": 1, \"unitPrice\": 150, \"totalPrice\": 150 },\n    { \"dishName\": \"Idli vada\",         \"quantity\": 1, \"unitPrice\": 100, \"totalPrice\": 100 },\n    { \"dishName\": \"Dal Tadka\",         \"quantity\": 1, \"unitPrice\": 150, \"totalPrice\": 150 },\n    { \"dishName\": \"Paratha\",           \"quantity\": 2, \"unitPrice\": 30,  \"totalPrice\": 60 },\n    { \"dishName\": \"Paneer butter masal\",\"quantity\":1, \"unitPrice\": 250,\"totalPrice\":250 }\n  ]\n}\n\nYour job:\n1. Analyze the dishes—look at cuisine types, flavors, categories, and quantities.\n2. Recommend **3–5 other dishes** likely to appeal to this customer, explaining *why* (e.g., complementary flavors, similar cuisines, balancing variety).\n3. Output JSON with:\n   - `suggestions`: an array of objects each with `dishName` and `reason`\n\n**Important formatting rules:**\n- Output must be strictly valid JSON (no extra text).\n- Follow this structure exactly:\n\n\nYour job:\n1. Analyze the dishes—look at cuisine types, flavors, categories, and quantities.\n2. Recommend **3–5 other dishes** likely to appeal to this customer, explaining *why* (e.g., complementary flavors, similar cuisines, balancing variety).\n3. Output JSON with:\n   - `suggestions`: an array of objects each with `dishName` and `reason`\n\n**Important formatting rules:**\n- Output must be strictly valid JSON (no extra text).\n- Follow this structure exactly:"
            },
            "promptType": "define"
          },
          "typeVersion": 1.9
        },
        {
          "id": "d80e5505-1f6d-4904-b497-b62530f284e2",
          "name": "Format AI Suggestions for Telegram",
          "type": "n8n-nodes-base.code",
          "position": [
            816,
            360
          ],
          "parameters": {
            "jsCode": "// Step 1: Fetch the raw output from the AI Agent node\nconst aiResponse = $node[\"Gemini AI Dish Suggestion Agent\"].json.output; // Update \"AI Agent\" to your node name\n\n// Step 2: Strip Markdown fences if present\nconst markdownPattern = /^```json\\s*([\\s\\S]*)\\s*```$/;\nconst cleaned = aiResponse.replace(markdownPattern, \"$1\");\n\n// Step 3: Parse JSON safely\nlet parsed;\ntry {\n  parsed = JSON.parse(cleaned);\n} catch (err) {\n  throw new Error(`Failed to parse AI response JSON: ${err.message}`);\n}\n\n// Step 4: Return each suggestion as its own item (n8n format)\nreturn parsed.suggestions.map(s => ({\n  json: {\n    customerId: parsed.customerId,\n    ...s\n  }\n}));\n"
          },
          "typeVersion": 2
        },
        {
          "id": "c902fee2-f89a-42c8-92ea-4bced23561b7",
          "name": "Send Suggestions via Telegram",
          "type": "n8n-nodes-base.telegram",
          "position": [
            1036,
            360
          ],
          "webhookId": "73247e26-45a7-4c4a-8a52-4a8fcc1d110d",
          "parameters": {
            "text": "={{ $json.dishName }}\n\n{{ $json.reason }}",
            "chatId": "newchatid",
            "additionalFields": {}
          },
          "credentials": {
            "telegramApi": {
              "id": "credential-id",
              "name": "telegramApi Credential"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "068d712a-eddc-4021-8c3f-b601e767af92",
          "name": "Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
          "position": [
            468,
            580
          ],
          "parameters": {
            "options": {},
            "modelName": "models/gemini-2.5-pro"
          },
          "credentials": {
            "googlePalmApi": {
              "id": "credential-id",
              "name": "googlePalmApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "29206de4-5ee1-44e0-9e48-6440f390a981",
          "name": "Think Tool",
          "type": "@n8n/n8n-nodes-langchain.toolThink",
          "position": [
            588,
            580
          ],
          "parameters": {},
          "typeVersion": 1
        },
        {
          "id": "9f542a6c-37d5-4acb-a27d-64c1043e7b2e",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -910,
            0
          ],
          "parameters": {
            "color": 5,
            "width": 160,
            "height": 520,
            "content": "Triggered when a customer submits their dish order form."
          },
          "typeVersion": 1
        },
        {
          "id": "4d847217-066e-4323-afbd-03fe71074cc3",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -470,
            0
          ],
          "parameters": {
            "color": 4,
            "width": 160,
            "height": 520,
            "content": "Adds customer details to the Google Sheet.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "63dd550d-71bd-4599-858d-6c1336bd4aed",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -30,
            0
          ],
          "parameters": {
            "color": 5,
            "width": 160,
            "height": 520,
            "content": "Gathers final dish data to send to the AI agent.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "a954f2da-409f-4a5e-b31e-70ffd34ff718",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            190,
            0
          ],
          "parameters": {
            "width": 160,
            "height": 520,
            "content": "Reformats the data to improve AI understanding."
          },
          "typeVersion": 1
        },
        {
          "id": "f85f9bc1-c82a-475d-bfd5-5e1cc68b67c3",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            786,
            0
          ],
          "parameters": {
            "color": 4,
            "width": 160,
            "height": 520,
            "content": "Converts Gemini output into Telegram-friendly message format."
          },
          "typeVersion": 1
        },
        {
          "id": "7ba85c44-5f48-482b-b385-81f819290c54",
          "name": "Sticky Note5",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1006,
            0
          ],
          "parameters": {
            "color": 3,
            "width": 160,
            "height": 520,
            "content": "Sends dish suggestions directly to the customer."
          },
          "typeVersion": 1
        },
        {
          "id": "7e499f3f-1037-4d71-a40a-45669b4ac16c",
          "name": "Sticky Note6",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -250,
            0
          ],
          "parameters": {
            "color": 3,
            "width": 160,
            "height": 520,
            "content": "Stores ordered dish quantities and types to a separate sheet."
          },
          "typeVersion": 1
        },
        {
          "id": "587a6136-fc12-4c0a-8fb1-a3b06026cb11",
          "name": "Sticky Note7",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            440,
            0
          ],
          "parameters": {
            "color": 6,
            "width": 260,
            "height": 520,
            "content": "Uses Gemini AI to recommend related dishes or offers."
          },
          "typeVersion": 1
        },
        {
          "id": "5f0d16a4-be36-4a56-8b4e-05093cfeaa68",
          "name": "Sticky Note8",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -690,
            0
          ],
          "parameters": {
            "width": 160,
            "height": 520,
            "content": "Formats incoming form fields for further processing."
          },
          "typeVersion": 1
        },
        {
          "id": "286198a1-70dc-4d08-babf-dc24b127bf72",
          "name": "Sticky Note9",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -360,
            -540
          ],
          "parameters": {
            "color": 2,
            "width": 800,
            "height": 320,
            "content": "### This workflow helps automate restaurant order processing and customer engagement by:\n\n- Saving Time: Automatically records customer and dish data without manual entry.\n\n- Personalizing Experience: AI suggests relevant dishes or combos to upsell or enhance the order.\n\n- Centralized Tracking: All order data is logged into Google Sheets for real-time access and analytics.\n\n- Instant Outreach: Sends dish suggestions directly to customers via Telegram within seconds.\n\n- Scalability: Easily handles multiple orders with AI-driven intelligence—ideal for growing restaurants.\n\n"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "3910b529-9989-490f-ba6d-ed97e80f157a",
      "connections": {
        "Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "Gemini AI Dish Suggestion Agent",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Think Tool": {
          "ai_tool": [
            [
              {
                "node": "Gemini AI Dish Suggestion Agent",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Save Dish Info": {
          "main": [
            [
              {
                "node": "Prepare Dish Details for AI",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Save Customer Info": {
          "main": [
            [
              {
                "node": "Save Dish Info",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Clean Data for AI Input": {
          "main": [
            [
              {
                "node": "Gemini AI Dish Suggestion Agent",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "New Order Trigger (Form)": {
          "main": [
            [
              {
                "node": "Extract & Format Order Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract & Format Order Data": {
          "main": [
            [
              {
                "node": "Save Customer Info",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Prepare Dish Details for AI": {
          "main": [
            [
              {
                "node": "Clean Data for AI Input",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Gemini AI Dish Suggestion Agent": {
          "main": [
            [
              {
                "node": "Format AI Suggestions for Telegram",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format AI Suggestions for Telegram": {
          "main": [
            [
              {
                "node": "Send Suggestions via Telegram",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 21,
      "nodeTypes": {
        "n8n-nodes-base.code": {
          "count": 4
        },
        "n8n-nodes-base.telegram": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 10
        },
        "n8n-nodes-base.formTrigger": {
          "count": 1
        },
        "n8n-nodes-base.googleSheets": {
          "count": 2
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.toolThink": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatGoogleGemini": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Oneclick AI Squad",
      "username": "oneclick-ai",
      "bio": "The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations  from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.",
      "verified": true,
      "links": [
        "https://www.oneclickitsolution.com/"
      ],
      "avatar": "https://gravatar.com/avatar/848fca91367142f65f9e5c55d64e5c9952b160d7b060d103b52aa343c6bc7b3d?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 18,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheets",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Sheet",
              "Spreadsheet",
              "GS"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/",
                  "icon": "❤️",
                  "label": "Love at first sight: Ricardo’s n8n journey"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/",
                  "icon": "⏲",
                  "label": "Creating triggers for n8n workflows using polling"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/",
                  "icon": "🍔",
                  "label": "How Honest Burgers Use Automation to Save $100k per year"
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\",\"output\"]",
        "defaults": {
          "name": "Google Sheets"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets",
        "typeVersion": 5,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 49,
        "icon": "file:telegram.svg",
        "name": "n8n-nodes-base.telegram",
        "codex": {
          "data": {
            "alias": [
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/world-poetry-day-workflow/",
                  "icon": "📜",
                  "label": "Celebrating World Poetry Day with a daily poem in Telegram"
                },
                {
                  "url": "https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/",
                  "icon": "💪",
                  "label": "Using Automation to Boost Productivity in the Workplace"
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/",
                  "icon": "🤟",
                  "label": "Creating scheduled text affirmations with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-telegram-bots-with-n8n-a-no-code-platform/",
                  "icon": "💬",
                  "label": "Creating Telegram Bots with n8n, a No-Code Platform"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.telegram/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/telegram/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "Telegram"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjYgNjYiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzM3YWVlMiIgZD0iTTAgMzJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyczMyLTE0LjMyNyAzMi0zMlM0OS42NzMgMCAzMiAwIDAgMTQuMzI3IDAgMzIiLz48cGF0aCBmaWxsPSIjYzhkYWVhIiBkPSJtMjEuNjYxIDM0LjMzOCAzLjc5NyAxMC41MDhzLjQ3NS45ODMuOTgzLjk4MyA4LjA2OC03Ljg2NCA4LjA2OC03Ljg2NGw4LjQwNy0xNi4yMzctMjEuMTE5IDkuODk4eiIvPjxwYXRoIGZpbGw9IiNhOWM2ZDgiIGQ9Im0yNi42OTUgMzcuMDM0LS43MjkgNy43NDZzLS4zMDUgMi4zNzMgMi4wNjggMGw0LjY0NC00LjIwMyIvPjxwYXRoIGQ9Im0yMS43MyAzNC43MTItNy44MDktMi41NDVzLS45MzItLjM3OC0uNjMzLTEuMjM3Yy4wNjItLjE3Ny4xODYtLjMyOC41NTktLjU4OCAxLjczMS0xLjIwNiAzMi4wMjgtMTIuMDk2IDMyLjAyOC0xMi4wOTZzLjg1Ni0uMjg4IDEuMzYxLS4wOTdjLjIzMS4wODguMzc4LjE4Ny41MDMuNTQ4LjA0NS4xMzIuMDcxLjQxMS4wNjguNjg5LS4wMDMuMjAxLS4wMjcuMzg2LS4wNDUuNjc4LS4xODQgMi45NzgtNS43MDYgMjUuMTk4LTUuNzA2IDI1LjE5OHMtLjMzIDEuMy0xLjUxNCAxLjM0NWMtLjQzMi4wMTYtLjk1Ni0uMDcxLTEuNTgyLS42MS0yLjMyMy0xLjk5OC0xMC4zNTItNy4zOTQtMTIuMTI2LTguNThhLjM0LjM0IDAgMCAxLS4xNDYtLjIzOWMtLjAyNS0uMTI1LjEwOC0uMjguMTA4LS4yOHMxMy45OC0xMi40MjcgMTQuMzUyLTEzLjczMWMuMDI5LS4xMDEtLjA3OS0uMTUxLS4yMjYtLjEwNy0uOTI5LjM0Mi0xNy4wMjUgMTAuNTA2LTE4LjgwMSAxMS42MjktLjEwNC4wNjYtLjM5NS4wMjMtLjM5NS4wMjMiLz48L2c+PC9zeW1ib2w+PC9zdmc+"
        },
        "displayName": "Telegram",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 834,
        "icon": "file:code.svg",
        "name": "n8n-nodes-base.code",
        "codex": {
          "data": {
            "alias": [
              "cpde",
              "Javascript",
              "JS",
              "Python",
              "Script",
              "Custom Code",
              "Function"
            ],
            "details": "The Code node allows you to execute JavaScript in your workflow.",
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Code"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Code",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1119,
        "icon": "fa:robot",
        "name": "@n8n/n8n-nodes-langchain.agent",
        "codex": {
          "data": {
            "alias": [
              "LangChain",
              "Chat",
              "Conversational",
              "Plan and Execute",
              "ReAct",
              "Tools"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Agents",
                "Root Nodes"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "AI Agent",
          "color": "#404040"
        },
        "iconData": {
          "icon": "robot",
          "type": "icon"
        },
        "displayName": "AI Agent",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1225,
        "icon": "file:form.svg",
        "name": "n8n-nodes-base.formTrigger",
        "codex": {
          "data": {
            "alias": [
              "table",
              "submit",
              "post"
            ],
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.formtrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Other Trigger Nodes"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "On form submission"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwQjdCQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzQuOTc4IDM3LjczMmExLjU2IDEuNTYgMCAwIDEtMS41NjIgMS41NjNINi4yNmExLjU2IDEuNTYgMCAwIDEtMS41NjMtMS41NjNWOS42MDdjMC0uNDA1LjE1Ny0uNzk0LjQzOC0xLjA4Nmw2LjMwNC02LjUzMXY1LjM0NEg4LjIxM2ExLjE3MiAxLjE3MiAwIDEgMCAwIDIuMzQzaDQuNDNhMS4xNyAxLjE3IDAgMCAwIDEuMTcxLTEuMTcxVi4yMzJoMTkuNjAyYTEuNTYgMS41NiAwIDAgMSAxLjU2MiAxLjU2M3YxMC4zMjdsLTIuODYgMi44Ni04LjI1MiA4LjI3NmE0MTMuMDA2IDQxMy4wMDYgMCAwIDEtMS42NTQgMS42NjJsLS4zMzcuMzM3YTIgMiAwIDAgMC0uNTU3IDEuMDhMMjAuMyAzMS45MjJjLS4xMDguNjM4LS4yMTUgMS4wNzkuMjExIDEuNDE4LjQwMy4zMi45LjE3NCAxLjU0LjA2Nmw1LjQwOC0uOTI4YTIgMiAwIDAgMCAxLjA4LS41NTZsNi40NC02LjQyOXptLTI0LjAzLTIxLjI2NWExLjE4IDEuMTggMCAwIDAgMS4xNzEgMS4xNzJoMTMuMTYzYTEuMTcyIDEuMTcyIDAgMSAwIDAtMi4zNDRIMTIuMTE5YTEuMTcgMS4xNyAwIDAgMC0xLjE3MiAxLjE3Mm03LjI5NCAxNC43NjZhMS4xNyAxLjE3IDAgMCAwLTEuMTcyLTEuMTcySDEyLjEyYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNC45NTFhMS4xNyAxLjE3IDAgMCAwIDEuMTcyLTEuMTcybS44Ni03LjM5MWExLjE3IDEuMTcgMCAwIDAtMS4xNzItMS4xNzJoLTUuODExYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNS44MWExLjE2NCAxLjE2NCAwIDAgMCAxLjE3My0xLjE3MSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwQjdCQyIgZD0ibTMzLjUzMiAxNi4zOTcgNC4yODktNC4yODkgMy43NTggMy43MSAxLjYxNy0xLjYxNiAyLjI1OCAyLjI1N2MuMjE4LjIxOC4zNC41MTMuMzQzLjgyLS4wMDIuMzExLS4xMjUuNjA4LS4zNDQuODNsLTYuODA0IDYuNzk2YTEuMTMgMS4xMyAwIDAgMS0uODI4LjM0MyAxLjE1IDEuMTUgMCAwIDEtLjgyOC0uMzQzIDEuMTggMS4xOCAwIDAgMSAwLTEuNjU3bDUuOTc2LTUuOTY4LTEuMzEyLTEuMzEzLTEuMzgzIDEuNDE0LTEzLjE0OSAxMy4xMjUtNC42MTcuNzgyLjc4Mi00LjYxNy4zMzYtLjMzNyAyLjU2MiAyLjU1NWExLjEgMS4xIDAgMCAwIC44MjguMzQ0Yy4zMTIuMDA1LjYxMi0uMTIuODI4LS4zNDRhMS4xOCAxLjE4IDAgMCAwIDAtMS42NTZsLTIuNTYyLTIuNTYyek00NC43MzYgMTIuMjRjMCAuNDE0LS4xNjMuODEtLjQ1NCAxLjEwMmwtLjkyMi45MTQtMy44NTItMy44MjguOTMtLjkzYTEuNTYzIDEuNTYzIDAgMCAxIDIuMjAzIDBsMS42NCAxLjY0MWMuMjkxLjI5My40NTUuNjkuNDU1IDEuMTAyIi8+PC9zdmc+"
        },
        "displayName": "n8n Form Trigger",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1262,
        "icon": "file:google.svg",
        "name": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Language Models",
                "Root Nodes"
              ],
              "Language Models": [
                "Chat Models (Recommended)"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Google Gemini Chat Model"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"
        },
        "displayName": "Google Gemini Chat Model",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1289,
        "icon": "fa:brain",
        "name": "@n8n/n8n-nodes-langchain.toolThink",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolthink/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Tools"
              ],
              "Tools": [
                "Other Tools"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Think"
        },
        "iconData": {
          "icon": "brain",
          "type": "icon"
        },
        "displayName": "Think Tool",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 38,
        "name": "Lead Nurturing"
      },
      {
        "id": 51,
        "name": "Multimodal AI"
      }
    ],
    "image": []
  }
}