This workflow corresponds to n8n.io template #12357 — we link there as the canonical source.
This workflow follows the Agent → Googlegemini 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 →
{
"id": "WQ2CL6dcry5lDEWQ",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Compare products and generate visual scorecards in Telegram using BrowserAct & Nano banana",
"tags": [],
"nodes": [
{
"id": "00443c4f-7e34-4536-b5bc-e60ffeea03cf",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-1328,
496
],
"parameters": {
"autoFix": true,
"jsonSchemaExample": " {\n \"Type\": \"Comparison\", \n \"Products\": [\"Product A\", \"Product B\"], \n \"BestSite\": \"Name of the site\"\n }"
},
"typeVersion": 1.3
},
{
"id": "b2db339f-929b-448f-a4b9-216f9fe5ab36",
"name": "Validate user Input",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1456,
288
],
"parameters": {
"text": "={{ $json.message.text }}",
"options": {
"systemMessage": "You are a strict Input Classification Engine. Your sole purpose is to analyze user text and output a valid JSON object.\n\nDO NOT generate conversational text, markdown formatting, or explanations. Output ONLY the raw JSON string.\n\n### Classification Rules (Evaluated in Order of Priority)\n\n1. PRODUCT COMPARISON & BUYING ADVICE (Priority 1)\n Trigger this category if the user is asking to compare products, looking for buying advice, or asking about differences between items.\n\n Action: \n a) Extract the \"Products\" mentioned.\n b) Analyze the product type to determine the single \"BestSite\":\n - IF Physical Product (Electronics, Clothes, Home Goods) -> Use \"Amazon\".\n - IF General Service/Website (VPNs, Banks, Insurance) -> Use \"Trustpilot\".\n - IF Business Software/SaaS (CRM, Marketing Tools) -> Use \"G2\".\n - IF Video Game -> Use \"Steam\".\n\n Output Schema: \n {\n \"Type\": \"Comparison\", \n \"Products\": [\"Product A\", \"Product B\"], \n \"BestSite\": \"Name of the site\"\n }\n\n2. REGULAR CHAT (Priority 2)\n Trigger this category if the input is a greeting, small talk, or unrelated to products.\n\n Action: Return null for fields.\n Output Schema: \n {\n \"Type\": \"Chat\", \n \"Products\": [], \n \"BestSite\": null\n }\n\n### Output Constraints\n- Return valid JSON only.\n- Do not use Markdown code blocks.\n- \"BestSite\" must be a single string (e.g., \"Amazon\", \"Trustpilot\", \"G2\", or \"Steam\")."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3
},
{
"id": "4ec6c427-0614-4385-810f-c2880b16896c",
"name": "Google Gemini",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-1456,
512
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-pro"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "ad250028-1bbd-42a3-8d95-e99249866adb",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-224,
224
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "cd6c58da-d64f-4f2e-8a23-b0d80b3c4e0d",
"name": "Structured Output",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
576,
304
],
"parameters": {
"autoFix": true,
"schemaType": "manual",
"inputSchema": "{\n \"product_1\": \"Name + Summary of data (specs, pros, cons)\",\n \"product_2\": \"Name + Summary of data (specs, pros, cons)\",\n \"comparison\": \"Deep analysis of the differences. Compare materials, performance, and price. Give a final verdict on which is the better buy.\"\n}"
},
"typeVersion": 1.3
},
{
"id": "1566518d-70af-4d9f-b8a3-fb40660769a1",
"name": "Structured Output1",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1152,
304
],
"parameters": {
"autoFix": true,
"schemaType": "manual",
"inputSchema": " {\n \"telegram_caption\": \"Telegram Caption\",\n \"prompt\": \"Detailed nano banana pro Prompt\"\n}"
},
"typeVersion": 1.3
},
{
"id": "daf73d94-dbf2-499a-ab5d-a7b957bee717",
"name": "Generate Image and Description",
"type": "@n8n/n8n-nodes-langchain.agent",
"maxTries": 2,
"position": [
1024,
80
],
"parameters": {
"text": "={{ $json.output }}",
"options": {
"systemMessage": "**Role:** You are a Senior E-commerce Analyst and Prompt Engineer specializing in Nano Banana Pro (Gemini 3 Pro Image) visualization.\n\n**Input Format:** You will receive a JSON list containing product specifications and a comparison analysis.\n\n**Output Requirement:** You MUST return a single JSON object with two keys: \"Telegram Caption\" and \"Prompt\". Do not include any text outside the JSON block.\n\nOutput Example : {\n \"telegram_caption\": \"Telegram Caption\",\n \"prompt\": \"Detailed nano banana pro Prompt\"\n}\n---\n\n### KEY 1: Telegram Caption (HTML Format)\n* **API Constraints:** Use only <b>, <i>, <u>, and <a> tags. Do not use Markdown (no asterisks or backticks).\n* **Structure:**\n 1. **Headline:** A bold, catchy title using emojis related to the product category.\n 2. **Comparison List:** A clear <code>\u2022</code> bulleted list highlighting the 3-4 biggest differences (e.g., Processor, RAM, Screen Size).\n 3. **The Verdict:** A bold \"\ud83c\udfc6 WINNER\" section summarizing why the specific product won.\n 4. **Call to Action:** A short, italicized line encouraging the user to look at the infographic.\n* **Length:** Strictly under 1000 characters to fit Telegram's caption limit.\n\n---\n\n### KEY 2: Prompt (Nano Banana Pro Blueprint)\nYou must generate a \"Generative Information Architect\" prompt. Describe the image as a structural blueprint using the following specific details:\n\n* **Aspect Ratio:** Strictly specify `--aspect_ratio 16:9` (landscape) or `9:16` (portrait) based on the data density.\n* **Resolution:** Demand `4K resolution` with `sharp, high-contrast typography`.\n* **Scene Composition:**\n - **Left Side (X=0 to X=40):** A photorealistic 3D render of [Product 1] at a 45-degree angle. Define its specific color, material (e.g., Titanium, Glass), and lighting (e.g., rim lighting, soft shadows).\n - **Right Side (X=60 to X=100):** A photorealistic 3D render of [Product 2]. Define its contrasting color and finish.\n - **Center Section (X=40 to X=60):** A floating, semi-transparent \"Glassmorphism\" comparison table.\n* **The Comparison Table:**\n - Define every row clearly: [Category Name] in white bold text.\n - **Visual Logic:** Describe a \"Green Glowing Upward Arrow\" next to the superior spec and a \"Neutral Grey Bar\" or \"Red Downward Arrow\" next to the inferior spec.\n - **Labels:** Explicitly state the text for every cell (e.g., \"Row 1: 512GB vs 256GB\").\n* **Winner Cues:** Describe a \"Gold Holographic 'WINNER' Seal\" floating above the winning product and a soft \"Aura Glow\" behind it to draw the user's eye immediately.\n* **Background:** A clean, minimalist studio background with subtle geometric patterns or \"bokeh\" tech-particles to ensure the text is 100% legible.\n* Do not include html tags inside the nano banana prompt."
},
"promptType": "define",
"hasOutputParser": true
},
"retryOnFail": true,
"typeVersion": 3
},
{
"id": "522f2f93-5fb5-4124-83d0-59bdb969ffc8",
"name": "Analyze the data",
"type": "@n8n/n8n-nodes-langchain.agent",
"maxTries": 2,
"position": [
464,
80
],
"parameters": {
"text": "=Data : {{ $json.data }}\nUser Inputs : {{ $('User Sends Message to Bot').first().json.message.text }}\nyou need to compare these products only : {{ $('Validate user Input').first().json.output.Products }}",
"options": {
"systemMessage": "Role: You are an expert Product Comparison Engine. Your goal is to perform a deep, first-principles analysis of the provided products to determine the objective best choice.\n\nPhase 1: Deep Analysis (Internal Processing) Before generating output, you must analyze the input data using this 4-Step Framework. If data is missing, use your internal knowledge of the brands/standards to infer the truth.\n\nComposition: Analyze ingredients or materials. Determine which is physically built/formulated better.\n\nPerformance: Assess efficacy. Who solves the problem faster or more effectively?\n\nEconomics: Calculate True Value (Price per Unit or Cost per Use), ignoring marketing fluff.\n\nExperience: Evaluate aesthetics, ergonomics, and brand ethics.\n\nPhase 2: Output Generation Once analyzed, map your findings into the simple JSON structure below.\n\nproduct_1 / product_2: Summarize the specific pros, cons, and specs for that item.\n\ncomparison: This is the most important section. Synthesize the \"Deep Analysis\" from Phase 1 into a final verdict. Explain clearly which product wins on materials, performance, and value.\n\nOutput Rules:\n\nOutput ONLY raw JSON.\n\nDo NOT use markdown code blocks.\n\nEnsure the JSON is valid.\n\nRequired JSON Structure:\n\n\n{\n \"product_1\": \"Name + Summary of data (specs, pros, cons)\",\n \"product_2\": \"Name + Summary of data (specs, pros, cons)\",\n \"comparison\": \"Deep analysis of the differences. Compare materials, performance, and price. Give a final verdict on which is the better buy.\"\n}"
},
"promptType": "define",
"hasOutputParser": true
},
"retryOnFail": true,
"typeVersion": 3
},
{
"id": "332dfd02-bb3d-4068-932c-b8ed62e0bf97",
"name": "User Sends Message to Bot",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-1616,
288
],
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "4a404ecd-32a5-4ae5-a676-a3c9caa15dad",
"name": "Validation Type Switch",
"type": "n8n-nodes-base.switch",
"position": [
-1104,
288
],
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9e003f66-d011-459a-a313-b603c0e14551",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.output.Type }}",
"rightValue": "Comparison"
}
]
}
},
{
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2ebb24ec-bd32-4e96-a022-93d066fda17f",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.output.Type }}",
"rightValue": "Chat"
}
]
}
}
]
},
"options": {}
},
"typeVersion": 3.4
},
{
"id": "6bb18910-81a2-4b2d-8305-8e6f056b1477",
"name": "Process Initialization Alert",
"type": "n8n-nodes-base.telegram",
"position": [
-816,
80
],
"parameters": {
"text": "=Okay, I will do it. Please give me a moment.",
"chatId": "={{ $('User Sends Message to Bot').item.json.message.chat.id }}",
"additionalFields": {
"parse_mode": "HTML",
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"executeOnce": true,
"typeVersion": 1.2
},
{
"id": "1873a93f-f127-4eda-b46e-a5631ddfcbac",
"name": "Clear Database",
"type": "n8n-nodes-base.googleSheets",
"position": [
-816,
240
],
"parameters": {
"operation": "clear",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1FBDPGErD9zHgK-ihCkJreOfyZk0JB7-lLjv9H4j6Yn0/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1FBDPGErD9zHgK-ihCkJreOfyZk0JB7-lLjv9H4j6Yn0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1FBDPGErD9zHgK-ihCkJreOfyZk0JB7-lLjv9H4j6Yn0/edit?usp=drivesdk",
"cachedResultName": "Product Comparision"
},
"keepFirstRow": true
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "94fe7088-9c67-43b2-8395-81388ed156c3",
"name": "Split Out Extracted Products",
"type": "n8n-nodes-base.splitOut",
"position": [
-576,
224
],
"parameters": {
"include": "selectedOtherFields",
"options": {},
"fieldToSplitOut": "output.Products",
"fieldsToInclude": "output.BestSite"
},
"typeVersion": 1
},
{
"id": "9411da22-c1f1-4e0a-8b42-b1cca828c95e",
"name": "Search for each product's data.",
"type": "n8n-nodes-browseract.browserAct",
"position": [
0,
240
],
"parameters": {
"type": "WORKFLOW",
"timeout": 7200,
"workflowId": "69517518588721138",
"workflowConfig": {
"value": {
"input-Product": "={{ $json[\"output.Products\"] }}",
"input-Target_Site": "={{ $json[\"output.BestSite\"] }}"
},
"schema": [
{
"id": "input-Google",
"type": "string",
"display": true,
"removed": true,
"required": false,
"description": "If left blank, the default value defined in BrowserAct will be used.",
"displayName": "Google",
"defaultMatch": true
},
{
"id": "input-Product",
"type": "string",
"display": true,
"removed": false,
"required": false,
"description": "If left blank, the default value defined in BrowserAct will be used.",
"displayName": "Product",
"defaultMatch": true
},
{
"id": "input-Target_Site",
"type": "string",
"display": true,
"removed": false,
"required": false,
"description": "If left blank, the default value defined in BrowserAct will be used.",
"displayName": "Target_Site",
"defaultMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"input-Product"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"open_incognito_mode": false
},
"credentials": {
"browserActApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "1b28e259-ecde-4916-be2c-151fcd5aa75c",
"name": "Save Product Information to Database",
"type": "n8n-nodes-base.googleSheets",
"position": [
224,
336
],
"parameters": {
"columns": {
"value": {
"Product Data": "={{ $json.output.string }}"
},
"schema": [
{
"id": "Product Data",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Product Data",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Product Data"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1FBDPGErD9zHgK-ihCkJreOfyZk0JB7-lLjv9H4j6Yn0/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1FBDPGErD9zHgK-ihCkJreOfyZk0JB7-lLjv9H4j6Yn0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1FBDPGErD9zHgK-ihCkJreOfyZk0JB7-lLjv9H4j6Yn0/edit?usp=drivesdk",
"cachedResultName": "Product Comparision"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "64ccac17-c951-42cf-942a-51198b5146d6",
"name": "Google Gemini 1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-192,
736
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0694d83b-b2c2-47ea-8f6f-50f6ec2b61aa",
"name": "Google Gemini 2",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
464,
304
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "bed7fd4a-34f3-44ab-962b-54fcec479dfe",
"name": "Google Gemini 3",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1024,
304
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "13d65a2e-62c2-4698-b84a-bda899ba5de3",
"name": "Retrieve Data from Database",
"type": "n8n-nodes-base.googleSheets",
"position": [
16,
80
],
"parameters": {
"options": {
"dataLocationOnSheet": {
"values": {
"rangeDefinition": "specifyRange"
}
}
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1FBDPGErD9zHgK-ihCkJreOfyZk0JB7-lLjv9H4j6Yn0/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1FBDPGErD9zHgK-ihCkJreOfyZk0JB7-lLjv9H4j6Yn0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1FBDPGErD9zHgK-ihCkJreOfyZk0JB7-lLjv9H4j6Yn0/edit?usp=drivesdk",
"cachedResultName": "Product Comparision"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "3681e438-0944-424d-8e9b-622f23d35d57",
"name": "Aggregate Google Sheet Data",
"type": "n8n-nodes-base.aggregate",
"position": [
240,
80
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "bf026895-2448-4fd6-864e-43071ba9bea3",
"name": "Generate Comparison Image",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
1424,
80
],
"parameters": {
"prompt": "={{ $json.output.prompt }}",
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-3-pro-image-preview",
"cachedResultName": "models/gemini-3-pro-image-preview (Nano Banana Pro)"
},
"options": {
"binaryPropertyOutput": "data"
},
"resource": "image"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "89057c4b-00fc-4089-ba53-9ddf3818200a",
"name": "Send Photo Message to Bot",
"type": "n8n-nodes-base.telegram",
"position": [
1680,
80
],
"parameters": {
"chatId": "={{ $('User Sends Message to Bot').first().json.message.chat.id }}",
"operation": "sendPhoto",
"binaryData": true,
"additionalFields": {
"caption": "={{ $('Generate Image and Description').first().json.output[\"telegram_caption\"] }}",
"parse_mode": "HTML"
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "49ed8e71-6ec2-4c4d-bd0f-b9cea48ddeab",
"name": "Answer the User",
"type": "n8n-nodes-base.telegram",
"position": [
160,
592
],
"parameters": {
"text": "={{ $json.output }}",
"chatId": "={{ $('User Sends Message to Bot').item.json.message.chat.id }}",
"additionalFields": {
"parse_mode": "HTML",
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "2106e30c-c2f5-4b90-bcbb-a1b45559bf19",
"name": "Conversational AI",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-192,
592
],
"parameters": {
"text": "=Input type : {{ $json.output.Type }} | User Input : {{ $('User Sends Message to Bot').item.json.message.text }}",
"options": {
"systemMessage": "if the input type is chat, analyze the user input and generate single response based on the User Input.\nsend the result out as a raw text.\navoid using any tags or notations like ```text ```"
},
"promptType": "define"
},
"typeVersion": 3
},
{
"id": "8a4ac95b-86a4-4ff0-915a-40b55963594e",
"name": "Documentation",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2016,
-480
],
"parameters": {
"width": 380,
"height": 520,
"content": "## \u26a1 Workflow Overview & Setup\n\n**Summary:** This automation takes a user request to compare two products (via Telegram), scrapes their details using BrowserAct, performs a deep AI analysis, and generates a visual \"Winner Scorecard\" image using the Nano Banana Pro model.\n\n### Requirements\n* **Credentials:** Telegram, BrowserAct, Google Gemini (PaLM), Google Sheets.\n* **Mandatory:** BrowserAct API (Template: **Product Comparison & Visualize Bo**)\n\n### How to Use\n1. **Credentials:** Set up your Telegram, BrowserAct, and AI model credentials in n8n.\n2. **BrowserAct Template:** Ensure you have the **Product Comparison & Visualize Bo** template saved in your BrowserAct account.\n3. **Operation:** Send a message like \"Compare iPhone 15 vs Galaxy S24\" to your Telegram bot. The system will research, analyze, and generate a visual comparison.\n\n### Need Help?\n[How to Find Your BrowserAct API Key & Workflow ID](https://docs.browseract.com)\n[How to Connect n8n to BrowserAct](https://docs.browseract.com)\n[How to Use & Customize BrowserAct Templates](https://docs.browseract.com)"
},
"typeVersion": 1
},
{
"id": "8389c787-624b-44fa-a5fa-77cd328b8498",
"name": "Step 1 Explanation",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1616,
-80
],
"parameters": {
"color": 7,
"width": 1116,
"height": 124,
"content": "### \ud83d\udd0d Step 1: Intent Analysis\n\nThe workflow intercepts Telegram messages to identify product comparison requests. An AI agent classifies the input and determines the best source (e.g., Amazon, G2, Trustpilot) to fetch data from based on the product type (Physical, Software, Service)."
},
"typeVersion": 1
},
{
"id": "55a60255-774b-43cc-9792-a9b4e2a0fbe5",
"name": "Step 2 Explanation",
"type": "n8n-nodes-base.stickyNote",
"position": [
-272,
-96
],
"parameters": {
"color": 7,
"width": 1036,
"height": 124,
"content": "### \ud83d\udcca Step 2: Data Extraction & Analysis\n\nBrowserAct scrapes detailed specs and reviews for both products. A specialized \"Comparison Engine\" AI then analyzes this data across four dimensions: Composition, Performance, Economics, and Experience to determine an objective winner."
},
"typeVersion": 1
},
{
"id": "6f264315-f5b1-4d2e-8599-ef250580e4da",
"name": "Step 3 Explanation",
"type": "n8n-nodes-base.stickyNote",
"position": [
944,
-96
],
"parameters": {
"color": 7,
"width": 908,
"height": 124,
"content": "### \ud83c\udfa8 Step 3: Visual Scorecard Generation\n\nUsing the analysis results, a \"Generative Information Architect\" AI creates a detailed image prompt. This prompt instructs the Nano Banana Pro model to render a high-fidelity, 4K comparison infographic, complete with a \"Winner\" seal and visual spec breakdown."
},
"typeVersion": 1
},
{
"id": "852d8780-88fe-4d61-94c7-f5e508b83cfc",
"name": "Step 4 Explanation",
"type": "n8n-nodes-base.stickyNote",
"position": [
-208,
864
],
"parameters": {
"color": 7,
"width": 580,
"height": 104,
"content": "### \ud83d\udcac Step 2-2: Conversational Fallback\n\nThis branch engages the user in natural conversation and chats with them if needed."
},
"typeVersion": 1
},
{
"id": "a7a137d4-dbd4-4f87-ad83-7031bab5c8bf",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1616,
-480
],
"parameters": {
"color": 6,
"width": 672,
"height": 384,
"content": "@[youtube](MCKLEF0m9ps)"
},
"typeVersion": 1
},
{
"id": "8b1e067d-605d-464c-8977-256f81969f35",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
176,
224
],
"parameters": {
"color": 3,
"width": 224,
"height": 272,
"content": "### \ud83d\udcca Sheet Processing Requirements\n\n**File Name:** `Product Comparision`\n**Target Column:** `Product Data` (Cell A1)"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "8998809d-e5b7-4e34-8f46-b6a2e9a764be",
"connections": {
"Google Gemini": {
"ai_languageModel": [
[
{
"node": "Validate user Input",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Structured Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Clear Database": {
"main": [
[
{
"node": "Split Out Extracted Products",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini 1": {
"ai_languageModel": [
[
{
"node": "Conversational AI",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Google Gemini 2": {
"ai_languageModel": [
[
{
"node": "Analyze the data",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Structured Output",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Google Gemini 3": {
"ai_languageModel": [
[
{
"node": "Generate Image and Description",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Structured Output1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[
{
"node": "Retrieve Data from Database",
"type": "main",
"index": 0
}
],
[
{
"node": "Search for each product's data.",
"type": "main",
"index": 0
}
]
]
},
"Analyze the data": {
"main": [
[
{
"node": "Generate Image and Description",
"type": "main",
"index": 0
}
]
]
},
"Conversational AI": {
"main": [
[
{
"node": "Answer the User",
"type": "main",
"index": 0
}
]
]
},
"Structured Output": {
"ai_outputParser": [
[
{
"node": "Analyze the data",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output1": {
"ai_outputParser": [
[
{
"node": "Generate Image and Description",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Validate user Input": {
"main": [
[
{
"node": "Validation Type Switch",
"type": "main",
"index": 0
}
]
]
},
"Validation Type Switch": {
"main": [
[
{
"node": "Process Initialization Alert",
"type": "main",
"index": 0
},
{
"node": "Clear Database",
"type": "main",
"index": 0
}
],
[
{
"node": "Conversational AI",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Validate user Input",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Generate Comparison Image": {
"main": [
[
{
"node": "Send Photo Message to Bot",
"type": "main",
"index": 0
}
]
]
},
"User Sends Message to Bot": {
"main": [
[
{
"node": "Validate user Input",
"type": "main",
"index": 0
}
]
]
},
"Aggregate Google Sheet Data": {
"main": [
[
{
"node": "Analyze the data",
"type": "main",
"index": 0
}
]
]
},
"Retrieve Data from Database": {
"main": [
[
{
"node": "Aggregate Google Sheet Data",
"type": "main",
"index": 0
}
]
]
},
"Split Out Extracted Products": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Generate Image and Description": {
"main": [
[
{
"node": "Generate Comparison Image",
"type": "main",
"index": 0
}
]
]
},
"Search for each product's data.": {
"main": [
[
{
"node": "Save Product Information to Database",
"type": "main",
"index": 0
}
]
]
},
"Save Product Information to Database": {
"main": [
[
{
"node": "Loop Over Items",
"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.
browserActApigooglePalmApigoogleSheetsOAuth2ApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow acts as an expert shopping assistant that analyzes product comparisons from first principles and generates a high-quality visual infographic with the verdict. Instead of reading endless reviews, simply ask the bot (e.g., "iPhone 15 vs S24"), and it will scrape…
Source: https://n8n.io/workflows/12357/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This project is a template for building a complete academic virtual assistant using n8n. It connects to Telegram, answers frequently asked questions by querying MongoDB, keeps the community informed a
This workflow transforms your Telegram bot into an intelligent creative assistant. It can chat conversationally, fetch trending image prompts from PromptHero for inspiration, or perform a deep "remix"
> AI-powered nutrition assistant for Telegram — log meals, set goals, and get personalized daily reports with Google Sheets integration.
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.
LinkedIn URL → Scrape → Match → Screen → Decide, all automated