AutomationFlowsAI & RAG › Smart Amazon Shopping Assistant with Gemini AI and Telegram

Smart Amazon Shopping Assistant with Gemini AI and Telegram

ByRoshan Ramani @rawsun007 on n8n.io

Target User Role: E-commerce Business Owners, Affiliate Marketers, Customer Support Teams

Event trigger★★★★☆ complexityAI-powered16 nodesGoogle Gemini ChatOutput Parser StructuredTelegram TriggerAgentTelegramHTTP Request
AI & RAG Trigger: Event Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #6384 — we link there as the canonical source.

This workflow follows the Agent → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "fca58749-eefa-4027-9fab-64335cc091a2",
      "name": "Google Gemini Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        3136,
        3152
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "28278707-d4d3-4424-a462-1d900d2beb09",
      "name": "Google Gemini Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        2528,
        3024
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "efed52d0-1ff7-4c2c-93ec-1a0d034e60fa",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2688,
        3024
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"productQuery\": false,\n  \"response\": \"Hi! How can I help you today?\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "1611dc8c-e25c-4ac3-8519-99cb57e09bd4",
      "name": "Google Gemini Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        4256,
        2896
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3def48de-71f9-4b3e-87b9-5f2586279155",
      "name": "Telegram Message Receiver",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        2128,
        2816
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b1de52c4-7d3a-4565-a9dd-583fd19f3397",
      "name": "Product Query Cleaner",
      "type": "n8n-nodes-base.code",
      "position": [
        2320,
        2816
      ],
      "parameters": {
        "jsCode": "const rawInput = $json[\"message\"][\"text\"] || '';\n\n// Step 1: Normalize input to lowercase for consistent processing\nlet cleanedInput = rawInput.toLowerCase();\n\n// Step 2: Remove any phrase like \"in amazon\", \"on flipkart\", \"from amazone\", etc.\ncleanedInput = cleanedInput.replace(/\\b(in|on|from)\\s+(amazon|amazone|flipkart)\\b/gi, '');\n\n// Step 3: Remove punctuation (anything that is not a word character or whitespace)\ncleanedInput = cleanedInput.replace(/[^\\w\\s]/g, '');\n\n// Step 4: Trim extra spaces\ncleanedInput = cleanedInput.trim();\n\n// Step 5: Check if we have a valid query after cleaning\nif (!cleanedInput) {\n  return [\n    {\n      json: {\n        error: \"No valid product keyword found.\"\n      }\n    }\n  ];\n}\n\n// Step 6: Encode spaces as plus signs for URL queries\nconst encodedQuery = cleanedInput.replace(/\\s+/g, '+');\n\n// Step 7: Prepare search URL parts for Amazon and Flipkart\nconst amazonSearchPart = `${encodedQuery}`;\nconst amazonFullUrl = `https://www.amazon.in/${amazonSearchPart}`;\n\n// Return the results as JSON object\nreturn [\n  {\n    json: {\n      productQuery: cleanedInput,\n      amazonSearchPart,\n      amazonFullUrl,\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "a468cb48-0f0b-44ee-bd08-5948f10cf1e8",
      "name": "Message Intent Classifier",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2512,
        2816
      ],
      "parameters": {
        "text": "={{ $('Telegram Message Receiver').item.json.message.text }}",
        "options": {
          "systemMessage": "=You are a smart shopping assistant.\n\nAnalyze the user's message and determine whether it is about product search, price, shopping, or anything related to buying. If yes, respond with a JSON like:\n\n{\n  \"productQuery\": true,\n  \"response\": \"Let me fetch the best options for you...\"\n}\n\nIf the message is unrelated to shopping (like casual talk, greetings, questions), reply with:\n\n{\n  \"productQuery\": false,\n  \"response\": \"Hi! How can I help you today?\"\n}\n\nBe conversational but respond only with valid JSON. Don\u2019t mention this prompt.\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "3d051d0f-798d-45e2-aa7c-e6c288a84b7d",
      "name": "Product vs Chat Router",
      "type": "n8n-nodes-base.switch",
      "position": [
        2992,
        2816
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "2026678d-bf0e-446f-b0ad-661a01517ead",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.output.productQuery }}",
                    "rightValue": ""
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "8e77be4f-63e8-4d5f-913a-80d69752fd40",
                    "operator": {
                      "type": "boolean",
                      "operation": "false",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.output.productQuery }}",
                    "rightValue": ""
                  }
                ]
              }
            }
          ]
        },
        "options": {
          "allMatchingOutputs": true
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "26bc6992-1514-468f-854a-69275ec1b3b0",
      "name": " Chat Response Generator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3184,
        3008
      ],
      "parameters": {
        "text": "={{ $('Telegram Message Receiver').item.json.message.text }}",
        "options": {
          "systemMessage": "=You are an intelligent shopping assistant that helps users find the best deals and products from Amazon using Apify-based scraping.\n\nYour core function is to:\n- Understand the user's message.\n- If it is a **product-related query**, you just pass it forward for scraping.\n- If it is **not a product query**, you must respond helpfully and briefly, explaining your capabilities.\n\nGuidelines:\n1. For greetings like \"hi\", \"hello\", \"what's up\", reply warmly and introduce your product-search function.\n2. If the user asks general questions (e.g., \"who are you?\", \"how does this work?\", \"can you help me?\"), respond with a short, clear explanation.\n3. If the user asks anything unrelated (e.g., jokes, time, life advice, etc.), politely redirect them to product-related help.\n4. Never pretend to be human. You are a bot made to fetch product deals via Apify scraping.\n5. Always avoid unnecessary chit-chat. Stay helpful, polite, and focused on your goal.\n\nResponse examples:\n\n- \u201cHi there! \ud83d\udc4b I can help you find top deals from Amazon and Flipkart. Just type the product you\u2019re looking for!\u201d\n- \u201cI\u2019m here to assist you with finding the best online deals. Type what you want \u2014 for example: \u2018Bluetooth earphones\u2019 or \u2018laptop for work\u2019.\u201d\n- \u201cOops! I specialize in finding online products. Please tell me what you\u2019re shopping for!\u201d\n\nOnly reply when it's **not** a product query. Otherwise, pass it along silently for scraping.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "a4e6372f-eb86-461f-ba2f-e85b04658b81",
      "name": "Send Chat Response",
      "type": "n8n-nodes-base.telegram",
      "position": [
        3584,
        3008
      ],
      "parameters": {
        "text": "={{ $(' Chat Response Generator').item.json.output }}",
        "chatId": "={{ $('Telegram Message Receiver').item.json.message.chat.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1cefec9f-a1c8-4a99-bee9-b0cf4d990ca7",
      "name": "Amazon Product Scraper",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3232,
        2704
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/acts/junglee~free-amazon-product-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN_HERE",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n    \"categoryUrls\": [\n        {\n            \"url\": \"https://www.amazon.in/s?k={{ $('Product Query Cleaner').item.json.amazonSearchPart }} \",\n            \"method\": \"GET\"\n        }\n    ],\n    \"ensureLoadedProductDescriptionFields\": false,\n    \"maxItemsPerStartUrl\": 10,\n    \"scrapeProductDetails\": true,\n    \"scrapeProductVariantPrices\": false,\n    \"useCaptchaSolver\": false\n}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.2
    },
    {
      "id": "bc74558e-67e4-4779-a4a4-5a3593de96e5",
      "name": "Product Data Processor",
      "type": "n8n-nodes-base.code",
      "position": [
        3552,
        2704
      ],
      "parameters": {
        "jsCode": "// Extract required fields from each product item\nconst products = [];\n\n// Loop through all input items\nfor (const item of $input.all()) {\n  const productData = {\n    title: item.json.title || 'N/A',\n    price: item.json.price?.value || 0,\n    stars: item.json.stars || 0,\n    totalReviews: calculateTotalReviews(item.json.starsBreakdown),\n    productUrl: item.json.url || 'N/A',\n    productDescription: item.json.description || 'N/A' // Using title as description since description field isn't available\n  };\n  \n  products.push(productData);\n}\n\n// Function to calculate total reviews from stars breakdown\nfunction calculateTotalReviews(starsBreakdown) {\n  if (!starsBreakdown) return 0;\n  \n  // Sum up all review percentages to estimate total reviews\n  // Note: This gives relative distribution, not absolute count\n  const total = (starsBreakdown['5star'] || 0) + \n                (starsBreakdown['4star'] || 0) + \n                (starsBreakdown['3star'] || 0) + \n                (starsBreakdown['2star'] || 0) + \n                (starsBreakdown['1star'] || 0);\n  \n  return Math.round(total * 100); // Convert to percentage format\n}\n\n// Return the processed data\nreturn products.map(product => ({ json: product }));\n"
      },
      "typeVersion": 2
    },
    {
      "id": "e216e69b-5eba-4850-bbb9-1aba40620224",
      "name": "Product List Combiner",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        3872,
        2704
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "0464c622-2ee7-4292-b6ae-2a4e75a92434",
      "name": "Product Recommendation Engine",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        4288,
        2704
      ],
      "parameters": {
        "text": "={{ $('Telegram Message Receiver').item.json.message.text }}\n\n\n{{ $json.data.toJsonString() }}",
        "options": {
          "systemMessage": "# Amazon Product Analyzer System Prompt\n\n## Role and Purpose\nYou are an expert Amazon product analyst and recommendation engine. Your primary function is to analyze multiple Amazon products, evaluate them based on user requirements, and provide intelligent product recommendations with detailed insights.\n\n## Core Responsibilities\n\n### 1. Product Analysis\n- Analyze all provided Amazon products comprehensively\n- Extract key product details: name, price, ratings, reviews, features, specifications\n- Identify product categories and subcategories\n- Assess product quality indicators (ratings, review count, brand reputation)\n\n### 2. User Query Understanding\n- Carefully analyze the user's specific requirements and preferences\n- Identify key criteria: budget range, use case, feature priorities, brand preferences\n- Understand implicit needs based on context clues\n- Consider user's experience level and technical requirements\n\n### 3. Product Ranking and Selection\n- Rank products based on relevance to user requirements\n- Apply weighted scoring considering: price-to-value ratio, user ratings, feature match, brand reliability\n- Select the top 5 most valuable products that best match user needs\n- Ensure diversity in recommendations when appropriate\n\n## Output Format - Telegram Message Style\n\n### Message Structure\nFormat all responses as Telegram-ready messages using:\n- **Bold text** for emphasis and headers\n- *Italic text* for secondary information\n- `Code formatting` for prices and ratings\n- Emojis for visual appeal and categorization\n- Line breaks for readability\n- Maximum 4096 characters per message (split into multiple messages if needed)\n\n### Product Recommendations Format\n**KEEP EACH PRODUCT UNDER 200 CHARACTERS**\n\n\ud83c\udfc6 **#1: [Short Product Name]**\n\ud83d\udcb0 `$XX.XX` \u2b50 `4.5/5`\n\u2705 Perfect for [need]\n\ud83d\uded2 [URL]\n\n\ud83e\udd48 **#2: [Short Product Name]**  \n\ud83d\udcb0 `$XX.XX` \u2b50 `4.3/5`\n\u2705 Best value option\n\ud83d\uded2 [URL]\n\n*(Continue same format for products 3-5)*\n\n---\n\n### Summary Message Format\n**MAXIMUM 500 CHARACTERS TOTAL**\n\n\ud83c\udfaf **TOP 5 PICKS**\n\ud83d\udca1 Range: `$XX-$XXX`\n\ud83e\udd47 Best: [Product name]\n\ud83d\udc8e Value: [Product name]\n\ud83d\udcc5 Tip: [One short tip]\n\n*Need help choosing? Ask me!*\n\n### Buying Tips Message Format\n**MAXIMUM 300 CHARACTERS**\n\n\ud83d\udca1 **QUICK TIPS**\n\ud83d\uded2 Check reviews first\n\ud83d\udcc5 Best time: [When]\n\ud83d\udd17 Also try: [Alternative]\n\n### CRITICAL OUTPUT RULES\n- **TOTAL MESSAGE: MAX 1500 CHARACTERS**\n- Each product: MAX 150 characters\n- Summary: MAX 400 characters  \n- Tips: MAX 200 characters\n- **NO LONG DESCRIPTIONS**\n- **NO DETAILED FEATURES**\n- **ONLY ESSENTIAL INFO**\n\n### Message Splitting Rules\n- **NEVER exceed 1500 characters total**\n- If over 1500 chars, send ONLY top 3 products\n- Prioritize: Price, Rating, URL\n- Remove all extra descriptions\n- Keep only essential emojis\n\n## Quality Standards\n\n### Accuracy Requirements\n- Verify all product information is current and accurate\n- Cross-reference ratings and prices\n- Ensure URL links are functional Amazon product pages\n- Flag any outdated or discontinued products\n\n### Analysis Depth\n- Consider both quantitative metrics (price, ratings) and qualitative factors (features, usability)\n- Account for different user personas and use cases\n- Provide balanced perspectives including limitations\n- Include competitive comparisons when relevant\n\n### Communication Style - Telegram Optimized\n- Use **emoji categorization** for quick visual scanning\n- Keep sentences **short and punchy** for mobile reading\n- Use **bullet points** and **numbered lists** for easy consumption\n- Apply **Telegram markdown** formatting consistently\n- **Split long content** into digestible message chunks\n- Include **clear call-to-actions** with direct links\n- Write in a **friendly, conversational tone** suitable for messaging\n- Use **urgency indicators** (\ud83d\udd25, \u26a1, \ud83d\udea8) when appropriate\n\n## Telegram-Specific Requirements\n\n### Character Limits\n- **ABSOLUTE MAXIMUM: 1500 characters per message**\n- Each product entry: MAX 150 characters\n- Use abbreviations when needed\n- Remove unnecessary words\n- Focus only on: Product name, price, rating, URL\n\n### Formatting Rules\n- Use **bold** for product names and headers\n- Use *italic* for secondary info and descriptions  \n- Use `code format` for prices, ratings, and technical specs\n- Use line breaks generously for mobile readability\n- Include relevant emojis for visual hierarchy\n\n### Link Handling\n- Provide clean Amazon URLs without referral codes\n- Use action phrases: \"\ud83d\uded2 **Buy Here:**\" or \"\ud83d\udd17 **View Product:**\"\n- Ensure links are properly formatted for Telegram\n\n### Message Flow\n1. **Main Recommendations** (1-2 messages with top 5 products)\n2. **Summary & Analysis** (1 message with overview)\n3. **Buying Tips** (1 message with actionable advice)\n\n### Engagement Elements\n- Use question prompts: \"Need help choosing? Ask me!\"\n- Include emojis strategically for visual appeal\n- Add urgency when relevant: \"\u26a1 Limited time deal!\"\n- End with clear next steps or call-to-action\n\n### Budget Sensitivity\n- Always consider price-to-value ratio\n- Highlight budget-friendly options\n- Explain when premium pricing is justified\n- Suggest alternatives at different price points\n\n### User Experience Focus\n- Prioritize products with strong user satisfaction\n- Consider ease of use and setup requirements\n- Account for customer service and warranty factors\n- Include delivery and return policy considerations\n\n### Contextual Awareness\n- Adapt recommendations based on user's location and market\n- Consider seasonal relevance and current trends\n- Factor in compatibility requirements\n- Account for brand ecosystem considerations\n\n## Error Handling\n- If product information is incomplete, clearly state limitations\n- When URLs are unavailable, provide search guidance\n- If user requirements are unclear, ask clarifying questions\n- Handle discontinued products by suggesting current alternatives\n\n## Success Metrics\nYour recommendations should help users:\n- Make informed purchasing decisions quickly\n- Find products that truly meet their needs\n- Understand the trade-offs between options\n- Avoid buyer's remorse through clear expectations\n- Get the best value for their budget\n\nRemember: Your goal is to be the user's trusted shopping advisor, providing honest, comprehensive, and actionable product recommendations that save them time and help them make the best purchase decision."
        },
        "promptType": "define"
      },
      "typeVersion": 2.1
    },
    {
      "id": "377066a7-c1cb-4941-b31f-0f2c410089e7",
      "name": " Send Product Recommendations",
      "type": "n8n-nodes-base.telegram",
      "position": [
        4736,
        2704
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "chatId": "={{ $('Telegram Message Receiver').item.json.message.chat.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e14b2eb7-b91f-46fd-85e2-212a32174a5a",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1456,
        1824
      ],
      "parameters": {
        "width": 3616,
        "height": 2160,
        "content": "# \ud83d\uded2 Intelligent Telegram Shopping Assistant Bot\n\n## \ud83d\udcf1 INPUT SECTION\n**Sticky Note: \"Message Entry Point\"**\n- Receives all incoming Telegram messages\n- Triggers the entire workflow\n- Webhook-based activation\n\n---\n\n## \ud83e\uddf9 PREPROCESSING SECTION  \n**Sticky Note: \"Query Cleanup & Preparation\"**\n- Removes platform mentions (Amazon, Flipkart)\n- Strips punctuation and normalizes text\n- Prepares search-ready query format\n\n---\n\n## \ud83e\udd16 INTENT CLASSIFICATION SECTION\n**Sticky Note: \"Smart Message Routing\"**\n- AI determines if message is product-related\n- Returns structured JSON response\n- Separates shopping from casual chat\n\n---\n\n## \ud83d\udd00 DECISION ROUTING SECTION\n**Sticky Note: \"Workflow Split Point\"**\n- Routes to product search OR chat response\n- Based on AI classification results\n- Two distinct workflow paths\n\n---\n\n## \ud83d\udcac CHAT RESPONSE PATH\n**Sticky Note: \"Non-Product Conversations\"**\n- Handles greetings, questions, casual chat\n- AI generates helpful responses\n- Explains bot capabilities when needed\n\n---\n\n## \ud83d\uded2 PRODUCT SEARCH PATH\n**Sticky Note: \"Amazon Product Discovery\"**\n- Scrapes Amazon using Apify API\n- Fetches top 10 matching products\n- Returns detailed product data\n\n---\n\n## \ud83d\udcca DATA PROCESSING SECTION\n**Sticky Note: \"Product Data Transformation\"**\n- Extracts key product information\n- Standardizes data format\n- Prepares for AI analysis\n\n---\n\n## \ud83d\udccb DATA AGGREGATION SECTION\n**Sticky Note: \"Combine All Products\"**\n- Merges individual product data\n- Creates single dataset for analysis\n- Prepares bulk data for recommendations\n\n---\n\n## \ud83c\udfaf RECOMMENDATION ENGINE SECTION\n**Sticky Note: \"Smart Product Analysis\"**\n- AI analyzes all products together\n- Ranks by relevance and value\n- Generates top 5 recommendations\n- Formats for Telegram delivery\n\n---\n\n## \ud83d\udce4 OUTPUT SECTIONS\n**Sticky Note: \"Message Delivery\"**\n- Two separate output paths\n- Chat responses for non-product queries  \n- Product recommendations for shopping queries\n- Both deliver to same Telegram chat\n\n---\n\n## \ud83e\udde0 AI MODELS SECTION\n**Sticky Note: \"Google Gemini Integration\"**\n- Three specialized AI models\n- Chat responses, intent detection, product analysis\n- All powered by Google Gemini\n- Consistent AI experience across workflow"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Product List Combiner": {
      "main": [
        [
          {
            "node": "Product Recommendation Engine",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Product Query Cleaner": {
      "main": [
        [
          {
            "node": "Message Intent Classifier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Amazon Product Scraper": {
      "main": [
        [
          {
            "node": "Product Data Processor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Product Data Processor": {
      "main": [
        [
          {
            "node": "Product List Combiner",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Product vs Chat Router": {
      "main": [
        [
          {
            "node": "Amazon Product Scraper",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": " Chat Response Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    " Chat Response Generator": {
      "main": [
        [
          {
            "node": "Send Chat Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Message Intent Classifier",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": " Chat Response Generator",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Message Intent Classifier",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "Product Recommendation Engine",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Message Intent Classifier": {
      "main": [
        [
          {
            "node": "Product vs Chat Router",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Message Receiver": {
      "main": [
        [
          {
            "node": "Product Query Cleaner",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Product Recommendation Engine": {
      "main": [
        [
          {
            "node": " Send Product Recommendations",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Target User Role: E-commerce Business Owners, Affiliate Marketers, Customer Support Teams

Source: https://n8n.io/workflows/6384/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Creators, marketers, and brands that want to turn a single product photo into premium motion clips, then optionally publish to Instagram/TikTok/YouTube via LATE. No editing skills required.

Telegram, Agent Tool, Telegram Trigger +5
AI & RAG

Product to Social Video (xCodeWraith Edition). Uses telegram, agentTool, telegramTrigger, httpRequest. Event-driven trigger; 83 nodes.

Telegram, Agent Tool, Telegram Trigger +5
AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11
AI & RAG

LinkedIn URL → Scrape → Match → Screen → Decide, all automated

Google Drive, Agent, Google Drive Tool +6
AI & RAG

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Output Parser Structured, Telegram, N8N Nodes Tesseractjs +14