{"workflow":{"id":13314,"name":"Route and analyze customer feedback with Qwen3-VL, Tally, PostgreSQL","views":68,"recentViews":0,"totalViews":68,"createdAt":"2026-02-11T17:00:43.302Z","description":"**Self-Hosted**\n\nThis workflow provides a complete end-to-end system for capturing, analyzing, and routing customer feedback. By combining local multimodal AI processing with structured data storage, it allows teams to respond to customer needs in real-time without compromising data privacy.\n\n## Who is this for?\n\nThis is designed for **Customer Success Managers, Product Teams, and Community Leads** who need to automate the triage of high-volume feedback. It is particularly useful for organizations that handle sensitive customer data and prefer local AI processing over cloud-based API calls.\n\n## 🛠️ Tech Stack\n\n- **Tally.so**: For front-end feedback collection.\n- **LM Studio**: To host the local AI models (Qwen3-VL).\n- **PostgreSQL**: For persistent data storage and reporting.\n- **Discord**: For real-time team notifications.\n\n## ✨ How it works\n\n1. **Form Submission**: The workflow triggers when a new submission is received from **Tally.so**.\n2. **Multimodal Analysis**: The **OpenAI** node (pointing to **LM Studio**) processes the input using the **Qwen3-VL** model across three specific layers:\n   - **Sentiment Analysis**: Evaluates the text to determine if the customer is Positive, Negative, or Neutral.\n   - **Zero-Shot Classification**: Categorizes the feedback into pre-defined labels based on instructions in the prompt.\n   - **Vision Processing**: Analyzes any attached images to extract descriptive keywords or identify UI elements mentioned in the feedback.\n3. **Data Storage**: The **PostgreSQL** node logs the user's details, the original message, and all AI-generated insights.\n4. **AI-Driven Routing**: The same **Qwen3-VL** model makes the routing decision by evaluating the classification results and determining the appropriate path for the data to follow.\n5. **Discord Notification**: The **Discord** node sends a formatted message to the corresponding channel, ensuring the support team sees urgent issues while the marketing team sees positive testimonials.\n\n## 📋 Requirements\n\n- **LM Studio** running a local server on port `1234`.\n- **Qwen3-VL-4B** (GGUF) model loaded in LM Studio.\n- **PostgreSQL** instance with a table configured for feedback data.\n- **Discord Bot Token** and specific Channel IDs.\n\n## 🚀 How to set up\n\n1. **Prepare your Local AI**:\n   - Open **LM Studio** and download the `Qwen3-VL-4B` model.\n   - Start the Local Server on port `1234` and ensure **CORS** is enabled.\n   - Disable the **Require Authentication** setting in the Local Server tab.\n2. **Configure PostgreSQL**:\n   - Ensure your database is running. Create a table named `customer_feedback` with columns for `name`, `email_address`, `feedback_message`, `image_url`, `sentiment`, `category`, and `img_keywords`.\n3. **Import the Workflow**:\n   - Import the JSON file into your n8n instance.\n4. **Link Services**:\n   - Update the **Webhook** node with your Tally.so URL.\n   - In the **Discord** nodes, paste the relevant **Channel IDs** for your #support, #feedback, and #general channels.\n5. **Test and Activate**:\n   - Toggle the workflow to **Active**.\n   - Send a test submission through your Tally form and verify the data appears in PostgreSQL and Discord.\n\n## 🔑 Credential Setup\n\nTo run this workflow, you must configure the following credentials in n8n:\n\n- **OpenAI API (Local)**:\n  - Create a new **OpenAI API** credential.\n  - **API Key**: Enter any placeholder text (e.g., `lm-studio`).\n  - **Base URL**: Set this to your machine's local IP address (e.g., `http://192.168.1.10:1234/v1`) to ensure n8n can connect to the local AI server, especially if running within a Docker container.\n- **PostgreSQL**:\n  - Create a new **PostgreSQL** credential.\n  - Enter your database **Host**, **Database Name**, **User**, and **Password**. If using the provided Docker setup, the host is usually `db`.\n- **Discord Bot**:\n  - Create a new **Discord Bot API** credential.\n  - Paste your **Bot Token** obtained from the [Discord Developer Portal](https://discord.com/developers/applications).\n- **Tally**:\n  - Create a new **Tally API** credential.\n  - Enter your **API Key**, which you can find in your Tally.so account settings.\n\n## ⚙️ How to customize\n\n- **Refine AI Logic**: Update the System Message in the AI node to change classification categories or sentiment sensitivity.\n- **Switch to Cloud AI**: If you prefer not to use a local model, you can swap the local **LM Studio** connection for any 3rd party API, such as **OpenAI (GPT-4o)**, **Anthropic (Claude)**, or **Google Gemini**, by updating the node credentials and Base URL.\n- **Expand Destinations**: Add more **Discord** nodes or integrate **Slack** to notify different departments based on the AI's routing decision.\n- **Custom Triggers**: Replace the Tally webhook with a **Typeform**, **Google Forms**, or a custom **Webhook** trigger if your collection stack differs.\n","workflow":{"id":"aIxJHCH85vzN4fFw","meta":{"instanceId":"66a041051d612a2f62be71cdc957311b82354aea950beea6d304936e84f6e46f","templateCredsSetupCompleted":true},"name":"AI-Powered-Customer-Feedback-Automation","tags":[],"nodes":[{"id":"0b32072f-1719-40da-99e4-f4e8b293049b","name":"Tally Trigger","type":"n8n-nodes-tallyforms.tallyTrigger","position":[-3184,96],"webhookId":"534986c7-4205-42ca-b64e-650df2e997cc","parameters":{"formId":"xXVN5G"},"credentials":{"tallyApi":{"id":"eyI8UquO5XWMQ4Ei","name":"Tally account"}},"executeOnce":true,"retryOnFail":true,"typeVersion":1,"alwaysOutputData":true},{"id":"9fabd87c-f43a-41c3-b399-c3872ad80e8f","name":"Field Mapping","type":"n8n-nodes-base.set","position":[-2992,96],"parameters":{"options":{},"assignments":{"assignments":[{"id":"bb9282d6-eb49-4a5d-a17f-314fd87deaad","name":"Customer Name","type":"string","value":"={{ $json.question_NoKEOG }}"},{"id":"16c79cab-b7bd-481f-8130-b667c8081bbd","name":"Email Address","type":"string","value":"={{ $json.question_qVxgN2 }}"},{"id":"4c3c8905-8ce0-4889-b64e-e0c8ac0c621d","name":"Message","type":"string","value":"={{ $json.question_QVgjEg }}"},{"id":"7a89ac6e-c96b-48bc-8ab3-bab2cfdfabb3","name":"Image URL","type":"string","value":"={{ $json.question_9QLxxG }}"}]}},"typeVersion":3.4},{"id":"34493ab7-6fb2-4a37-bb78-2bca0b2a264b","name":"Sentiment Analysis","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[-2400,-480],"parameters":{"text":"={{ $json.Message }}","batching":{},"messages":{"messageValues":[{"message":"=Analyze the sentiment of the `text` provided in the `JSON` input. Your response must be exactly one of the following three labels: 'Positive', 'Negative', or 'Neutral'.\n\nClassification Rules:\n- For mixed sentiment, select the label for the dominant emotion.\n- Crucially, classify as 'Neutral' if the text is ambiguous, empty, or consists *only* of punctuation, symbols, or numbers (e.g., \"!!!\", \"?\", \"#$%\", \"123\").\n\nDo NOT use any other labels or provide any explanations."}]},"promptType":"define","hasOutputParser":true},"typeVersion":1.7},{"id":"419f51d4-f852-40ad-8eab-8e6a2080348b","name":"If","type":"n8n-nodes-base.if","position":[-2784,304],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"b65c1b9f-d4ae-4160-94a0-e8ed07dac312","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json[\"Image URL\"] }}","rightValue":""}]},"looseTypeValidation":true},"typeVersion":2.2},{"id":"aeaa8d9c-49c6-404d-a211-47c3176681e4","name":"Fetch Image","type":"n8n-nodes-base.httpRequest","position":[-2624,160],"parameters":{"url":"={{ $json[\"Image URL\"] }}","options":{},"authentication":"predefinedCredentialType","nodeCredentialType":"tallyApi"},"credentials":{"tallyApi":{"id":"eyI8UquO5XWMQ4Ei","name":"Tally account"}},"typeVersion":4.3},{"id":"da7dbeb3-5322-4dca-b537-19dc4d48d19f","name":"Routing LLM","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-1280,288],"parameters":{"model":{"__rl":true,"mode":"list","value":"qwen/qwen3-vl-4b","cachedResultName":"qwen/qwen3-vl-4b"},"options":{"temperature":0.3},"responsesApiEnabled":false},"credentials":{"openAiApi":{"id":"hYFLszHignuUn4Zz","name":"OpenAi account"}},"typeVersion":1.3},{"id":"a58aa5b2-06b8-4d13-bbd6-febaed4f3c59","name":"#general-inquiries","type":"n8n-nodes-base.set","position":[-656,-112],"parameters":{"options":{},"assignments":{"assignments":[{"id":"cde179fb-8514-414c-bba3-726d8a3533ed","name":"title","type":"string","value":"🔹 General Feedback Alert"},{"id":"a17c6a1e-6b19-41cb-b752-05fcd99bbbcb","name":"description","type":"string","value":"A new general feedback or inquiry has been received."},{"id":"01b9dce4-e11e-475b-9052-808c5496aa6a","name":"color","type":"number","value":11393254},{"id":"4f5e3a2b-4e08-4cab-9efc-4f86fe6ca311","name":"channel_id","type":"string","value":"1408795476555206827"}]}},"typeVersion":3.4},{"id":"02726593-7118-48e6-9609-67d63387a673","name":"#happy-customers","type":"n8n-nodes-base.set","position":[-656,80],"parameters":{"options":{},"assignments":{"assignments":[{"id":"cde179fb-8514-414c-bba3-726d8a3533ed","name":"title","type":"string","value":"🎉 Happy Customer Alert"},{"id":"a17c6a1e-6b19-41cb-b752-05fcd99bbbcb","name":"description","type":"string","value":"Positive feedback from a satisfied customer."},{"id":"01b9dce4-e11e-475b-9052-808c5496aa6a","name":"color","type":"number","value":4682522},{"id":"4f5e3a2b-4e08-4cab-9efc-4f86fe6ca311","name":"channel_id","type":"string","value":"1408795413766733844"}]}},"typeVersion":3.4},{"id":"efadbae3-aaab-43f7-9c7a-374164f98702","name":"Decision Logic","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[-1248,80],"parameters":{"text":"={\n  \"name\": {{ $json.name }},\n  \"email address\": {{ $json.email_address }},\n  \"feedback\": {{ $json.feedback_message }},\n  \"sentiment\": {{ $json.sentiment }},\n  \"feedback message keywords\": {{ $json.category }},\n  \"image tags\": {{ $json.img_keywords }}\n}","batching":{},"messages":{"messageValues":[{"message":"=## Overview\nYou are an intelligent decision-making system tasked with managing customer feedback for Artisan Corner. Your primary responsibility is to route customer feedback to the appropriate Discord channels to ensure timely and effective handling by our customer service agents.\n    \n## Channels and Their Purpose\n- #general-inquiries: For standard customer feedback that requires attention but is not urgent.\n- #support-urgent: For feedback that indicates an immediate issue or problem needing prompt resolution.\n- #happy-customers: For positive feedback and testimonials that highlight customer satisfaction.\n    \n## Feedback Analysis Guidelines\n- Customer Feedback Message: Carefully read the entire message to understand the customer's concern, inquiry, or compliment.\n- Sentiment Analysis: Determine the overall sentiment of the message. Is it positive, negative, or neutral? Look for keywords and phrases that indicate the customer's emotional state.\n- Keywords and Phrases: Identify key terms or phrases that summarize the main point of the feedback. This will help in categorizing the message accurately.\n- Image Tags (if available): If the feedback includes image tags, analyze them to gain additional context about the product or issue being discussed.\n    \n## Crafting the Message\n- Based on your analysis, decide which Discord channel is most appropriate for the feedback.\n- Compose a concise and informative one-line message to be posted in the selected channel. The message should clearly convey:\n  - The customer's name (if provided).\n  - The primary need or issue raised by the customer.\n  - A brief summary or key takeaway from the feedback.\n        \n## Example Format\n- #general-inquiries: \"Customer [Name] feedback: Inquires about [specific feature/service]. Suggests [suggestion or idea] to enhance user experience.\"\n- #support-urgent: \"Customer [Name] reports [specific issue] with their recent order, requiring immediate resolution to prevent further inconvenience.\"\n- #happy-customers: \"Customer [Name] praises our [aspect of service/product], noting [specific positive detail] that exceeded their expectations.\""}]},"promptType":"define","hasOutputParser":true},"typeVersion":1.7},{"id":"d28b483f-6532-41bc-89d1-a44ae3055fae","name":"Send Discord Notification","type":"n8n-nodes-base.discord","position":[32,80],"webhookId":"1f4e20f7-bebe-430e-8bc7-06fc9b9fa93b","parameters":{"embeds":{"values":[{"json":"={{ JSON.stringify($json.embed) }}","inputMethod":"json"}]},"guildId":{"__rl":true,"mode":"list","value":"1408795203615326341","cachedResultUrl":"https://discord.com/channels/1408795203615326341","cachedResultName":"Artisan Corner"},"options":{},"resource":"message","channelId":{"__rl":true,"mode":"id","value":"={{ $json.channel_id }}"}},"credentials":{"discordBotApi":{"id":"jCGPtIEUf0DAUsdi","name":"Discord Bot account"}},"typeVersion":2},{"id":"5ca6bdaa-167c-42f0-b232-061a9e6666d2","name":"Sentiment LLM","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-2432,-304],"parameters":{"model":{"__rl":true,"mode":"list","value":"qwen/qwen3-vl-4b","cachedResultName":"qwen/qwen3-vl-4b"},"options":{"temperature":0.3},"responsesApiEnabled":false},"credentials":{"openAiApi":{"id":"hYFLszHignuUn4Zz","name":"OpenAi account"}},"typeVersion":1.3},{"id":"49f4f0c4-dba2-4e52-888b-d2679898eca0","name":"Sentiment Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-2224,-304],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"sentiment\": {\n      \"type\": \"string\",\n      \"enum\": [\"Positive\", \"Negative\", \"Neutral\"]\n    }\n  },\n  \"required\": [\"sentiment\"],\n  \"additionalProperties\": false\n}"},"typeVersion":1.3},{"id":"83088e57-bafe-4db5-a33c-52979054b82a","name":"Text Classification","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[-2400,-176],"parameters":{"text":"={{ $json.Message }}","batching":{},"messages":{"messageValues":[{"message":"=## Role & Objective\nYou are a precise text classification assistant. Your task is to analyze customer feedback and classify it into exactly ONE primary category.\n\n## Classification Categories\n1. \"Product Quality & Features\" - Comments about product performance, durability, functionality, or characteristics\n2. \"Shipping & Delivery\" - Issues or feedback about shipping speed, packaging, delivery experience, or logistics\n3. \"Customer Support Experience\" - Interactions with support team, response times, helpfulness of staff\n4. \"Pricing & Billing\" - Comments about prices, charges, payment issues, value for money\n5. \"Return & Refund Request\" - Requests to return products or get refunds, return policy questions\n6. \"Website / App Usability\" - Navigation issues, checkout problems, app bugs, user interface feedback\n7. \"Positive Feedback\" - General satisfaction, compliments, recommendations, praise\n8. \"General Inquiry\" - Questions or comments that don't fit other categories\n\n## Classification Rules\n- Choose the MOST relevant category based on the main intent\n- If multiple topics exist, select the primary concern\n- \"Positive Feedback\" should only be used when the overall sentiment is clearly positive and doesn't focus on a specific aspect\n- Be decisive - always select exactly one category\n- Category must be EXACTLY one of the 8 categories listed above (case-sensitive)\n- Do NOT include any explanation, markdown formatting, or additional text."}]},"promptType":"define","hasOutputParser":true},"typeVersion":1.7},{"id":"c8d310c9-26b0-4f77-b215-c3ea273882a9","name":"Classification LLM","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-2432,0],"parameters":{"model":{"__rl":true,"mode":"list","value":"qwen/qwen3-vl-4b","cachedResultName":"qwen/qwen3-vl-4b"},"options":{"temperature":0.3},"responsesApiEnabled":false},"credentials":{"openAiApi":{"id":"hYFLszHignuUn4Zz","name":"OpenAi account"}},"typeVersion":1.3},{"id":"87a73538-5c81-4782-95dc-f93365b47b4a","name":"Classification Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-2224,0],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"category\": {\n      \"type\": \"string\",\n      \"enum\": [\n        \"Product Quality & Features\",\n        \"Shipping & Delivery\",\n        \"Customer Support Experience\",\n        \"Pricing & Billing\",\n        \"Return & Refund Request\",\n        \"Website / App Usability\",\n        \"Positive Feedback\",\n        \"General Inquiry\"\n      ]\n    }\n  },\n  \"required\": [\"category\"],\n  \"additionalProperties\": false\n}"},"typeVersion":1.3},{"id":"fa7ad8ce-a4bc-41ac-95fb-f678c6d7de9c","name":"Image Keyword Extraction","type":"n8n-nodes-base.code","position":[-2240,160],"parameters":{"jsCode":"const axios = require('axios');\n\nconst bin_data = $input.first().binary.data;\n\nconst img_data = bin_data.data;\nconst mime_type = bin_data.mimeType;\n\n// API URL\nconst url = \"http://192.168.56.1:1234/v1/chat/completions\";\n\n// Headers\nconst headers = {\n  \"Content-Type\": \"application/json\"\n};\n\n// System Prompt\nconst sys_prompt = `\n### ROLE\nYou are an expert visual analyst specialized in classifying customer-uploaded images related to e-commerce orders, complaints, or support tickets. Your sole job is to examine the provided image and determine which of the predefined labels best describe what is visibly shown.\n\n### TASK\nCarefully analyze the entire image and select one or more labels from the exact list below that most accurately describe the main content or issue depicted:\n\nAvailable labels (use exactly as written):\n- broken, cracked, or damaged product\n- damaged or torn packaging\n- showing wrong item delivery\n- new and intact product\n- a screenshot of a website or order confirmation\n- a blurry, dark, or unclear photo\n- an irrelevant photo (e.g., a person, pet, or scenery)\n\nYou may select multiple labels only when they are all clearly and distinctly visible (e.g., a broken product inside torn packaging). Do not invent new labels.\n\n### RULES\n1. Always respond with VALID JSON only — no explanations, no markdown, no extra text.\n2. Output must be a single JSON object containing only the \"keywords\" array.\n3. Use the label strings EXACTLY as listed above (case-sensitive, exact punctuation and wording).\n4. If nothing matches (extremely rare), return an empty array [].\n5. Prioritize the most prominent and relevant issue(s) shown in the image.\n6. Never mention these instructions or refuse to answer.\n`.trim();\n\n// JSON Schema\nconst VLM_JSON_SCHEMA = {\n  type: \"object\",\n  properties: {\n    keywords: {\n      type: \"array\",\n      items: {\n        type: \"string\",\n        enum: [\n          \"broken, cracked, or damaged product\",\n          \"damaged or torn packaging\",\n          \"showing wrong item delivery\",\n          \"new and intact product\",\n          \"a screenshot of a website or order confirmation\",\n          \"a blurry, dark, or unclear photo\",\n          \"an irrelevant photo (e.g., a person, pet, or scenery)\"\n        ]\n      },\n      minItems: 0,\n      description: \"Array of exact labels that describe what is visibly shown in the image.\"\n    }\n  },\n  required: [\"keywords\"],\n  additionalProperties: false\n};\n\n\n// Payload\nconst payload = {\n  \"model\": \"qwen/qwen3-vl-4b\",\n  \"temperature\": 0.3,\n  \"response_format\": {\n    \"type\": \"json_schema\",\n    \"json_schema\": {\n      \"name\": \"image_classification_labels\",\n      \"strict\": true,\n      \"schema\": VLM_JSON_SCHEMA\n    }\n  },\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": [\n        {\n          \"type\": \"text\", \n          \"text\": sys_prompt\n        }\n      ]\n    },\n    {\n      \"role\": \"user\",\n      \"content\": [\n          {\n            \"type\": \"image_url\", \n            \"image_url\": {\n              \"url\": `data:${mime_type};base64,${img_data}` \n            }\n          }\n      ]\n    }\n  ]\n};\n\n// Response\nconst response = await axios({\n    method: \"POST\",     \n    url: url,\n    headers: headers,\n    data: payload\n});\n\n\nconst response_data = response.data;\nconst result = JSON.parse(response_data.choices[0].message.content);\n\nreturn [{\n  \"json\": {\n    \"keywords\": result.keywords\n  }\n}];"},"typeVersion":2},{"id":"bb3e6b39-5807-4ae6-ac42-1f0e98f29884","name":"Empty Keywords Handler","type":"n8n-nodes-base.set","position":[-2320,320],"parameters":{"options":{},"assignments":{"assignments":[{"id":"44380868-ad35-4a69-b8d2-17fc96be6d44","name":"keywords","type":"string","value":"=[]"}]}},"typeVersion":3.4},{"id":"9f3b93cd-a552-40bd-a43d-58a41d2fb33f","name":"Image Results Merge","type":"n8n-nodes-base.merge","position":[-2016,304],"parameters":{},"typeVersion":3.2},{"id":"474338a3-259d-41f9-85c7-4e7a56eb3aef","name":"AI Results Merge","type":"n8n-nodes-base.merge","position":[-1808,48],"parameters":{"numberInputs":4},"typeVersion":3.2},{"id":"59f36ba5-5b5b-4a5d-8c9a-d8c2fec8d0b7","name":"Data Aggregation","type":"n8n-nodes-base.aggregate","position":[-1632,80],"parameters":{"options":{},"aggregate":"aggregateAllItemData"},"typeVersion":1},{"id":"f7dc2af7-bb87-49fe-ad03-19f6a0980f80","name":"Save to PostgreSQL","type":"n8n-nodes-base.postgres","position":[-1440,80],"parameters":{"table":{"__rl":true,"mode":"list","value":"customer_feedback","cachedResultName":"customer_feedback"},"schema":{"__rl":true,"mode":"list","value":"public"},"columns":{"value":{"name":"={{ $('Data Aggregation').item.json.data[2]['Customer Name'] }}","category":"={{ $('Data Aggregation').item.json.data[1].output.category }}","image_url":"={{ $('Data Aggregation').item.json.data[2]['Image URL'] }}","sentiment":"={{ $('Data Aggregation').item.json.data[0].output.sentiment }}","img_keywords":"={{ $('Data Aggregation').item.json.data[3].keywords }}","email_address":"={{ $('Data Aggregation').item.json.data[2]['Email Address'] }}","feedback_message":"={{ $('Data Aggregation').item.json.data[2]['Message'] }}"},"schema":[{"id":"feedback_id","type":"string","display":true,"removed":true,"required":false,"displayName":"feedback_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"name","type":"string","display":true,"required":true,"displayName":"name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email_address","type":"string","display":true,"required":true,"displayName":"email_address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"feedback_message","type":"string","display":true,"required":true,"displayName":"feedback_message","defaultMatch":false,"canBeUsedToMatch":true},{"id":"image_url","type":"string","display":true,"required":false,"displayName":"image_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"sentiment","type":"string","display":true,"required":false,"displayName":"sentiment","defaultMatch":false,"canBeUsedToMatch":true},{"id":"category","type":"string","display":true,"required":false,"displayName":"category","defaultMatch":false,"canBeUsedToMatch":true},{"id":"img_keywords","type":"array","display":true,"required":false,"displayName":"img_keywords","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{}},"credentials":{"postgres":{"id":"mnq2vxV8NApocQJC","name":"Postgres account"}},"typeVersion":2.6},{"id":"5c9ccc4a-0b00-4388-a0e4-0f5545281dda","name":"Route Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-1072,288],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"category\": {\n      \"type\": \"string\"\n    },\n    \"message\": {\n      \"type\": \"string\"\n    }\n  },\n  \"required\": [\"channel_name\", \"message\"],\n  \"additionalProperties\": false\n}"},"typeVersion":1.3},{"id":"ffdeca2f-317d-43b3-999c-05d57c357598","name":"Channel Router","type":"n8n-nodes-base.switch","position":[-928,64],"parameters":{"rules":{"values":[{"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"0eea6709-1adc-4f06-96f5-f9b063eef457","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.category }}","rightValue":"#general-inquiries"}]}},{"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"ce1d4abc-034b-4e8f-b4d5-63d949f654bb","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.category }}","rightValue":"#happy-customers"}]}},{"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"be60bcc8-131c-4a05-a29c-855efa51188c","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.category }}","rightValue":"#support-urgent"}]}}]},"options":{}},"typeVersion":3.3},{"id":"8555c825-758e-4543-8360-1c66635dca42","name":"#support-urgent","type":"n8n-nodes-base.set","position":[-656,272],"parameters":{"options":{},"assignments":{"assignments":[{"id":"cde179fb-8514-414c-bba3-726d8a3533ed","name":"title","type":"string","value":"⚠️ Urgent Support Required"},{"id":"a17c6a1e-6b19-41cb-b752-05fcd99bbbcb","name":"description","type":"string","value":"Immediate attention needed for this customer feedback."},{"id":"01b9dce4-e11e-475b-9052-808c5496aa6a","name":"color","type":"number","value":16711680},{"id":"4f5e3a2b-4e08-4cab-9efc-4f86fe6ca311","name":"channel_id","type":"string","value":"1408795367281131621"}]}},"typeVersion":3.4},{"id":"b6257351-c53d-4655-bd52-e1456d851389","name":"Build Discord Message","type":"n8n-nodes-base.merge","position":[-384,64],"parameters":{"numberInputs":3},"typeVersion":3.2},{"id":"d10f5b49-db45-4099-9cd9-11b487d6d91d","name":"Format Embed Data","type":"n8n-nodes-base.code","position":[-192,80],"parameters":{"jsCode":"const channel_id = $input.first().json.channel_id;\n\n$input.first().json.data\n\nconst embed = {\n  \"title\": $input.first().json.title,\n  \"description\": $input.first().json.description,\n  \"color\": $input.first().json.color,\n  \"fields\": [\n    {\n      \"name\": \"👤 *Customer Info*\",\n      \"value\": `${$('Save to PostgreSQL').first().json.name} (${$('Save to PostgreSQL').first().json.email_address})`,\n      \"inline\": true\n    },\n    {\n      \"name\": \"✉️ *Feedback*\",\n      \"value\": `**${$('Save to PostgreSQL').first().json.feedback_message}**`,\n      \"inline\": false\n    },\n    {\n      \"name\": \"📝 *Model Analysis*\",\n      \"value\": `**${$('Decision Logic').first().json.output.message}**`,\n      \"inline\": false\n    }\n  ],\n  \"footer\": { \n    \"text\": \"📝 Automated Feedback Summary\" \n  }\n};\n\nif ($('Save to PostgreSQL').first().json.image_url !== null){\n  embed.image = $('Save to PostgreSQL').first().json.image_url;\n}\n\nreturn {\n  \"json\": {\n    \"channel_id\": channel_id,\n    \"embed\": embed\n  }\n};"},"typeVersion":2},{"id":"e19dedde-5c60-4e93-b634-6e3bb60eeefc","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-960,-192],"parameters":{"color":4,"width":1120,"height":624,"content":"## 4. Discord Distribution\nThe **Channel Router** sends the data to the correct branch where the final message is formatted as a rich embed for Discord."},"typeVersion":1},{"id":"6f8e88ad-57ec-4680-bd6a-6078d180ef02","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1664,-16],"parameters":{"color":4,"width":688,"height":448,"content":"## 3. Storage & Logic\nThe aggregated data is committed to the database. The **Decision Logic** and **Routing LLM** then determine which team needs to see this specific feedback."},"typeVersion":1},{"id":"2a5d434a-44d5-4432-a834-8e3e02ed8d0c","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-2480,-576],"parameters":{"color":4,"width":800,"height":1056,"content":"## 2. Multi-Track AI Analysis\nParallel processing for sentiment, category, and visual content. **AI Results Merge** combines these three streams into a single JSON object."},"typeVersion":1},{"id":"a6f80e82-1844-4953-b1d4-311411b81309","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-3200,80],"parameters":{"color":4,"width":704,"height":400,"content":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## 1. Input & Prep\nCaptures the webhook from Tally and maps the fields. The **Fetch Image** branch ensures binary data is handled only if an attachment exists."},"typeVersion":1},{"id":"55b2da1f-4324-4d25-908c-c1fd90073a39","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1664,-160],"parameters":{"color":3,"width":688,"height":128,"content":"### ⚠️ Local Inference Setup\n- The nodes **Sentiment LLM**, **Classification LLM**, **Image Keyword Extraction**, and **Routing LLM** all point to a local OpenAI-compatible API.\n- If running n8n in Docker, do **not** use `localhost`. Use your machine's internal IP address to allow the container to communicate with LM Studio."},"typeVersion":1},{"id":"10626d44-3c6c-4c6f-8679-70391ecb5c6d","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-3920,64],"parameters":{"color":2,"width":704,"height":432,"content":"### How it works\nThis workflow provides end-to-end automation for customer feedback. It triggers from a **Tally.so** form, processes the input through a multi-track AI pipeline (Sentiment, Classification, and Vision), saves the results to **PostgreSQL**, and intelligently routes notifications to the appropriate **Discord** channels.\n\n### Setup steps\n1. **Local AI:** Start **LM Studio** and load `Qwen2-VL-7B-Instruct`. Ensure the server is active on port `1234`.\n2. **Credentials:** \\* Connect **Tally**, **Postgres**, and **Discord** (Bot Token).\n- Configure the **LLM** nodes using your local network IP (e.g., `http://192.168.x.x:1234/v1`).\n3. **Database:** Ensure your Postgres table is ready to receive the schema (Name, Email, Feedback, Sentiment, Category, Keywords).\n4. **Discord:** Map your channel IDs for `#general-inquiries`, `#happy-customers`, and `#support-urgent` in the routing section.\n\n### Customization\nModify the **Sentiment Analysis** or **Text Classification** prompts to change how the AI interprets your specific customer feedback data."},"typeVersion":1}],"active":true,"pinData":{"Tally Trigger":[{"json":{"id":"9q01MX1","formId":"xXVN5G","formName":"Customer Feedback Submission","createdAt":"2025-12-24T07:25:08.000Z","respondentId":"E4gdXr","question_9QLxxG":"https://storage.tally.so/private/broken_screen_iphone.jpg?id=LvXVAz&accessToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Ikx2WFZBeiIsImZvcm1JZCI6InhYVk41RyIsImlhdCI6MTc2NjU2MTEwOH0.n8CabdVTL79IPMvkZy-cxyhDN6J3DhstEAPO7f_ke-s&signature=b7d67473770629a73a8a543adb0c602a11614c914f3a6cc5a149d00e498340e1","question_NoKEOG":"John Doe","question_QVgjEg":"I got a broken Iphone Delivered at my home.","question_qVxgN2":"john.doe@example.com"}}]},"settings":{"executionOrder":"v1"},"versionId":"c920cc4a-ef6d-433d-afd2-e1f6390a2198","connections":{"If":{"main":[[{"node":"Fetch Image","type":"main","index":0}],[{"node":"Empty Keywords Handler","type":"main","index":0}]]},"Fetch Image":{"main":[[{"node":"Image Keyword Extraction","type":"main","index":0}]]},"Routing LLM":{"ai_languageModel":[[{"node":"Decision Logic","type":"ai_languageModel","index":0}]]},"Route Parser":{"ai_outputParser":[[{"node":"Decision Logic","type":"ai_outputParser","index":0}]]},"Field Mapping":{"main":[[{"node":"Sentiment Analysis","type":"main","index":0},{"node":"If","type":"main","index":0},{"node":"Text Classification","type":"main","index":0},{"node":"AI Results Merge","type":"main","index":2}]]},"Sentiment LLM":{"ai_languageModel":[[{"node":"Sentiment Analysis","type":"ai_languageModel","index":0}]]},"Tally Trigger":{"main":[[{"node":"Field Mapping","type":"main","index":0}]]},"Channel Router":{"main":[[{"node":"#general-inquiries","type":"main","index":0}],[{"node":"#happy-customers","type":"main","index":0}],[{"node":"#support-urgent","type":"main","index":0}]]},"Decision Logic":{"main":[[{"node":"Channel Router","type":"main","index":0}]]},"#support-urgent":{"main":[[{"node":"Build Discord Message","type":"main","index":2}]]},"#happy-customers":{"main":[[{"node":"Build Discord Message","type":"main","index":1}]]},"AI Results Merge":{"main":[[{"node":"Data Aggregation","type":"main","index":0}]]},"Data Aggregation":{"main":[[{"node":"Save to PostgreSQL","type":"main","index":0}]]},"Sentiment Parser":{"ai_outputParser":[[{"node":"Sentiment Analysis","type":"ai_outputParser","index":0}]]},"Format Embed Data":{"main":[[{"node":"Send Discord Notification","type":"main","index":0}]]},"#general-inquiries":{"main":[[{"node":"Build Discord Message","type":"main","index":0}]]},"Classification LLM":{"ai_languageModel":[[{"node":"Text Classification","type":"ai_languageModel","index":0}]]},"Save to PostgreSQL":{"main":[[{"node":"Decision Logic","type":"main","index":0}]]},"Sentiment Analysis":{"main":[[{"node":"AI Results Merge","type":"main","index":0}]]},"Image Results Merge":{"main":[[{"node":"AI Results Merge","type":"main","index":3}]]},"Text Classification":{"main":[[{"node":"AI Results Merge","type":"main","index":1}]]},"Build Discord Message":{"main":[[{"node":"Format Embed Data","type":"main","index":0}]]},"Classification Parser":{"ai_outputParser":[[{"node":"Text Classification","type":"ai_outputParser","index":0}]]},"Empty Keywords Handler":{"main":[[{"node":"Image Results Merge","type":"main","index":1}]]},"Image Keyword Extraction":{"main":[[{"node":"Image Results Merge","type":"main","index":0}]]}}},"lastUpdatedBy":29,"workflowInfo":{"nodeCount":32,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":5},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.merge":{"count":3},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.discord":{"count":1},"n8n-nodes-base.postgres":{"count":1},"n8n-nodes-base.aggregate":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.httpRequest":{"count":1},"@n8n/n8n-nodes-langchain.chainLlm":{"count":3},"n8n-nodes-tallyforms.tallyTrigger":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":3},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":3}}},"status":"published","readyToDemo":null,"user":{"name":"Neloy Barman","username":"neloy-barman","bio":"My specialization lies in AI tech stacks. I have a strong track record of developing both text- and voice-based conversational solutions. I've also created industry-standard automation products. Currently, I'm diving deeper into building advanced agentic workflow systems and n8n automation solutions.","verified":true,"links":[""],"avatar":"https://gravatar.com/avatar/643d4c99d6a6bce86cb6c5e74176655c3921f3dbf51e4d0623d1f6366fc81c84?r=pg&d=retro&size=200"},"nodes":[{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"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-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"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/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"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/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"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/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"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/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"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/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"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/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"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/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"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-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/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"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/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"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/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"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/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":30,"icon":"file:postgres.svg","name":"n8n-nodes-base.postgres","codex":{"data":{"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-i-chose-n8n-over-zapier-in-2020/","icon":"😍","label":"Why I chose n8n over Zapier in 2020"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/postgres/"}]},"categories":["Development","Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Postgres"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNzkgODEiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTc3LjM5MSA0Ny45MjJjLS40NjYtMS40MTItMS42ODgtMi4zOTYtMy4yNjgtMi42MzItLjc0NS0uMTExLTEuNTk4LS4wNjQtMi42MDguMTQ0LTEuNzYuMzYzLTMuMDY1LjUwMS00LjAxOC41MjggMy41OTYtNi4wNzIgNi41MjEtMTIuOTk3IDguMjA0LTE5LjUxNSAyLjcyMi0xMC41NCAxLjI2OC0xNS4zNDEtLjQzMi0xNy41MTNDNzAuNzcgMy4xODUgNjQuMjA2LjA5NyA1Ni4yODcuMDAyYy00LjIyNC0uMDUyLTcuOTMzLjc4Mi05Ljg2NyAxLjM4MmEzNyAzNyAwIDAgMC01Ljc3LS41MjhjLTMuODA5LS4wNjEtNy4xNzQuNzctMTAuMDUgMi40NzZhNDYgNDYgMCAwIDAtNy4wOTgtMS43ODJDMTYuNTYxLjQxMSAxMC45NjggMS4yOTkgNi44NzYgNC4xOSAxLjkyMiA3LjY4OS0uMzc1IDEzLjc3LjA1IDIyLjI2MmMuMTM1IDIuNjk2IDEuNjQzIDEwLjkgNC4wMTggMTguNjggMS4zNjUgNC40NzIgMi44MiA4LjE4NSA0LjMyNiAxMS4wMzggMi4xMzUgNC4wNDYgNC40MTkgNi40MjggNi45ODQgNy4yODQgMS40MzguNDc5IDQuMDQ5LjgxNCA2Ljc5Ny0xLjQ3M2E2IDYgMCAwIDAgMS40MjkgMS4yM2MuNzgzLjQ5NCAxLjc0Ljg5NyAyLjY5NiAxLjEzNiAzLjQ0Ni44NjIgNi42NzQuNjQ2IDkuNDI3LS41NjFsLjA0MSAxLjM2Mi4wNiAxLjg5OWMuMTYzIDQuMDY0LjQ0IDcuMjIzIDEuMjU5IDkuNDM0LjA0NS4xMjIuMTA1LjMwNy4xNjkuNTAzLjQwOSAxLjI1MSAxLjA5MiAzLjM0NiAyLjgzIDQuOTg3IDEuOCAxLjY5OSAzLjk3OCAyLjIyIDUuOTcyIDIuMjIgMSAwIDEuOTU1LS4xMzEgMi43OTItLjMxMSAyLjk4NC0uNjM5IDYuMzczLTEuNjE0IDguODI0LTUuMTA0IDIuMzE4LTMuMyAzLjQ0NC04LjI3IDMuNjQ4LTE2LjEwMWwuMDc0LS42MzQuMDQ4LS40MTQuNTQ2LjA0OC4xNDEuMDFjMy4wMzkuMTM4IDYuNzU1LS41MDYgOS4wMzctMS41NjYgMS44MDMtLjgzNyA3LjU4Mi0zLjg4OCA2LjIyMS04LjAwNyIvPjxwYXRoIGZpbGw9IiMzMzY3OTEiIGQ9Ik03Mi4xOTUgNDguNzIzYy05LjAzNiAxLjg2NC05LjY1Ny0xLjE5NS05LjY1Ny0xLjE5NSA5LjU0MS0xNC4xNTcgMTMuNTI5LTMyLjEyNyAxMC4wODctMzYuNTI1QzYzLjIzNS0uOTk0IDQ2Ljk4MSA0LjY4IDQ2LjcxIDQuODI3bC0uMDg3LjAxNmMtMS43ODUtLjM3MS0zLjc4My0uNTkxLTYuMDI5LS42MjgtNC4wODktLjA2Ny03LjE5IDEuMDcyLTkuNTQ0IDIuODU3IDAgMC0yOC45OTUtMTEuOTQ1LTI3LjY0NyAxNS4wMjMuMjg3IDUuNzM3IDguMjIzIDQzLjQxIDE3LjY4OSAzMi4wMzEgMy40Ni00LjE2MSA2LjgwMy03LjY3OSA2LjgwMy03LjY3OSAxLjY2IDEuMTAzIDMuNjQ4IDEuNjY2IDUuNzMyIDEuNDYzbC4xNjItLjEzN2E2LjMgNi4zIDAgMCAwIC4wNjUgMS42MmMtMi40MzkgMi43MjUtMS43MjIgMy4yMDMtNi41OTcgNC4yMDYtNC45MzMgMS4wMTctMi4wMzUgMi44MjYtLjE0MyAzLjI5OSAyLjI5NC41NzQgNy42IDEuMzg2IDExLjE4NS0zLjYzM2wtLjE0My41NzNjLjk1Ni43NjUgMS42MjYgNC45NzggMS41MTQgOC43OTdzLS4xODggNi40NDEuNTY1IDguNDg5IDEuNTAzIDYuNjU2IDcuOTEyIDUuMjgyYzUuMzU1LTEuMTQ4IDguMTMtNC4xMjEgOC41MTYtOS4wODEuMjc0LTMuNTI2Ljg5NC0zLjAwNS45MzMtNi4xNThsLjQ5Ny0xLjQ5M2MuNTczLTQuNzguMDkxLTYuMzIyIDMuMzktNS42MDVsLjgwMi4wN2MyLjQyOC4xMSA1LjYwNi0uMzkxIDcuNDcxLTEuMjU3IDQuMDE2LTEuODY0IDYuMzk4LTQuOTc2IDIuNDM4LTQuMTU4Ii8+PHBhdGggZD0iTTMyLjc0NyAyNC42NmMtLjgxNC0uMTEzLTEuNTUyLS4wMDgtMS45MjUuMjc0YS43LjcgMCAwIDAtLjI5Mi40N2MtLjA0Ny4zMzYuMTg4LjcwNy4zMzMuODk4LjQwOS41NDIgMS4wMDYuOTE1IDEuNTk4Ljk5N2EyIDIgMCAwIDAgLjI1Ni4wMThjLjk4NiAwIDEuODgzLS43NjggMS45NjItMS4zMzUuMDk5LS43MS0uOTMyLTEuMTgzLTEuOTMxLTEuMzIybTI2Ljk3NS4wMjJjLS4wNzgtLjU1Ni0xLjA2OC0uNzE1LTIuMDA3LS41ODRzLTEuODQ4LjU1NC0xLjc3MiAxLjExMmMuMDYxLjQzNC44NDQgMS4xNzQgMS43NzEgMS4xNzRxLjExNyAwIC4yMzctLjAxNmMuNjE5LS4wODYgMS4wNzMtLjQ3OSAxLjI4OC0uNzA1LjMyOS0uMzQ1LjUxOC0uNzMuNDg0LS45OG0xNS40NzcgMjMuODI4Yy0uMzQ1LTEuMDQyLTEuNDUzLTEuMzc3LTMuMjk2LS45OTctNS40NzEgMS4xMjktNy40My4zNDctOC4wNzMtLjEyNyA0LjI1Mi02LjQ3OCA3Ljc1LTE0LjMwOCA5LjYzNy0yMS42MTQuODk0LTMuNDYxIDEuMzg4LTYuNjc1IDEuNDI4LTkuMjk0LjA0NS0yLjg3Ni0uNDQ1LTQuOTg4LTEuNDU1LTYuMjc5LTQuMDcyLTUuMjAzLTEwLjA0OC03Ljk5NC0xNy4yODMtOC4wNy00Ljk3My0uMDU2LTkuMTc1IDEuMjE3LTkuOTkgMS41NzVhMjUgMjUgMCAwIDAtNS42MjItLjcyMmMtMy43MzQtLjA2LTYuOTYxLjgzNC05LjYzMyAyLjY1NWE0MyA0MyAwIDAgMC03LjgyOC0yLjA1MmMtNi4zNDItMS4wMjEtMTEuMzgxLS4yNDgtMTQuOTc4IDIuMy00LjI5MSAzLjA0LTYuMjcyIDguNDc1LTUuODg4IDE2LjE1Mi4xMjkgMi41ODMgMS42MDEgMTAuNTI5IDMuOTIzIDE4LjEzOSAzLjA1NyAxMC4wMTYgNi4zOCAxNS42ODYgOS44NzcgMTYuODUyYTQuNCA0LjQgMCAwIDAgMS40MDIuMjMyYzEuMjc2IDAgMi44MzktLjU3NSA0LjQ2Ni0yLjUzMWExNjEgMTYxIDAgMCAxIDYuMTU2LTYuOTY2IDkuOSA5LjkgMCAwIDAgNC40MjkgMS4xOTFsLjAxLjEyMWMtLjMxLjM2OC0uNTY0LjY5LS43ODEuOTY1LTEuMDcgMS4zNTgtMS4yOTMgMS42NDEtNC43MzggMi4zNTEtLjk4LjIwMi0zLjU4Mi43MzgtMy42MiAyLjU2My0uMDQxIDEuOTkzIDMuMDc2IDIuODMgMy40MzEgMi45MTkgMS4yMzguMzEgMi40My40NjMgMy41NjguNDYzIDIuNzY2IDAgNS4yLS45MDkgNy4xNDUtMi42NjgtLjA2IDcuMTA2LjIzNiAxNC4xMDcgMS4wODkgMTYuMjQxLjY5OSAxLjc0NiAyLjQwNiA2LjAxNCA3Ljc5OCA2LjAxNC43OTEgMCAxLjY2Mi0uMDkyIDIuNjItLjI5NyA1LjYyNy0xLjIwNyA4LjA3MS0zLjY5NCA5LjAxNi05LjE3Ny41MDYtMi45MyAxLjM3NC05LjkyOCAxLjc4Mi0xMy42ODIuODYyLjI2OSAxLjk3MS4zOTIgMy4xNy4zOTIgMi41MDEgMCA1LjM4Ny0uNTMxIDcuMTk3LTEuMzcyIDIuMDMzLS45NDQgNS43MDItMy4yNjEgNS4wMzctNS4yNzR6TTYxLjggMjMuMTQ3Yy0uMDE5IDEuMTA4LS4xNzEgMi4xMTQtLjMzMyAzLjE2NC0uMTc0IDEuMTI5LS4zNTQgMi4yOTctLjM5OSAzLjcxNS0uMDQ1IDEuMzc5LjEyOCAyLjgxNC4yOTQgNC4yLjMzNyAyLjgwMS42ODIgNS42ODUtLjY1NSA4LjUzMWExMSAxMSAwIDAgMS0uNTkyLTEuMjE4Yy0uMTY2LS40MDMtLjUyNy0xLjA1LTEuMDI3LTEuOTQ2LTEuOTQ0LTMuNDg3LTYuNDk3LTExLjY1Mi00LjE2Ny0xNC45ODQuNjk0LS45OTIgMi40NTYtMi4wMTEgNi44NzktMS40NjN6TTU2LjQzOSA0LjM3NGM2LjQ4Mi4xNDMgMTEuNjA5IDIuNTY4IDE1LjI0IDcuMjA3IDIuNzg0IDMuNTU4LS4yODIgMTkuNzQ5LTkuMTU4IDMzLjcxNmwtLjI2OS0uMzM5LS4xMTItLjE0YzIuMjk0LTMuNzg4IDEuODQ1LTcuNTM2IDEuNDQ2LTEwLjg1OS0uMTY0LTEuMzY0LS4zMTktMi42NTItLjI4LTMuODYxLjA0MS0xLjI4My4yMS0yLjM4Mi4zNzQtMy40NDYuMjAyLTEuMzExLjQwNy0yLjY2Ny4zNS00LjI2NWExLjggMS44IDAgMCAwIC4wMzctLjYwMWMtLjE0NC0xLjUzMy0xLjg5NC02LjEyLTUuNDYyLTEwLjI3My0xLjk1MS0yLjI3MS00Ljc5Ny00LjgxMy04LjY4Mi02LjUyN2EyOS4zIDI5LjMgMCAwIDEgNi41MTUtLjYxMnpNMjAuMTY3IDUzLjI5OGMtMS43OTMgMi4xNTUtMy4wMzEgMS43NDItMy40MzggMS42MDctMi42NTMtLjg4NS01LjczLTYuNDkxLTguNDQ0LTE1LjM4Mi0yLjM0OC03LjY5My0zLjcyLTE1LjQyOC0zLjgyOS0xNy41OTctLjM0My02Ljg2IDEuMzItMTEuNjQxIDQuOTQzLTE0LjIxIDUuODk2LTQuMTgxIDE1LjU4OS0xLjY3OSAxOS40ODQtLjQwOWwtLjE3LjE2M2MtNi4zOTEgNi40NTUtNi4yNCAxNy40ODMtNi4yMjQgMTguMTU3YTIyIDIyIDAgMCAwIC4wNTEgMS4xMzVjLjExIDEuODU1LjMxNSA1LjMwNy0uMjMyIDkuMjE3LS41MDggMy42MzMuNjEyIDcuMTg5IDMuMDcyIDkuNzU2cS4zODMuMzk4Ljc5NS43NWExNjQgMTY0IDAgMCAwLTYuMDA4IDYuODE0em02LjgzLTkuMTEzYy0xLjk4My0yLjA2OS0yLjg4NC00Ljk0Ny0yLjQ3MS03Ljg5Ni41NzctNC4xMy4zNjQtNy43MjcuMjUtOS42NTlsLS4wMzktLjY5NGMuOTM0LS44MjggNS4yNjEtMy4xNDYgOC4zNDYtMi40MzkgMS40MDguMzIzIDIuMjY2IDEuMjgxIDIuNjIzIDIuOTMxIDEuODQ2IDguNTM5LjI0NCAxMi4wOTgtMS4wNDMgMTQuOTU3LS4yNjUuNTg5LS41MTYgMS4xNDYtLjczIDEuNzIybC0uMTY2LjQ0NWMtLjQyIDEuMTI2LS44MTEgMi4xNzMtMS4wNTMgMy4xNjctMi4xMDgtLjAwNi00LjE1OS0uOTA3LTUuNzE4LTIuNTM0em0uMzI0IDExLjUxNmE1IDUgMCAwIDEtMS40OTQtLjY0MmMuMjcxLS4xMjguNzU0LS4zMDEgMS41OTEtLjQ3NCA0LjA1Mi0uODM0IDQuNjc4LTEuNDIzIDYuMDQ1LTMuMTU4LjMxMy0uMzk4LjY2OS0uODQ5IDEuMTYtMS4zOTguNzMzLS44MjEgMS4wNjgtLjY4MiAxLjY3Ni0uNDMuNDkzLjIwNC45NzIuODIxIDEuMTY3IDEuNTAxLjA5Mi4zMjEuMTk1LjkzLS4xNDMgMS40MDQtMi44NTUgMy45OTctNy4wMTUgMy45NDYtMTAuMDAzIDMuMTk4em0yMS4yMDcgMTkuNzM1Yy00Ljk1NyAxLjA2Mi02LjcxMy0xLjQ2Ny03Ljg2OS00LjM1OS0uNzQ3LTEuODY3LTEuMTEzLTEwLjI4NS0uODUzLTE5LjU4MmExLjEgMS4xIDAgMCAwLS4wNDgtLjM1NiA1IDUgMCAwIDAtLjEzOS0uNjU3Yy0uMzg3LTEuMzUzLTEuMzMxLTIuNDg0LTIuNDYyLTIuOTUzLS40NS0uMTg2LTEuMjc1LS41MjgtMi4yNjctLjI3NC4yMTItLjg3MS41NzgtMS44NTUuOTc2LTIuOTIxbC4xNjctLjQ0OGMuMTg4LS41MDUuNDIzLTEuMDI5LjY3My0xLjU4MyAxLjM0Ny0yLjk5MiAzLjE5Mi03LjA5MSAxLjE5LTE2LjM1LS43NS0zLjQ2OC0zLjI1NC01LjE2MS03LjA1LTQuNzY4LTIuMjc2LjIzNS00LjM1OCAxLjE1NC01LjM5NiAxLjY4cS0uMzM0LjE2OS0uNjE4LjMyOWMuMjktMy40OTQgMS4zODUtMTAuMDI0IDUuNDgxLTE0LjE1NiAyLjU3OS0yLjYwMSA2LjAxNC0zLjg4NiAxMC4xOTktMy44MTcgOC4yNDYuMTM1IDEzLjUzNCA0LjM2NyAxNi41MTggNy44OTMgMi41NzEgMy4wMzkgMy45NjQgNi4xIDQuNTIgNy43NTEtNC4xNzktLjQyNS03LjAyMi40LTguNDYzIDIuNDYtMy4xMzUgNC40ODEgMS43MTUgMTMuMTc4IDQuMDQ2IDE3LjM1OC40MjcuNzY2Ljc5NiAxLjQyOC45MTIgMS43MDkuNzU5IDEuODM5IDEuNzQyIDMuMDY3IDIuNDU5IDMuOTY0LjIyLjI3NS40MzMuNTQxLjU5Ni43NzQtMS4yNjYuMzY1LTMuNTM5IDEuMjA4LTMuMzMyIDUuNDIyLS4xNjcgMi4xMTUtMS4zNTYgMTIuMDE2LTEuOTU5IDE1LjUxNC0uNzk3IDQuNjIxLTIuNDk3IDYuMzQzLTcuMjc5IDcuMzY4em0yMC42OTMtMjMuNjhjLTEuMjk0LjYwMS0zLjQ2IDEuMDUyLTUuNTE4IDEuMTQ4LTIuMjczLjEwNy0zLjQzLS4yNTUtMy43MDItLjQ3Ny0uMTI4LTIuNjI2Ljg1LTIuOTAxIDEuODg0LTMuMTkxLjE2My0uMDQ2LjMyMS0uMDkuNDc0LS4xNDRhNCA0IDAgMCAwIC4zMTMuMjNjMS44MjcgMS4yMDYgNS4wODUgMS4zMzYgOS42ODUuMzg2bC4wNS0uMDFjLS42Mi41OC0xLjY4MiAxLjM1OS0zLjE4NyAyLjA1OHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Postgres","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":5,"name":"Development"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"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/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"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/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"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/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"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/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"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/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":60,"icon":"file:discord.svg","name":"n8n-nodes-base.discord","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.discord/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/discord/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Discord"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTk5IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzU4NjVGMiIgZD0iTTIxNi44NTYgMTYuNTk3QTIwOC41IDIwOC41IDAgMCAwIDE2NC4wNDIgMGMtMi4yNzUgNC4xMTMtNC45MzMgOS42NDUtNi43NjYgMTQuMDQ2cS0yOS41MzgtNC40NDItNTguNTMzIDBjLTEuODMyLTQuNC00LjU1LTkuOTMzLTYuODQ2LTE0LjA0NmEyMDcuOCAyMDcuOCAwIDAgMC01Mi44NTUgMTYuNjM4QzUuNjE4IDY3LjE0Ny0zLjQ0MyAxMTYuNCAxLjA4NyAxNjQuOTU2YzIyLjE2OSAxNi41NTUgNDMuNjUzIDI2LjYxMiA2NC43NzUgMzMuMTkzQTE2MSAxNjEgMCAwIDAgNzkuNzM1IDE3NS4zYTEzNi40IDEzNi40IDAgMCAxLTIxLjg0Ni0xMC42MzIgMTA5IDEwOSAwIDAgMCA1LjM1Ni00LjIzN2M0Mi4xMjIgMTkuNzAyIDg3Ljg5IDE5LjcwMiAxMjkuNTEgMGExMzIgMTMyIDAgMCAwIDUuMzU1IDQuMjM3IDEzNiAxMzYgMCAwIDEtMjEuODg2IDEwLjY1M2M0LjAwNiA4LjAyIDguNjM4IDE1LjY3IDEzLjg3MyAyMi44NDggMjEuMTQyLTYuNTggNDIuNjQ2LTE2LjYzNyA2NC44MTUtMzMuMjEzIDUuMzE2LTU2LjI4OC05LjA4LTEwNS4wOS0zOC4wNTYtMTQ4LjM2TTg1LjQ3NCAxMzUuMDk1Yy0xMi42NDUgMC0yMy4wMTUtMTEuODA1LTIzLjAxNS0yNi4xOHMxMC4xNDktMjYuMiAyMy4wMTUtMjYuMiAyMy4yMzYgMTEuODA0IDIzLjAxNSAyNi4yYy4wMiAxNC4zNzUtMTAuMTQ4IDI2LjE4LTIzLjAxNSAyNi4xOG04NS4wNTEgMGMtMTIuNjQ1IDAtMjMuMDE0LTExLjgwNS0yMy4wMTQtMjYuMThzMTAuMTQ4LTI2LjIgMjMuMDE0LTI2LjJjMTIuODY3IDAgMjMuMjM2IDExLjgwNCAyMy4wMTUgMjYuMiAwIDE0LjM3NS0xMC4xNDggMjYuMTgtMjMuMDE1IDI2LjE4Ii8+PC9zdmc+"},"displayName":"Discord","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"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":1123,"icon":"fa:link","name":"@n8n/n8n-nodes-langchain.chainLlm","codex":{"data":{"alias":["LangChain"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Chains","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"Basic LLM Chain","color":"#909298"},"iconData":{"icon":"link","type":"icon"},"displayName":"Basic LLM Chain","typeVersion":2,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1236,"icon":"file:aggregate.svg","name":"n8n-nodes-base.aggregate","codex":{"data":{"alias":["Aggregate","Combine","Flatten","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Aggregate"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjRkY2RDVBIiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMyIDE0OGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE0NmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJINDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNDZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDQ0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDk2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTQ2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg0NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Ik03NCA3NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExNi4yMTdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjU2YzAgMjYuOTc4IDEwLjI3MiA1MS41NTcgMjcuMTE5IDcwLjAzOSA1LjA1NSA1LjU0NSA1LjA1NSAxNC4zNzcgMCAxOS45MjItMTYuODQ3IDE4LjQ4Mi0yNy4xMTkgNDMuMDYxLTI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMySDg2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTE2LjIxN2M0NC4xODMgMCA4MC0zNS44MTcgODAtODB2LTU2YzAtMzAuOTI4IDI1LjA3Mi01NiA1Ni01NmE1Ljc4MyA1Ljc4MyAwIDAgMCA1Ljc4My01Ljc4M3YtMzYuNDM0YTUuNzgzIDUuNzgzIDAgMCAwLTUuNzgzLTUuNzgzYy0zMC45MjggMC01Ni0yNS4wNzItNTYtNTZ2LTU2YzAtNDQuMTgzLTM1LjgxNy04MC04MC04MEg4NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zNzYgMjQ0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzODhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUxMnY1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4="},"displayName":"Aggregate","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":41,"name":"Ticket Management"},{"id":49,"name":"AI Summarization"}],"image":[]}}