{"workflow":{"id":14269,"name":"Process invoices and send weekly AI reports with OpenAI and Gmail","views":6,"recentViews":0,"totalViews":6,"createdAt":"2026-03-23T15:22:52.815Z","description":"## Overview\nThis workflow automates invoice handling from upload to reporting using AI.\n\nUsers submit invoices through a simple form. The workflow extracts key details, validates the data, stores valid invoices, and sends email notifications. It also generates a weekly summary report automatically.\n\nThis helps reduce manual data entry and ensures consistent invoice processing.\n\n---\n\n## How It Works\n\n1. **Form Submission**\n   Users upload an invoice (PDF or image) along with their email.\n\n2. **Initial Storage**\n   The raw submission is stored for tracking and reference.\n\n3. **Text Extraction**\n   The uploaded file is processed to extract text content.\n\n4. **AI Data Extraction**\n   AI converts the raw text into structured invoice data such as invoice number, vendor, date, currency, and totals.\n\n5. **Validation**\n   The workflow checks:\n   - Date format (YYYY-MM-DD)\n   - Allowed currencies\n   - Total amount validity\n\n6. **Conditional Flow**\n   - If valid → invoice is stored and a success email is sent  \n   - If invalid → an error email is sent with details\n\n7. **Weekly Reporting**\n   A scheduled trigger runs weekly to:\n   - Fetch all validated invoices\n   - Generate a summary report using AI\n   - Send the report via email\n\n---\n\n## Setup Instructions\n\n1. Add your OpenAI credentials (used for data extraction and reporting)\n2. Connect Gmail credentials for sending emails\n3. Configure Data Tables:\n   - `invoice_form_submissions`\n   - `validated_invoices`\n4. Update the **Workflow Configuration** node:\n   - Set report recipient email\n   - Adjust allowed currencies if needed\n5. Ensure the file field (`invoiceFile`) is correctly mapped\n6. Test with a sample invoice\n7. Activate the workflow\n\n---\n\n## Use Cases\n\n- Automating invoice processing for small businesses\n- Reducing manual accounting data entry\n- Validating invoices before storing them\n- Generating weekly financial summaries\n- Handling invoice submissions from clients or teams\n\n---\n\n## Requirements\n\n- OpenAI API credentials\n- Gmail account (for sending emails)\n- n8n Data Tables (or replace with your preferred database)\n- n8n instance with file upload support\n\n---\n\n## Notes\n\n- Make sure to fix the IF condition:\n  Use `{{$json.validation.isValid}}` instead of accessing `isValid` directly.\n\n- You can extend validation rules in the Code node based on your business needs.\n\n- The reporting section can be customized to include more insights or formats.","workflow":{"meta":{"instanceId":"48aac30adfc5487a33ef16e0e958096f27cef40df3ed0febcbe1ca199e789786"},"nodes":[{"id":"2befd473-43b7-42bb-9fcd-925e35c58044","name":"Invoice Upload Form","type":"n8n-nodes-base.formTrigger","position":[-1824,96],"webhookId":"0d2237c3-e6b8-4d4f-aa2d-7e3e35e8f21f","parameters":{"options":{"appendAttribution":false,"respondWithOptions":{"values":{"formSubmittedText":"Thank you! Your invoice is being processed. You will receive an email confirmation shortly."}}},"formTitle":"Invoice Upload - AI Processing System","formFields":{"values":[{"fieldType":"email","fieldLabel":"Your Email Address","requiredField":true},{"fieldType":"file","fieldLabel":"Invoice File (PDF or Image)","multipleFiles":false,"requiredField":true,"acceptFileTypes":".pdf, .jpg, .jpeg, .png"}]},"formDescription":"Upload your invoice (PDF or image) for automated processing and validation"},"typeVersion":2.3},{"id":"82dca76f-328a-40c2-8139-ec6affe6e513","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[-1552,96],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"reportRecipientEmail","type":"string","value":"<__PLACEHOLDER_VALUE__Email address for weekly reports__>"},{"id":"id-2","name":"validCurrencies","type":"string","value":"USD,EUR,GBP,CAD,AUD,JPY,CHF"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"8c6c66cc-ffa8-4184-bfad-ec96682e18e7","name":"Store Raw Form Submission","type":"n8n-nodes-base.dataTable","position":[-1328,96],"parameters":{"columns":{"value":{},"mappingMode":"autoMapInputData"},"options":{},"dataTableId":{"__rl":true,"mode":"id","value":"invoice_form_submissions"}},"typeVersion":1},{"id":"4dec86d9-c3bd-4384-b8a2-0785d7bb8f91","name":"Extract Invoice Content","type":"n8n-nodes-base.extractFromFile","position":[-1024,96],"parameters":{"options":{},"operation":"pdf","binaryPropertyName":"invoiceFile"},"typeVersion":1.1},{"id":"3fc45009-48db-4fce-9de3-c125f3222621","name":"Extract Invoice Data with AI","type":"@n8n/n8n-nodes-langchain.agent","position":[-800,96],"parameters":{"text":"={{ $json.text }}","options":{"systemMessage":"You are an expert invoice data extraction assistant. Extract all relevant information from the provided invoice text and return it in the structured format.\n\nExtract the following fields:\n- Invoice number\n- Invoice date (format as YYYY-MM-DD)\n- Vendor/supplier name\n- Currency (3-letter ISO code like USD, EUR, GBP)\n- Total amount (numeric value only)\n- Subtotal (numeric value only)\n- Tax amount (numeric value only)\n- Line items with description, quantity, unit price, and amount\n\nBe precise with numbers and dates. If a field is not found, use null."},"promptType":"define","hasOutputParser":true},"typeVersion":3},{"id":"03f1a3b9-fedc-4c5f-9812-97129e98269f","name":"Invoice Data Schema Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-592,320],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"invoiceNumber\": {\n      \"type\": \"string\",\n      \"description\": \"The invoice number\"\n    },\n    \"invoiceDate\": {\n      \"type\": \"string\",\n      \"description\": \"The invoice date in YYYY-MM-DD format\"\n    },\n    \"vendorName\": {\n      \"type\": \"string\",\n      \"description\": \"The name of the vendor\"\n    },\n    \"currency\": {\n      \"type\": \"string\",\n      \"description\": \"3-letter currency code (e.g., USD, EUR, GBP)\"\n    },\n    \"totalAmount\": {\n      \"type\": \"number\",\n      \"description\": \"The total amount of the invoice\"\n    },\n    \"lineItems\": {\n      \"type\": \"array\",\n      \"description\": \"Array of line items in the invoice\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"description\": {\n            \"type\": \"string\",\n            \"description\": \"Description of the line item\"\n          },\n          \"quantity\": {\n            \"type\": \"number\",\n            \"description\": \"Quantity of the item\"\n          },\n          \"unitPrice\": {\n            \"type\": \"number\",\n            \"description\": \"Unit price of the item\"\n          },\n          \"amount\": {\n            \"type\": \"number\",\n            \"description\": \"Total amount for the line item\"\n          }\n        }\n      }\n    },\n    \"taxAmount\": {\n      \"type\": \"number\",\n      \"description\": \"The tax amount\"\n    },\n    \"subtotal\": {\n      \"type\": \"number\",\n      \"description\": \"The subtotal before tax\"\n    }\n  }\n}"},"typeVersion":1.3},{"id":"1c5937a1-63a7-4d9f-8dd0-8b1796d9cf4e","name":"Validate Invoice Data","type":"n8n-nodes-base.code","position":[-416,96],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Validate invoice data\nconst invoiceData = $input.item.json;\n\n// Initialize validation result\nconst validationResult = {\n  isValid: true,\n  errors: []\n};\n\n// Get valid currencies from Workflow Configuration node\nconst validCurrencies = $('Workflow Configuration').item.json.validCurrencies || ['USD', 'EUR', 'GBP'];\n\n// Validate date format (YYYY-MM-DD)\nconst dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/;\nif (!invoiceData.date || !dateRegex.test(invoiceData.date)) {\n  validationResult.isValid = false;\n  validationResult.errors.push('Invalid date format. Expected YYYY-MM-DD');\n}\n\n// Validate currency is in valid list\nif (!invoiceData.currency || !validCurrencies.includes(invoiceData.currency)) {\n  validationResult.isValid = false;\n  validationResult.errors.push(`Invalid currency. Must be one of: ${validCurrencies.join(', ')}`);\n}\n\n// Validate total amount is greater than zero\nconst totalAmount = parseFloat(invoiceData.totalAmount);\nif (isNaN(totalAmount) || totalAmount <= 0) {\n  validationResult.isValid = false;\n  validationResult.errors.push('Total amount must be greater than zero');\n}\n\n// Return the validation result along with original invoice data\nreturn {\n  ...invoiceData,\n  validation: validationResult\n};"},"typeVersion":2},{"id":"d4ace010-b345-493d-b3db-ecfbb3a115a4","name":"Check Validation Result","type":"n8n-nodes-base.if","position":[-240,96],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"id-1","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $('Validate Invoice Data').item.json.isValid }}","rightValue":true}]}},"typeVersion":2.3},{"id":"ae5a40be-3e93-4dc8-b969-965d134278c8","name":"Prepare Success Email Data","type":"n8n-nodes-base.set","position":[16,-48],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"emailSubject","type":"string","value":"Invoice Processed Successfully"},{"id":"id-2","name":"emailBody","type":"string","value":"=<html>\n<body>\n<h2>Invoice Processed Successfully</h2>\n<p>Your invoice has been successfully processed and validated.</p>\n<h3>Invoice Details:</h3>\n<ul>\n<li><strong>Invoice Number:</strong> {{ $json.invoiceNumber }}</li>\n<li><strong>Vendor:</strong> {{ $json.vendorName }}</li>\n<li><strong>Date:</strong> {{ $json.invoiceDate }}</li>\n<li><strong>Total Amount:</strong> ${{ $json.totalAmount }}</li>\n</ul>\n<p>The invoice has been stored in the system and is ready for further processing.</p>\n</body>\n</html>"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"f5cd3484-3d2a-4034-aef6-085ab713559f","name":"Store Validated Invoice","type":"n8n-nodes-base.dataTable","position":[224,-48],"parameters":{"columns":{"value":{},"schema":[],"mappingMode":"autoMapInputData","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"dataTableId":{"__rl":true,"mode":"name","value":"validated_invoices"}},"typeVersion":1},{"id":"f67acac8-a840-4148-8b5b-6bd9c8e36e0d","name":"Send Success Email","type":"n8n-nodes-base.gmail","position":[400,-48],"webhookId":"8fc206cf-581a-4982-9fa7-d39f2faa564c","parameters":{"sendTo":"={{ $('Workflow Configuration').first().json.userEmail }}","message":"={{ $json.emailBody }}","options":{},"subject":"={{ $json.emailSubject }}"},"typeVersion":2.2},{"id":"21d45666-aa82-4d19-9833-2c1751b8d6ec","name":"Prepare Error Email Data","type":"n8n-nodes-base.set","position":[32,448],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"emailSubject","type":"string","value":"Invoice Validation Failed"},{"id":"id-2","name":"emailBody","type":"string","value":"=<html>\n<body>\n<h2>Invoice Validation Failed</h2>\n<p>The uploaded invoice could not be processed due to the following validation errors:</p>\n<div style=\"background-color: #f8d7da; border: 1px solid #f5c6cb; padding: 15px; border-radius: 5px; margin: 10px 0;\">\n<strong>Validation Errors:</strong>\n<ul>\n{{ $json.validationErrors ? $json.validationErrors.map(error => '<li>' + error + '</li>').join('') : '<li>Unknown validation error</li>' }}\n</ul>\n</div>\n<p><strong>Invoice Details:</strong></p>\n<ul>\n<li>Submission Time: {{ $json.submissionTime || 'N/A' }}</li>\n<li>File Name: {{ $json.fileName || 'N/A' }}</li>\n</ul>\n<p>Please review the invoice and resubmit with the correct information.</p>\n</body>\n</html>"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"825ad618-79fe-4941-8666-b266935c0f18","name":"Send Error Email","type":"n8n-nodes-base.gmail","position":[304,448],"webhookId":"19fcc583-bfc1-46c5-9998-8304d26c9fda","parameters":{"sendTo":"={{ $('Workflow Configuration').first().json.userEmail }}","message":"={{ $json.emailBody }}","options":{},"subject":"={{ $json.emailSubject }}"},"typeVersion":2.2},{"id":"062eb808-d9ff-4e9f-b507-aa58246c8ce7","name":"Weekly Report Schedule","type":"n8n-nodes-base.scheduleTrigger","position":[-1856,848],"parameters":{"rule":{"interval":[{"field":"cronExpression","expression":"0 8 * * 1"}]}},"typeVersion":1.3},{"id":"d2197dc0-6ffd-45f7-83b5-1a15c68f80fe","name":"Fetch Weekly Invoices","type":"n8n-nodes-base.dataTable","position":[-1648,848],"parameters":{"operation":"get","returnAll":true,"dataTableId":{"__rl":true,"mode":"id","value":"validated_invoices"}},"typeVersion":1},{"id":"d3cc2957-8e93-459e-ae15-a537a72fcb65","name":"Generate Weekly Report","type":"@n8n/n8n-nodes-langchain.agent","position":[-1312,848],"parameters":{"text":"={{ JSON.stringify($input.all()) }}","options":{"systemMessage":"You are a financial reporting assistant. Generate a comprehensive weekly spending report based on the provided invoice data.\n\nYour report should include:\n1. Executive Summary: Total spending for the week, number of invoices processed\n2. Spending by Vendor: Break down spending by vendor name\n3. Spending by Currency: Show totals in each currency\n4. Top 5 Largest Invoices: List the highest value invoices with details\n5. Trends and Insights: Any notable patterns or observations\n\nFormat the report in clean HTML with proper headings, tables, and styling. Make it professional and easy to read."},"promptType":"define"},"typeVersion":3},{"id":"5a124c06-ecb7-44b1-ad1b-47b65913fb52","name":"Send Weekly Report Email","type":"n8n-nodes-base.gmail","position":[-880,848],"webhookId":"3d11c1b2-812c-433c-b8ed-68460589044a","parameters":{"sendTo":"={{ $('Weekly Report Schedule').first().json.reportRecipientEmail || \"<__PLACEHOLDER_VALUE__Weekly report recipient email__>\" }}","message":"={{ $json.output }}","options":{},"subject":"=Weekly Invoice Processing Report - {{ $now.format(\"MMMM DD, YYYY\") }}"},"typeVersion":2.2},{"id":"84897497-8775-4bbd-9472-ab7803562fb2","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-2736,64],"parameters":{"width":544,"height":560,"content":"## How it works\nThis workflow helps you automatically process invoices using AI.\n\nA user uploads an invoice file (PDF or image) through a form. The file is read and the text is extracted. Then AI pulls out important details like invoice number, vendor name, date, currency, and total amount.\n\nAfter that, the data is checked to make sure it looks correct. For example, it verifies the date format, allowed currencies, and that the total amount is valid.\n\nIf everything is correct, the invoice is saved and a confirmation email is sent to the user. If something is wrong, the user receives an email with the issues so they can fix and resend the invoice.\n\nThe workflow also runs weekly. It collects all processed invoices and creates a simple summary report using AI, which is sent by email.\n\n## Setup steps\n1. Add your OpenAI credentials\n2. Connect Gmail for sending emails\n3. Set up Data Tables for storing invoices\n4. Add your report email in the config node\n5. Test with a sample invoice\n6. Turn on the workflow"},"typeVersion":1},{"id":"ceda8874-d6f4-43c6-9a38-e502b493ff86","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1920,0],"parameters":{"color":7,"width":272,"height":304,"content":"## Form Input\nCollects user email and invoice file via form trigger."},"typeVersion":1},{"id":"9c41db39-f23f-464e-a515-bbeb1165b2ca","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-1616,-64],"parameters":{"color":7,"width":448,"height":352,"content":"## Configuration and Submission Storage\nDefines report email and valid currencies used in validation. and \nStores raw form data for tracking and auditing purposes."},"typeVersion":1},{"id":"30b7e206-f747-46a4-a457-e1caa6d45d09","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-1120,-64],"parameters":{"color":7,"width":256,"height":352,"content":"## File Extraction\nExtracts text content from uploaded invoice files."},"typeVersion":1},{"id":"6ec8389d-16e9-47e2-a970-b0d31b1649c4","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-816,-64],"parameters":{"color":7,"width":352,"height":352,"content":"## AI Processing\nAI converts extracted text into structured invoice data."},"typeVersion":1},{"id":"92d876b3-73b7-4444-a5e6-ccb6f66a76cf","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-448,-48],"parameters":{"color":7,"width":336,"height":320,"content":"## Validation\nChecks date format, currency, and total amount accuracy."},"typeVersion":1},{"id":"f0fd8081-f55c-499e-b20e-d425cf108499","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-48,-144],"parameters":{"color":7,"width":592,"height":288,"content":"## Success Path\nStores valid invoices and sends confirmation email."},"typeVersion":1},{"id":"ee0715f0-74ee-4d2d-87ec-53f5c1650662","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-32,336],"parameters":{"color":7,"width":544,"height":320,"content":"## Error Path\nSends email with validation errors for correction."},"typeVersion":1},{"id":"a7d71fc5-cb30-4a94-b8c4-d658b006f750","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-1952,704],"parameters":{"color":7,"width":480,"height":320,"content":"## Weekly Trigger\nRuns weekly to process stored invoices for reporting."},"typeVersion":1},{"id":"9c113796-c4a5-4844-85a2-1bc58c6cb015","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-1344,704],"parameters":{"color":7,"width":320,"height":320,"content":"## Report Generation\nAI generates a formatted weekly invoice summary report."},"typeVersion":1},{"id":"5395f5e9-3ad2-4fff-a989-93e6593dea29","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[-992,704],"parameters":{"color":7,"width":320,"height":320,"content":"## Report Email\nSends weekly report to configured recipient."},"typeVersion":1},{"id":"e9f97f4b-4f7d-4e0c-9f84-b2c091f5705b","name":"OpenAI GPT-5-mini Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-784,320],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-5-mini"},"options":{},"builtInTools":{}},"typeVersion":1.3},{"id":"88e5d798-a530-46ae-ac1c-2bbc331421f1","name":"OpenAI GPT-5-mini Model for Reports","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-1232,1072],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-5-mini"},"options":{},"builtInTools":{}},"typeVersion":1.3}],"pinData":{},"connections":{"Invoice Upload Form":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Fetch Weekly Invoices":{"main":[[{"node":"Generate Weekly Report","type":"main","index":0}]]},"Validate Invoice Data":{"main":[[{"node":"Check Validation Result","type":"main","index":0}]]},"Generate Weekly Report":{"main":[[{"node":"Send Weekly Report Email","type":"main","index":0}]]},"Weekly Report Schedule":{"main":[[{"node":"Fetch Weekly Invoices","type":"main","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Store Raw Form Submission","type":"main","index":0}]]},"Check Validation Result":{"main":[[{"node":"Prepare Success Email Data","type":"main","index":0}],[{"node":"Prepare Error Email Data","type":"main","index":0}]]},"Extract Invoice Content":{"main":[[{"node":"Extract Invoice Data with AI","type":"main","index":0}]]},"OpenAI GPT-5-mini Model":{"ai_languageModel":[[{"node":"Extract Invoice Data with AI","type":"ai_languageModel","index":0}]]},"Store Validated Invoice":{"main":[[{"node":"Send Success Email","type":"main","index":0}]]},"Prepare Error Email Data":{"main":[[{"node":"Send Error Email","type":"main","index":0}]]},"Store Raw Form Submission":{"main":[[{"node":"Extract Invoice Content","type":"main","index":0}]]},"Invoice Data Schema Parser":{"ai_outputParser":[[{"node":"Extract Invoice Data with AI","type":"ai_outputParser","index":0}]]},"Prepare Success Email Data":{"main":[[{"node":"Store Validated Invoice","type":"main","index":0}]]},"Extract Invoice Data with AI":{"main":[[{"node":"Validate Invoice Data","type":"main","index":0}]]},"OpenAI GPT-5-mini Model for Reports":{"ai_languageModel":[[{"node":"Generate Weekly Report","type":"ai_languageModel","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":30,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":3},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.gmail":{"count":3},"n8n-nodes-base.dataTable":{"count":3},"n8n-nodes-base.stickyNote":{"count":11},"n8n-nodes-base.formTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":2},"n8n-nodes-base.extractFromFile":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":2},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"ResilNext","username":"rnair1996","bio":"","verified":true,"links":[""],"avatar":"https://gravatar.com/avatar/c20bc6c3bcdf260fac3c28c556a8db661ee93670037a3ceb857e047851f6f438?r=pg&d=retro&size=200"},"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":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":356,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmail","codex":{"data":{"alias":["email","human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with 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-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/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"transform\"]","defaults":{"name":"Gmail"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":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":1225,"icon":"file:form.svg","name":"n8n-nodes-base.formTrigger","codex":{"data":{"alias":["table","submit","post"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.formtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Other Trigger Nodes"]}}},"group":"[\"trigger\"]","defaults":{"name":"On form submission"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwQjdCQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzQuOTc4IDM3LjczMmExLjU2IDEuNTYgMCAwIDEtMS41NjIgMS41NjNINi4yNmExLjU2IDEuNTYgMCAwIDEtMS41NjMtMS41NjNWOS42MDdjMC0uNDA1LjE1Ny0uNzk0LjQzOC0xLjA4Nmw2LjMwNC02LjUzMXY1LjM0NEg4LjIxM2ExLjE3MiAxLjE3MiAwIDEgMCAwIDIuMzQzaDQuNDNhMS4xNyAxLjE3IDAgMCAwIDEuMTcxLTEuMTcxVi4yMzJoMTkuNjAyYTEuNTYgMS41NiAwIDAgMSAxLjU2MiAxLjU2M3YxMC4zMjdsLTIuODYgMi44Ni04LjI1MiA4LjI3NmE0MTMuMDA2IDQxMy4wMDYgMCAwIDEtMS42NTQgMS42NjJsLS4zMzcuMzM3YTIgMiAwIDAgMC0uNTU3IDEuMDhMMjAuMyAzMS45MjJjLS4xMDguNjM4LS4yMTUgMS4wNzkuMjExIDEuNDE4LjQwMy4zMi45LjE3NCAxLjU0LjA2Nmw1LjQwOC0uOTI4YTIgMiAwIDAgMCAxLjA4LS41NTZsNi40NC02LjQyOXptLTI0LjAzLTIxLjI2NWExLjE4IDEuMTggMCAwIDAgMS4xNzEgMS4xNzJoMTMuMTYzYTEuMTcyIDEuMTcyIDAgMSAwIDAtMi4zNDRIMTIuMTE5YTEuMTcgMS4xNyAwIDAgMC0xLjE3MiAxLjE3Mm03LjI5NCAxNC43NjZhMS4xNyAxLjE3IDAgMCAwLTEuMTcyLTEuMTcySDEyLjEyYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNC45NTFhMS4xNyAxLjE3IDAgMCAwIDEuMTcyLTEuMTcybS44Ni03LjM5MWExLjE3IDEuMTcgMCAwIDAtMS4xNzItMS4xNzJoLTUuODExYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNS44MWExLjE2NCAxLjE2NCAwIDAgMCAxLjE3My0xLjE3MSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwQjdCQyIgZD0ibTMzLjUzMiAxNi4zOTcgNC4yODktNC4yODkgMy43NTggMy43MSAxLjYxNy0xLjYxNiAyLjI1OCAyLjI1N2MuMjE4LjIxOC4zNC41MTMuMzQzLjgyLS4wMDIuMzExLS4xMjUuNjA4LS4zNDQuODNsLTYuODA0IDYuNzk2YTEuMTMgMS4xMyAwIDAgMS0uODI4LjM0MyAxLjE1IDEuMTUgMCAwIDEtLjgyOC0uMzQzIDEuMTggMS4xOCAwIDAgMSAwLTEuNjU3bDUuOTc2LTUuOTY4LTEuMzEyLTEuMzEzLTEuMzgzIDEuNDE0LTEzLjE0OSAxMy4xMjUtNC42MTcuNzgyLjc4Mi00LjYxNy4zMzYtLjMzNyAyLjU2MiAyLjU1NWExLjEgMS4xIDAgMCAwIC44MjguMzQ0Yy4zMTIuMDA1LjYxMi0uMTIuODI4LS4zNDRhMS4xOCAxLjE4IDAgMCAwIDAtMS42NTZsLTIuNTYyLTIuNTYyek00NC43MzYgMTIuMjRjMCAuNDE0LS4xNjMuODEtLjQ1NCAxLjEwMmwtLjkyMi45MTQtMy44NTItMy44MjguOTMtLjkzYTEuNTYzIDEuNTYzIDAgMCAxIDIuMjAzIDBsMS42NCAxLjY0MWMuMjkxLjI5My40NTUuNjkuNDU1IDEuMTAyIi8+PC9zdmc+"},"displayName":"n8n Form Trigger","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1235,"icon":"file:extractFromFile.svg","name":"n8n-nodes-base.extractFromFile","codex":{"data":{"alias":["CSV","Spreadsheet","Excel","xls","xlsx","ods","tabular","decode","decoding","Move Binary Data","Binary","File","PDF","JSON","HTML","ICS","iCal","txt","Text","RTF","XML","64","Base64","Convert"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Files","Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Extract from File"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuOTM3NSAyQzAuNDE5NzMzIDIgMCAyLjQxOTczIDAgMi45Mzc1VjM3LjMyMjFDMCAzNy44Mzk5IDAuNDE5NzMzIDM4LjI1OTYgMC45Mzc1IDM4LjI1OTZIMjYuMjE1NEMyNi43MzMyIDM4LjI1OTYgMjcuMTUyOSAzNy44Mzk5IDI3LjE1MjkgMzcuMzIyMUwyNy4xNTI5IDMwLjY3MTlMMTYuNzk2OSAzMC42NzE5QzE0Ljg5ODQgMzAuNjcxOSAxMy4zNTk0IDI5LjEzMjkgMTMuMzU5NCAyNy4yMzQ0VjI1LjM1OTRDMTMuMzU5NCAyMy40NjA5IDE0Ljg5ODQgMjEuOTIxOSAxNi43OTY5IDIxLjkyMTlIMjcuMTUyOUwyNy4xNTI5IDE1Ljc4MjFIMTQuMzA4M0MxMy43OTA2IDE1Ljc4MjEgMTMuMzcwOCAxNS4zNjI0IDEzLjM3MDggMTQuODQ0NlYySDAuOTM3NVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTE2LjAyNzEgMkMxNS45NDA4IDIgMTUuODcwOCAyLjA2OTk2IDE1Ljg3MDggMi4xNTYyNVYxMi44MTM0QzE1Ljg3MDggMTMuMDcyMyAxNi4wODA3IDEzLjI4MjEgMTYuMzM5NiAxMy4yODIxSDI2Ljk5NjdDMjcuMDgzIDEzLjI4MjEgMjcuMTUyOSAxMy4yMTIyIDI3LjE1MjkgMTMuMTI1OUwyNy4xNTI5IDEyLjYxNzFDMjcuMTUyOSAxMi4zNjg4IDI3LjA1NDUgMTIuMTMwNyAyNi44NzkxIDExLjk1NUwxNy4yMjI1IDIuMjc1MzhDMTcuMDQ2NiAyLjA5OTA4IDE2LjgwNzkgMiAxNi41NTg4IDJIMTYuMDI3MVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTI5Ljc2NDIgMzQuNjUwM0MyOS4wMzQgMzMuOTE2IDI5LjAzNzQgMzIuNzI4OCAyOS43NzE2IDMxLjk5ODZMMzMuNjE5NyAyOC4xNzE5TDE2Ljc5NjkgMjguMTcxOUMxNi4yNzkxIDI4LjE3MTkgMTUuODU5NCAyNy43NTIxIDE1Ljg1OTQgMjcuMjM0NFYyNS4zNTk0QzE1Ljg1OTQgMjQuODQxNiAxNi4yNzkxIDI0LjQyMTkgMTYuNzk2OSAyNC40MjE5TDMzLjU0MTIgMjQuNDIxOUwyOS43NzE2IDIwLjY3MzNDMjkuMDM3NCAxOS45NDMxIDI5LjAzNCAxOC43NTU5IDI5Ljc2NDIgMTguMDIxNkMzMC40OTQ0IDE3LjI4NzQgMzEuNjgxNiAxNy4yODQgMzIuNDE1OSAxOC4wMTQyTDM5LjQ0NzEgMjUuMDA2NEMzOS44MDEgMjUuMzU4MyA0MCAyNS44MzY4IDQwIDI2LjMzNTlDNDAgMjYuODM1IDM5LjgwMSAyNy4zMTM1IDM5LjQ0NzEgMjcuNjY1NUwzMi40MTU5IDM0LjY1NzZDMzEuNjgxNiAzNS4zODc4IDMwLjQ5NDQgMzUuMzg0NSAyOS43NjQyIDM0LjY1MDNaIiBmaWxsPSIjMzUzRjZFIi8+Cjwvc3ZnPgo="},"displayName":"Extract from File","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1315,"icon":"fa:table","name":"n8n-nodes-base.dataTable","codex":{"data":{"alias":["data","table","knowledge","data table","table","sheet","database","data base","mysql","postgres","postgresql","airtable","supabase","noco","notion"],"details":"Data table","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/"}]},"categories":["Core Nodes","Development"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\",\"transform\"]","defaults":{"name":"Data table"},"iconData":{"icon":"table","type":"icon"},"displayName":"Data table","typeVersion":1,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":34,"name":"Invoice Processing"},{"id":49,"name":"AI Summarization"}],"image":[]}}