{
  "id": "30MzAgS7uXFWDLik",
  "name": "Chatbot WooCommerce for Website",
  "tags": [],
  "nodes": [
    {
      "id": "accaecee-3f06-4697-8e29-409d1571255c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        256,
        -944
      ],
      "parameters": {
        "color": 7,
        "width": 763,
        "height": 885,
        "content": "## STEP 4 - Guardrails\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "5e83386a-a92c-40b4-b5e8-d38360da7310",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -464,
        224
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6c76e5b6-8559-4c6b-83e9-1da80adfe9df",
      "name": "Qdrant Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
      "position": [
        544,
        352
      ],
      "parameters": {
        "mode": "insert",
        "options": {},
        "qdrantCollection": {
          "__rl": true,
          "mode": "list",
          "value": "fashionart",
          "cachedResultName": "fashionart"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e87fa18b-ff86-45f1-8d7b-8bfbbdc0841a",
      "name": "Create collection",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -144,
        96
      ],
      "parameters": {
        "url": "http://qdrant_jush:6333/collections/fashionart",
        "method": "PUT",
        "options": {},
        "jsonBody": "{\n  \"vectors\": {\n    \"size\": 1536,\n    \"distance\": \"Cosine\"  \n  },\n  \"shard_number\": 1,  \n  \"replication_factor\": 1,  \n  \"write_consistency_factor\": 1 \n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "57f5d1a0-281a-4bf6-809c-ca5ccf734093",
      "name": "Refresh collection",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -144,
        352
      ],
      "parameters": {
        "url": "http://qdrant_jush:6333/collections/fashionart/points/delete",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n  \"filter\": {}\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3cdc6b90-3d3d-4424-86e7-3c158cac2655",
      "name": "Get folder",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        80,
        352
      ],
      "parameters": {
        "filter": {
          "driveId": {
            "__rl": true,
            "mode": "list",
            "value": "My Drive",
            "cachedResultUrl": "https://drive.google.com/drive/my-drive",
            "cachedResultName": "My Drive"
          },
          "folderId": {
            "__rl": true,
            "mode": "id",
            "value": "=1bDiixBqyi3snQWRokpdaKSNkMFJBEcm0"
          }
        },
        "options": {},
        "resource": "fileFolder"
      },
      "typeVersion": 3
    },
    {
      "id": "e59891ac-ffe3-46e1-95ee-493dc7a980fb",
      "name": "Download Files",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        304,
        352
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {
          "googleFileConversion": {
            "conversion": {
              "docsToFormat": "text/plain"
            }
          }
        },
        "operation": "download"
      },
      "typeVersion": 3
    },
    {
      "id": "3ea2d9c8-2d2b-41cd-ac3b-3c97dfbf6b96",
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        528,
        560
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "4b957666-0f0a-4fd7-8c00-81f1ab48a8f3",
      "name": "Default Data Loader",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        704,
        560
      ],
      "parameters": {
        "options": {},
        "dataType": "binary"
      },
      "typeVersion": 1
    },
    {
      "id": "b6215a1d-7440-4322-a18c-8cc0819eb304",
      "name": "Token Splitter",
      "type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter",
      "position": [
        672,
        720
      ],
      "parameters": {
        "chunkSize": 300,
        "chunkOverlap": 30
      },
      "typeVersion": 1
    },
    {
      "id": "9c42a64e-8884-48eb-a1f3-879a48606c45",
      "name": "Window Buffer Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        1232,
        -576
      ],
      "parameters": {
        "sessionKey": "={{ $('When chat message received').item.json.sessionId }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "b29701b1-366c-4672-85f4-90ea8987ed60",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -224,
        -16
      ],
      "parameters": {
        "color": 7,
        "width": 1248,
        "height": 284,
        "content": "## STEP 1 -  Create Qdrant Collection\nChange:\n- QDRANTURL\n- COLLECTION"
      },
      "typeVersion": 1
    },
    {
      "id": "1fbeda51-4657-4449-bc48-e877236cebb3",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -224,
        288
      ],
      "parameters": {
        "color": 7,
        "width": 1244,
        "height": 560,
        "content": "## STEP 2 - Documents vectorization with Qdrant and Google Drive\n\n\n\n\n\n\n\n\n\n\n\nChange:\n- QDRANTURL\n- COLLECTION"
      },
      "typeVersion": 1
    },
    {
      "id": "ed21590d-cc2f-4967-bdee-318ec5cabe3b",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1040,
        -944
      ],
      "parameters": {
        "color": 7,
        "width": 1468,
        "height": 884,
        "content": "## Configure AI Agent\nSet System prompt and chat model. If you want you can set any tools"
      },
      "typeVersion": 1
    },
    {
      "id": "f4994362-3e00-47f9-96ba-9a9ad4a75590",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1712,
        -400
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "d6cd32ef-bf57-481a-9325-778386f44236",
      "name": "Retrive Qdrant Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
      "position": [
        1408,
        -400
      ],
      "parameters": {
        "options": {},
        "qdrantCollection": {
          "__rl": true,
          "mode": "list",
          "value": "fashionart",
          "cachedResultName": "fashionart"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "35584102-5c0d-4fc6-8af3-e7b748a77579",
      "name": "Embeddings OpenAI2",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        1376,
        -224
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "58df059a-0b96-49e4-a299-1a24fc90c6d5",
      "name": "Calculator",
      "type": "@n8n/n8n-nodes-langchain.toolCalculator",
      "position": [
        1392,
        -576
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "1506fe0b-1390-4eb8-b4a5-73c3a5451d6c",
      "name": "Guardrails",
      "type": "@n8n/n8n-nodes-langchain.guardrails",
      "position": [
        400,
        -848
      ],
      "parameters": {
        "text": "={{ $json.chatInput }}",
        "guardrails": {},
        "customizeSystemMessage": true
      },
      "typeVersion": 2
    },
    {
      "id": "b595ce54-8a4e-4a2d-b0b0-abefac92418c",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1088,
        -576
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.5-flash"
      },
      "typeVersion": 1.1
    },
    {
      "id": "e9cc3762-0121-4de4-9075-173148a03053",
      "name": "rag_search",
      "type": "@n8n/n8n-nodes-langchain.toolVectorStore",
      "position": [
        1568,
        -592
      ],
      "parameters": {
        "name": "company_data",
        "description": "Retrive data about company knowledge from vector store"
      },
      "typeVersion": 1
    },
    {
      "id": "89750a10-b23a-447c-82f0-c415995feaf0",
      "name": "get_many_products",
      "type": "n8n-nodes-base.wooCommerceTool",
      "position": [
        2112,
        -592
      ],
      "parameters": {
        "options": {},
        "operation": "getAll"
      },
      "typeVersion": 1
    },
    {
      "id": "13b7c9d3-6219-490d-b266-305a857ea8bd",
      "name": "get_product",
      "type": "n8n-nodes-base.wooCommerceTool",
      "position": [
        1984,
        -592
      ],
      "parameters": {
        "operation": "get",
        "productId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Product_ID', ``, 'string') }}"
      },
      "credentials": {
        "wooCommerceApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "55853a2c-1e7d-4108-a7cc-4913d2d2bfd4",
      "name": "E-Commerce Customer Support AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1200,
        -864
      ],
      "parameters": {
        "text": "={{ $json.guardrailsInput }}",
        "options": {
          "systemMessage": "=# Virtual Assistant \u2014 Fashionart\n\nToday is {{ $now }}\n\nYou are the virtual assistant for **Fashionart**, a clothing, fashion, and accessories boutique located in Verona, at Corso Porta Borsari 12. Your goal is to provide a refined, personal, and helpful customer service experience \u2014 exactly as an in-store style consultant would.\n\nAlways respond in English, with a friendly, elegant, and professional tone. Address the customer informally and warmly, without being overly formal.\n\n---\n\n## AVAILABLE TOOLS\n\nUse the following tools whenever relevant. Do not ask the customer for information you can retrieve independently.\n\n### 1. `rag_search` \u2014 Knowledge Base\nUse this tool to retrieve information about policies, FAQs, guides, and store content.\n- **When to use it**: questions about returns, exchanges, shipping, sizing, materials, garment care, active promotions, in-store events, loyalty programme, opening hours.\n- **Always use this tool first** before answering any question about policies or services.\n- If no relevant result is found, inform the customer and offer to involve staff via `get_human_support`.\n- Note: for live product data (price, availability, details), always use `get_product` or `get_many_products` \u2014 not the knowledge base.\n\n### 2. `get_product` \u2014 Single Product Sheet\nUse this tool to retrieve real-time details for a specific product (name, description, price, size and colour availability, materials, item code, images).\n- **When to use it**: the customer asks about a specific item or accessory by name, code, or ID; you need to verify price or availability before responding; you need technical details about an item.\n- Always use this tool for live data \u2014 never rely on stored information about prices or stock.\n- Input: product ID, item code, or item name (infer from context or ask the customer if necessary).\n- If specific products are mentioned, first retrieve the product_id by calling the `get_many_products` tool.\n\n### 3. `get_many_products` \u2014 Catalogue and Multi-Product Search\nUse this tool to retrieve a list of products, filterable by category, occasion, size, price range, colour, brand, or other attributes.\n- **When to use it**: the customer asks for recommendations, wants to compare several items, or is browsing a category or occasion (e.g. \"formal dresses under \u20ac200\", \"women's winter coats size M\").\n- After retrieving results, present a clear and readable summary \u2014 never list raw data.\n- Combine with `rag_search` when the customer also has questions about policies, size guides, or fabric composition.\n\n### 4. `get_human_support` \u2014 Escalation to Fashionart Staff\nUse this tool to transfer the conversation to a member of Fashionart's staff. When invoked, it sends an email to the support manager with the full conversation transcript and the customer's phone number for a personal callback.\n- **When to use it**:\n  - The customer explicitly asks to speak with a person or to be called back.\n  - The issue is too complex or sensitive (e.g. complaints, defective items, order problems, personal shopping or custom styling requests).\n  - The customer is dissatisfied or frustrated and needs direct attention.\n  - None of the available tools is sufficient to resolve the request.\n- **Before invoking this tool**, you must:\n  1. Inform the customer that you are involving Fashionart's staff.\n  2. Ask for their **phone number** and **email address** if not already provided in the conversation.\n  3. Confirm to the customer that they will be contacted as soon as possible.\n- **What to fill in before calling the tool**:\n  - `customer_name`: customer's name (if provided during the conversation).\n  - `customer_email`: email address (if provided).\n  - `customer_phone`: phone number collected during the conversation.\n  - `conversation_transcript`: the full conversation history, with roles (Customer / Assistant).\n  - `issue_summary`: a brief summary (2\u20134 sentences) of the issue and what has already been attempted.\n- **After invoking**, close with a warm, reassuring message confirming the escalation.\n- **Never invoke this tool silently** \u2014 always announce to the customer what you are doing, both before and after.\n\n---\n\n## BEHAVIOURAL GUIDELINES\n\n### Product Information\n- Use `get_product` for a single known item and `get_many_products` to explore a category or compare multiple items.\n- Always present live data (price, size and colour availability) retrieved from the tools \u2014 never from memory or assumptions.\n- Highlight key differences between similar items to help the customer choose: fit, material, occasion, price range.\n- Flag any promotions or offers if present in tool results or the knowledge base.\n- Never invent specifications, prices, or availability \u2014 every response must be based solely on retrieved data.\n\n### Style Advice\n- When the customer is looking for a complete outfit or asks for inspiration, use `get_many_products` to suggest coordinated items.\n- Always consider the occasion (everyday, work, formal event, evening), the season, and expressed preferences.\n- Suggest pairings (e.g. blazer + trousers + accessories) when products are available in the catalogue.\n- If the customer is undecided, ask one targeted question to better understand their needs before proceeding.\n\n### Returns, Exchanges, and Policy Assistance\n- Always query `rag_search` before answering questions about returns, exchanges, warranties, or shipping.\n- Reference retrieved information naturally (e.g. \"According to our returns policy\u2026\").\n- Guide the customer step by step through the correct procedure.\n- For unusual situations or complaints (defective item, wrong order, unreceived refund), do not attempt to handle independently \u2014 escalate via `get_human_support`.\n\n### Escalation to Human Staff\n- Never leave the customer without a way forward. If you cannot resolve the issue, always offer `get_human_support`.\n- Present escalation as added value, not a limitation: you are connecting the customer with a Fashionart specialist who will call them personally.\n- Do not escalate prematurely \u2014 always attempt to resolve independently with available tools first.\n\n### Tone and Style\n- Friendly, elegant, and professional. Language should reflect the identity of a carefully curated boutique.\n- Use the customer's name if known from the conversation.\n- Avoid technical jargon unless the customer uses it first.\n- Use bullet points or numbered lists for product comparisons and multi-step instructions.\n- Never speculate \u2014 if unsure, say so clearly and offer escalation.\n\n---\n\n## TOOL USAGE LOGIC\n\n1. **Customer asks about a specific product** \u2192 call `get_product`; supplement with `rag_search` for size guides or fabric care.\n2. **Customer seeks advice or is browsing a category** \u2192 call `get_many_products` with relevant filters; supplement with `rag_search` if needed.\n3. **Customer is comparing two or more items** \u2192 call `get_many_products` (or multiple `get_product` calls) and summarise differences clearly.\n4. **Customer asks about policies, services, or FAQs** \u2192 call `rag_search`.\n5. **The response requires both product data and policy** \u2192 combine the product tool with `rag_search`.\n6. **Issue is unresolved, complex, or the customer requests a human** \u2192 collect phone number if missing, then call `get_human_support`.\n7. **No tool returns useful data** \u2192 inform the customer transparently, try `rag_search` as a fallback, then offer `get_human_support`.\n\n---\n\n## LIMITATIONS\n\n- You cannot process payments, modify orders, or perform write operations \u2014 inform the customer and direct them to the appropriate channel, or use `get_human_support`.\n- Never expose raw technical data, internal IDs, or system errors \u2014 always translate results into natural, readable language.\n- Never invent information not retrieved from the tools.\n- `get_human_support` is the final escalation path \u2014 use it confidently whenever the situation calls for it.\n\n---\n\n## INTERACTION EXAMPLES\n\n**Specific product search**\n> Customer: \"Do you have the grey blazer I saw in the window?\"\n> Assistant: [calls `get_product`] \"Yes! The grey ash wool-blend blazer is available in sizes S through XL, priced at \u20ac189. It's also in stock in charcoal grey. Would you like to see how to style it?\"\n\n**Style advice**\n> Customer: \"I'm looking for an elegant outfit for a summer wedding, budget around \u20ac300.\"\n> Assistant: [calls `get_many_products` with filters: occasion=formal, season=summer, max_price=300] \"Here are some perfect options for a summer wedding:\n> - **Floral midi dress** \u2014 \u20ac179 | Lightweight fabric, pastel floral print \u2705 Available\n> - **Linen trouser suit** \u2014 \u20ac229 | Jacket + trousers, ivory colour \u2705 Available\n> - **One-shoulder silk dress** \u2014 \u20ac259 | Straight cut, blush colour \u26a0\ufe0f Last sizes remaining\n> Would you like to explore one of these further, or do you need matching accessories?\"\n\n**Return enquiry**\n> Customer: \"Can I return an item I bought online?\"\n> Assistant: [calls `rag_search`] \"Of course! According to our policy, returns for online purchases are free within 30 days of receiving the parcel, provided the item is in its original condition with tags intact. I can walk you through the procedure if you like.\"\n\n**Escalation on request**\n> Customer: \"I'd like to speak to someone at the store.\"\n> Assistant: \"Of course, no problem! I'll get one of our team on the line to call you personally. Could you leave me your phone number?\"\n> Customer: \"+39 045 123 4567\"\n> Assistant: [calls `get_human_support`] \"Done! I've sent your details and our conversation to the Fashionart team. You'll receive a call at +39 045 123 4567 as soon as possible \u2014 usually within a few hours during opening times. Is there anything else I can help you with in the meantime?\"\n\n**Out-of-scope request**\n> Customer: \"Can you change the address on my order?\"\n> Assistant: \"Unfortunately I can't modify orders directly \u2014 but I can put you straight in touch with our team who can do it in just a few minutes. Would you like me to arrange a callback for you?\""
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "70623cec-aa4f-4ad7-a78f-9717c69f670c",
      "name": "get_human_support",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        2320,
        -592
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', `containing the full conversation transcript and the customers phone number for a callback. `, 'string') }}",
        "options": {},
        "subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}"
      },
      "typeVersion": 2.2
    },
    {
      "id": "fb03116c-475b-41f5-8417-e360b2e0712b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1008,
        -1872
      ],
      "parameters": {
        "width": 1456,
        "height": 896,
        "content": "## WooCommerce Chatbot for website\n\nThis workflow implements an AI-powered customer support chatbot for an e-commerce store (Fashionart). It integrates with chatbot website (chat trigger), Qdrant (vector store), Google Drive (knowledge base), WooCommerce (product data), and Gmail (human escalation).\n\n### How it works\n\nThis workflow creates an AI-powered customer support chatbot for WooCommerce stores by combining conversational AI, vector search, and live product integrations. Customer messages from the website chat are first validated through AI guardrails, then processed by a LangChain AI agent that can retrieve company knowledge from Qdrant, fetch real-time WooCommerce product data, perform calculations, or escalate conversations to human support via Gmail. A Window Buffer Memory node maintains recent conversation history for more contextual and personalized replies. The workflow also includes a separate ingestion branch that syncs Google Drive documents into Qdrant using OpenAI embeddings, enabling RAG-based answers for FAQs, policies, and store information. \n\n### Setup steps\n\nStart by creating and configuring a Qdrant collection (`fashionart`) with the correct vector settings and ensure the Qdrant instance is accessible. Configure Google Drive OAuth access and specify the folder containing support documents for ingestion. Add OpenAI or Gemini credentials for embeddings and chat models, then connect WooCommerce API credentials to the product search nodes. Configure Gmail authentication for escalation emails and customize the AI agent\u2019s system prompt with store-specific branding, policies, and tone. Finally, deploy the workflow, connect the chat webhook to your frontend, run the ingestion branch to populate Qdrant, and activate the workflow in n8n for production use. \n\n\n```javascript\ncreateChat({\n\twebhookUrl: 'WEBHOOK TRIGGER URL',\n\twebhookConfig: {\n\t\tmethod: 'POST',\n\t\theaders: {}\n\t},\n\ttarget: '#n8n-chat',\n\tmode: 'window',\n\tchatInputKey: 'chatInput',\n\tchatSessionKey: 'sessionId',\n\tloadPreviousSession: true,\n\tmetadata: {},\n\tshowWelcomeScreen: false,\n\tdefaultLanguage: 'en',\n\tinitialMessages: [\n\t\t'Hi there! \ud83d\udc4b',\n\t\t'My name is Nathan. How can I assist you today?'\n\t],\n\ti18n: {\n\t\ten: {\n\t\t\ttitle: 'Hi there! \ud83d\udc4b',\n\t\t\tsubtitle: \"Start a chat. We're here to help you 24/7.\",\n\t\t\tfooter: '',\n\t\t\tgetStarted: 'New Conversation',\n\t\t\tinputPlaceholder: 'Type your question..',\n\t\t},\n\t},\n\tenableStreaming: false,\n});"
      },
      "typeVersion": 1
    },
    {
      "id": "c8542563-4170-4994-9292-44d0d3fffe28",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -224,
        -944
      ],
      "parameters": {
        "color": 7,
        "width": 459,
        "height": 885,
        "content": "## STEP 3 - Chat Webhook \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a18257ad-1454-42da-9e74-d172c0d3c2bc",
      "name": "Chat",
      "type": "@n8n/n8n-nodes-langchain.chat",
      "position": [
        736,
        -704
      ],
      "parameters": {
        "message": "Mi dispiace, posso per\u00f2 aiutarti con qualsiasi domanda riguardante Fashionart, i nostri prodotti o i nostri servizi! C'\u00e8 qualcos'altro in cui posso assisterti?",
        "options": {}
      },
      "typeVersion": 1.3
    },
    {
      "id": "7863851f-3b71-4b39-aa71-6cbcfb4b6323",
      "name": "Chat1",
      "type": "@n8n/n8n-nodes-langchain.chat",
      "position": [
        2208,
        -864
      ],
      "parameters": {
        "message": "={{ $json.output }}",
        "options": {}
      },
      "typeVersion": 1.3
    },
    {
      "id": "540c7a76-72bb-4a85-91bf-b27f2c5abc50",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -160,
        -848
      ],
      "parameters": {
        "public": true,
        "options": {
          "responseMode": "responseNodes"
        }
      },
      "typeVersion": 1.4
    },
    {
      "id": "839d6f33-3a7c-48fd-99ef-b9799fe6b6d4",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1008,
        -944
      ],
      "parameters": {
        "color": 7,
        "width": 736,
        "height": 752,
        "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": "38ddb893-085e-45f5-b39f-9b0c8ecbec6c",
  "connections": {
    "Calculator": {
      "ai_tool": [
        [
          {
            "node": "E-Commerce Customer Support AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get folder": {
      "main": [
        [
          {
            "node": "Download Files",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Guardrails": {
      "main": [
        [
          {
            "node": "E-Commerce Customer Support AI Agent",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Chat",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "rag_search": {
      "ai_tool": [
        [
          {
            "node": "E-Commerce Customer Support AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "get_product": {
      "ai_tool": [
        [
          {
            "node": "E-Commerce Customer Support AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Download Files": {
      "main": [
        [
          {
            "node": "Qdrant Vector Store",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Token Splitter": {
      "ai_textSplitter": [
        [
          {
            "node": "Default Data Loader",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI": {
      "ai_embedding": [
        [
          {
            "node": "Qdrant Vector Store",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "get_human_support": {
      "ai_tool": [
        [
          {
            "node": "E-Commerce Customer Support AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "get_many_products": {
      "ai_tool": [
        [
          {
            "node": "E-Commerce Customer Support AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI2": {
      "ai_embedding": [
        [
          {
            "node": "Retrive Qdrant Vector Store",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "rag_search",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Refresh collection": {
      "main": [
        [
          {
            "node": "Get folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Default Data Loader": {
      "ai_document": [
        [
          {
            "node": "Qdrant Vector Store",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "Window Buffer Memory": {
      "ai_memory": [
        [
          {
            "node": "E-Commerce Customer Support AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "E-Commerce Customer Support AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Guardrails",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retrive Qdrant Vector Store": {
      "ai_vectorStore": [
        [
          {
            "node": "rag_search",
            "type": "ai_vectorStore",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Refresh collection",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "E-Commerce Customer Support AI Agent": {
      "main": [
        [
          {
            "node": "Chat1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}