{"workflow":{"id":14146,"name":"Flag duplicate and risky AP invoices with Gmail, OpenAI and Supabase","views":2,"recentViews":0,"totalViews":2,"createdAt":"2026-03-18T11:13:56.634Z","description":"## 🚀 How it works\n\n  Monitors your AP inbox for incoming invoices, extracts structured data\n  with AI, runs duplicate and vendor history checks against Supabase, then\n  scores each invoice for fraud risk — routing suspicious ones to Slack\n  and your AP team before any payment is processed.\n\n  - 📬 Gmail Trigger monitors your accounts payable inbox in real time\n  - 🤖 AI Agent extracts invoice number, vendor, amount, currency, dates\n    and line items into structured JSON — no manual data entry\n  - 🔍 Checks Supabase for duplicate invoice numbers already in the system\n  - 🏢 Checks vendor payment history — flags unknown vendors and amount\n    deviations above 50% from the vendor's historical average\n  - 🧠 Second AI Agent scores fraud risk: **low / medium / high / critical**\n    with specific fraud indicators and a recommended action\n  - 🚨 **High/critical risk** — posts a detailed Slack alert to `#invoice-alerts`\n    and emails your AP manager with a hold notice\n  - 🗄️  Logs every processed invoice to Supabase with risk score and status\n\n  ## 🛠️  Set up steps\n\n  **Estimated setup time: ~20 minutes**\n\n  1. **Gmail Trigger** — connect Gmail OAuth2; point it at your AP inbox\n  2. **OpenAI** — connect OpenAI API credential (used by both AI Agent nodes)\n  3. **Supabase** — connect Supabase API credential; create two tables:\n     `invoices` (invoice_number, vendor_name, amount, status, risk_level, created_at)\n     and `vendors` (vendor_name, avg_amount, total_invoices, flagged)\n  4. **Slack** — connect Slack OAuth2; update the channel name `#invoice-alerts`\n  5. **Gmail (Send)** — connect Gmail OAuth2; replace `ap-manager@example.com`\n  6. Follow the sticky notes inside the workflow for per-node guidance\n\n  ## 📋 Prerequisites\n\n  - Gmail account receiving invoices\n  - OpenAI API key (GPT-4o)\n  - Supabase project with `invoices` and `vendors` tables\n  - Slack workspace with an alerts channel\n## Custom Workflow Request with Personal Dashboard\n\nkumar@smartflowcraft.com\n\nhttps://www.smartflowcraft.com/contact\n\n### More free templates\nhttps://www.smartflowcraft.com/n8n-templates","workflow":{"meta":{"instanceId":"22fdca31d9968d6f06af303ef9be6a073b9af5f54fda4c07e35417e4d15e704f","templateCredsSetupCompleted":true},"nodes":[{"id":"0ae5c983-ad78-4eb6-8f0e-dfbac8737338","name":"Overview","type":"n8n-nodes-base.stickyNote","position":[26176,7232],"parameters":{"color":7,"width":700,"height":356,"content":"## AP Invoice Fraud Detection\nVersion 1.0.0 — Finance\n\nProcesses incoming invoices from Gmail, extracts structured data with AI, checks Supabase for duplicate invoice numbers, validates vendor payment history, runs a risk assessment, and routes high-risk invoices to a Slack alert before logging all decisions.\n\nFlow: Gmail Trigger => Extract Invoice Data (AI Agent) => Check Duplicates (Supabase) => Count Duplicates (Code) => Check Vendor History (Supabase) => Merge All Context (Code) => Assess Fraud Risk (AI Agent) => High Risk? (IF) => Alert Slack + Log => Log to Supabase"},"typeVersion":1},{"id":"01b77a2c-55b4-41da-964c-e1947d447530","name":"Prerequisites","type":"n8n-nodes-base.stickyNote","position":[26880,7248],"parameters":{"color":5,"width":420,"height":344,"content":"## Prerequisites\n- Gmail account receiving invoices (Gmail OAuth2 credential)\n- OpenAI API key (GPT-4o)\n- Supabase project with two tables:\n  - invoices: invoice_number, vendor_name, amount, status, created_at\n  - vendors: vendor_name, total_invoices, avg_amount, last_invoice_date, flagged\n- Slack workspace and channel for fraud alerts (Slack OAuth2 or Bot Token)\n- Gmail for sending hold notifications (reuse same credential)"},"typeVersion":1},{"id":"4688febd-754b-45f3-ba5a-8e71073b0719","name":"Setup Required","type":"n8n-nodes-base.stickyNote","position":[27312,7248],"parameters":{"color":3,"width":420,"height":344,"content":"## Setup Required\n1. Gmail Trigger — connect Gmail OAuth2 credential\n2. Extract Invoice Data — connect OpenAI credential\n3. Check Duplicates + Check Vendor History — connect Supabase API credential, update table names\n4. Assess Fraud Risk — connect OpenAI credential\n5. Alert Slack — connect Slack credential, update #invoice-alerts channel name\n6. Send Hold Notice — connect Gmail OAuth2 credential, update your AP manager email\n7. Log Invoice + Log Fraud Flag — connect Supabase API credential"},"typeVersion":1},{"id":"966be176-d977-4cb1-ae2b-43a70082f232","name":"How It Works","type":"n8n-nodes-base.stickyNote","position":[26192,7600],"parameters":{"color":4,"width":500,"height":520,"content":"## How It Works\n1. Gmail Trigger detects new invoice emails (attach PDF or include invoice details in body)\n2. AI Agent extracts: invoice number, vendor, amount, invoice date, due date, line items\n3. Supabase checked for duplicate invoice numbers — Count Duplicates Code node prevents item multiplication\n4. Supabase checked for vendor payment history — Merge All Context Code node consolidates everything\n5. Second AI Agent scores fraud risk (low/medium/high/critical) with reasoning\n6. IF risk >= high: post Slack alert + send hold notice to AP team via email\n7. Invoice logged to Supabase invoices table regardless of risk outcome"},"typeVersion":1},{"id":"6327f8eb-6f67-4d01-ab54-46a95fc9110d","name":"Gmail — Invoice Inbox","type":"n8n-nodes-base.gmailTrigger","position":[26448,8016],"parameters":{"filters":{"includeSpamTrash":false},"pollTimes":{"item":[{"mode":"everyMinute"}]}},"typeVersion":1.2},{"id":"7310c22e-85cd-408d-ab0c-c9bb78448ec9","name":"Extract note","type":"n8n-nodes-base.stickyNote","position":[26704,7888],"parameters":{"width":238,"height":80,"content":"AI extracts structured invoice data from email subject, body, and attachments"},"typeVersion":1},{"id":"b25edce2-2aa5-42a0-9d37-bcc68978cba2","name":"Extract Invoice Data","type":"@n8n/n8n-nodes-langchain.agent","position":[26704,8016],"parameters":{"text":"=Extract all invoice data from this email.\n\nFrom: {{ $json.from }}\nSubject: {{ $json.subject }}\nBody: {{ $json.text || $json.snippet }}\n\nExtract the invoice number, vendor/supplier name, total amount (as a number), currency, invoice date, due date, and a list of line items if visible. If any field is not present, use null.","options":{"systemMessage":"You are an accounts payable assistant. Extract structured invoice data precisely from email content. Invoice numbers typically follow patterns like INV-12345, 2024-001, or similar. Amounts should be numeric only (no currency symbols). Dates should be ISO 8601 format (YYYY-MM-DD). If the email does not appear to be an invoice, set is_invoice to false.","returnIntermediateSteps":false},"promptType":"define","hasOutputParser":true},"typeVersion":1.8},{"id":"d6d79de4-0bec-4773-913e-56e0729d0b9d","name":"OpenAI — Extract","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[26592,8208],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o"},"options":{"temperature":0}},"typeVersion":1.2},{"id":"ead44960-92f3-469c-96fb-37fbff3ed761","name":"Invoice Data Schema","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[26896,8208],"parameters":{"schemaType":"manual","inputSchema":"{\"type\":\"object\",\"properties\":{\"invoice_number\":{\"type\":\"string\"},\"vendor_name\":{\"type\":\"string\"},\"amount\":{\"type\":\"number\"},\"currency\":{\"type\":\"string\"},\"invoice_date\":{\"type\":\"string\"},\"due_date\":{\"type\":\"string\"},\"line_items\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"is_invoice\":{\"type\":\"boolean\"}},\"required\":[\"invoice_number\",\"vendor_name\",\"amount\",\"currency\",\"is_invoice\"]}"},"typeVersion":1.2},{"id":"d121a56a-10dc-4717-9fcd-bce791f9f6c8","name":"Duplicates note","type":"n8n-nodes-base.stickyNote","position":[26976,7888],"parameters":{"width":228,"height":80,"content":"Queries invoices table for existing records with same invoice number"},"typeVersion":1},{"id":"6cfe2bca-abc4-487b-afa4-a703a4872c51","name":"Check Duplicates","type":"n8n-nodes-base.supabase","onError":"continueErrorOutput","maxTries":3,"position":[27024,8016],"parameters":{"filters":{"conditions":[{"keyName":"invoice_number","keyValue":"={{ $json.output.invoice_number }}","condition":"eq"}]},"tableId":"invoices","operation":"getAll","returnAll":true},"retryOnFail":true,"typeVersion":1,"waitBetweenTries":2000},{"id":"29b2c5f3-d98d-4591-a0e4-0f160a7bed70","name":"Count Dup note","type":"n8n-nodes-base.stickyNote","position":[27232,7888],"parameters":{"width":255,"height":96,"content":"Consolidates duplicate rows into a single item, counts matches"},"typeVersion":1},{"id":"28c6a089-8fa9-4f07-9fc8-ddff34d2464d","name":"Count Duplicates","type":"n8n-nodes-base.code","position":[27264,8000],"parameters":{"jsCode":"const dupRows = $input.all();\nconst invoice = $('Extract Invoice Data').first().json.output || {};\nreturn [{ json: {\n  ...invoice,\n  duplicate_count: dupRows.filter(r => !r.json.error).length\n}}];"},"typeVersion":2},{"id":"6f4b34db-9590-4e01-bf44-1ae1974f24ed","name":"Vendor note","type":"n8n-nodes-base.stickyNote","position":[27504,7840],"parameters":{"width":260,"height":60,"content":"Queries vendor history to detect unusual amounts or flagged suppliers"},"typeVersion":1},{"id":"ff913bf0-34d6-421f-a56b-154d50a1a2f4","name":"Check Vendor History","type":"n8n-nodes-base.supabase","onError":"continueErrorOutput","maxTries":3,"position":[27488,8000],"parameters":{"filters":{"conditions":[{"keyName":"vendor_name","keyValue":"={{ $json.vendor_name }}","condition":"eq"}]},"tableId":"vendors","operation":"getAll","returnAll":true},"retryOnFail":true,"typeVersion":1,"waitBetweenTries":2000},{"id":"aea77465-e803-45f8-bdf4-342b9aeb5040","name":"Merge Context note","type":"n8n-nodes-base.stickyNote","position":[27776,7888],"parameters":{"width":238,"height":80,"content":"Merges invoice data, duplicate count, and vendor history into one item for risk assessment"},"typeVersion":1},{"id":"574222db-ff63-48e2-b976-5671565b6084","name":"Merge All Context","type":"n8n-nodes-base.code","position":[27808,7984],"parameters":{"jsCode":"const vendorRows = $input.all();\nconst invoiceCtx = $('Count Duplicates').first().json;\nconst vendors = vendorRows.filter(r => !r.json.error).map(r => r.json);\nconst vendor = vendors[0] || null;\nreturn [{ json: {\n  ...invoiceCtx,\n  vendor_known: !!vendor,\n  vendor_avg_amount: vendor ? vendor.avg_amount : null,\n  vendor_flagged: vendor ? (vendor.flagged || false) : false,\n  vendor_total_invoices: vendor ? vendor.total_invoices : 0,\n  vendor_last_invoice_date: vendor ? vendor.last_invoice_date : null,\n  amount_deviation_pct: vendor && vendor.avg_amount > 0\n    ? Math.round(((invoiceCtx.amount - vendor.avg_amount) / vendor.avg_amount) * 100)\n    : null\n}}];"},"typeVersion":2},{"id":"df6a0c96-f5e7-4d88-921c-e7a2c1ccb8fc","name":"Risk note","type":"n8n-nodes-base.stickyNote","position":[28032,7872],"parameters":{"width":254,"height":80,"content":"AI Agent scores fraud risk using duplicate count, vendor history, and amount deviation"},"typeVersion":1},{"id":"0732a5a9-3f99-45f8-be98-98a153e49537","name":"Assess Fraud Risk","type":"@n8n/n8n-nodes-langchain.agent","position":[28000,7984],"parameters":{"text":"=Assess the fraud risk for this invoice.\n\nInvoice Number: {{ $json.invoice_number }}\nVendor: {{ $json.vendor_name }}\nAmount: {{ $json.amount }} {{ $json.currency }}\nInvoice Date: {{ $json.invoice_date }}\nDue Date: {{ $json.due_date }}\n\nDuplicate Invoice Count (same number already in system): {{ $json.duplicate_count }}\nVendor Known in System: {{ $json.vendor_known }}\nVendor Previously Flagged: {{ $json.vendor_flagged }}\nVendor Average Invoice Amount: {{ $json.vendor_avg_amount }}\nAmount Deviation from Vendor Average: {{ $json.amount_deviation_pct }}%\nVendor Total Historical Invoices: {{ $json.vendor_total_invoices }}\n\nEvaluate the risk of fraud or payment error and provide a risk score and recommended action.","options":{"systemMessage":"You are an accounts payable fraud detection specialist. Evaluate invoices for: duplicate submissions, amounts significantly above vendor average (>50% deviation = high risk, >100% = critical), unknown vendors, previously flagged vendors, or suspicious timing patterns. Risk levels: low = approve automatically, medium = flag for review, high = hold pending approval, critical = block and escalate immediately. Always provide clear reasoning.","returnIntermediateSteps":false},"promptType":"define","hasOutputParser":true},"typeVersion":1.8},{"id":"46f49aa4-9f06-4f05-9124-dbc59982bd32","name":"OpenAI — Risk","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[27776,8224],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o"},"options":{"temperature":0}},"typeVersion":1.2},{"id":"4a9e9a7d-cde5-459d-945c-fb7715e3996d","name":"Fraud Risk Schema","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[28240,8256],"parameters":{"schemaType":"manual","inputSchema":"{\"type\":\"object\",\"properties\":{\"risk_level\":{\"type\":\"string\",\"enum\":[\"low\",\"medium\",\"high\",\"critical\"]},\"risk_score\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":100},\"fraud_indicators\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"reasoning\":{\"type\":\"string\"},\"recommended_action\":{\"type\":\"string\"},\"requires_hold\":{\"type\":\"boolean\"}},\"required\":[\"risk_level\",\"risk_score\",\"fraud_indicators\",\"reasoning\",\"recommended_action\",\"requires_hold\"]}"},"typeVersion":1.2},{"id":"d4f636eb-510b-4bc2-8b25-2a6686932d95","name":"High Risk note","type":"n8n-nodes-base.stickyNote","position":[28304,7856],"parameters":{"width":244,"height":80,"content":"Routes to Slack alert path if risk requires hold, otherwise logs directly"},"typeVersion":1},{"id":"c5def029-6c26-4e86-95d1-c450028478ea","name":"High Risk?","type":"n8n-nodes-base.if","position":[28336,7984],"parameters":{"options":{},"conditions":{"options":{"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"cond-risk","operator":{"type":"boolean","operation":"equal"},"leftValue":"={{ $json.output.requires_hold }}","rightValue":true}]}},"typeVersion":2.2},{"id":"8384f3aa-f4ff-4c7f-931c-be290d9c6e8d","name":"Slack note","type":"n8n-nodes-base.stickyNote","position":[28560,7776],"parameters":{"width":207,"height":80,"content":"Posts fraud alert to #invoice-alerts Slack channel with full details"},"typeVersion":1},{"id":"fcae28cd-d96f-436f-849a-c37bd5fbc992","name":"Alert Slack","type":"n8n-nodes-base.slack","onError":"continueErrorOutput","maxTries":3,"position":[28592,7936],"webhookId":"605a0258-db6f-478d-91e0-08c4129f372f","parameters":{"text":"=*FRAUD ALERT — {{ $('Merge All Context').first().json.risk_level.toUpperCase() }} RISK*\n\n*Invoice:* {{ $('Merge All Context').first().json.invoice_number }}\n*Vendor:* {{ $('Merge All Context').first().json.vendor_name }}\n*Amount:* {{ $('Merge All Context').first().json.amount }} {{ $('Merge All Context').first().json.currency }}\n*Risk Score:* {{ $json.output.risk_score }}/100\n\n*Fraud Indicators:*\n{{ $json.output.fraud_indicators.join('\\n') }}\n\n*Reasoning:* {{ $json.output.reasoning }}\n\n*Recommended Action:* {{ $json.output.recommended_action }}","otherOptions":{}},"retryOnFail":true,"typeVersion":2.2,"waitBetweenTries":2000},{"id":"eb9876b9-9d8e-4b33-970a-44f4127c5ccc","name":"Send Hold Notice","type":"n8n-nodes-base.gmail","onError":"continueErrorOutput","maxTries":3,"position":[28832,7856],"webhookId":"2e832556-1608-4dfe-bf4e-97ecaf75d300","parameters":{"sendTo":"user@example.com","message":"=<h2>Invoice Flagged for Review</h2><p>The following invoice has been placed on hold pending your approval.</p><table border='1' cellpadding='6' style='border-collapse:collapse'><tr><td><b>Invoice Number</b></td><td>{{ $('Merge All Context').first().json.invoice_number }}</td></tr><tr><td><b>Vendor</b></td><td>{{ $('Merge All Context').first().json.vendor_name }}</td></tr><tr><td><b>Amount</b></td><td>{{ $('Merge All Context').first().json.amount }} {{ $('Merge All Context').first().json.currency }}</td></tr><tr><td><b>Risk Level</b></td><td>{{ $('Assess Fraud Risk').first().json.output.risk_level.toUpperCase() }}</td></tr><tr><td><b>Risk Score</b></td><td>{{ $('Assess Fraud Risk').first().json.output.risk_score }}/100</td></tr></table><p><b>Fraud Indicators:</b><br>{{ $('Assess Fraud Risk').first().json.output.fraud_indicators.join('<br>') }}</p><p><b>Reasoning:</b> {{ $('Assess Fraud Risk').first().json.output.reasoning }}</p><p><b>Recommended Action:</b> {{ $('Assess Fraud Risk').first().json.output.recommended_action }}</p>","options":{},"subject":"=Invoice Hold — {{ $('Merge All Context').first().json.invoice_number }} from {{ $('Merge All Context').first().json.vendor_name }} ({{ $('Merge All Context').first().json.risk_level.toUpperCase() }} RISK)"},"retryOnFail":true,"typeVersion":2.1,"waitBetweenTries":2000},{"id":"e71db94f-fd18-4672-a665-f46ee1ca26d5","name":"Log Invoice note","type":"n8n-nodes-base.stickyNote","position":[29056,8000],"parameters":{"width":255,"height":60,"content":"Logs every processed invoice to Supabase for record keeping"},"typeVersion":1},{"id":"d056425b-4ac9-472c-b719-43a48f620c00","name":"Log Invoice to Supabase","type":"n8n-nodes-base.supabase","onError":"continueErrorOutput","maxTries":3,"position":[29120,8112],"parameters":{"operation":"insert"},"retryOnFail":true,"typeVersion":1,"waitBetweenTries":2000}],"pinData":{},"connections":{"High Risk?":{"main":[[{"node":"Alert Slack","type":"main","index":0}],[{"node":"Log Invoice to Supabase","type":"main","index":0}]]},"Alert Slack":{"main":[[{"node":"Send Hold Notice","type":"main","index":0}]]},"OpenAI — Risk":{"ai_languageModel":[[{"node":"Assess Fraud Risk","type":"ai_languageModel","index":0}]]},"Check Duplicates":{"main":[[{"node":"Count Duplicates","type":"main","index":0}]]},"Count Duplicates":{"main":[[{"node":"Check Vendor History","type":"main","index":0}]]},"Send Hold Notice":{"main":[[{"node":"Log Invoice to Supabase","type":"main","index":0}]]},"Assess Fraud Risk":{"main":[[{"node":"High Risk?","type":"main","index":0}]]},"Fraud Risk Schema":{"ai_outputParser":[[{"node":"Assess Fraud Risk","type":"ai_outputParser","index":0}]]},"Merge All Context":{"main":[[{"node":"Assess Fraud Risk","type":"main","index":0}]]},"OpenAI — Extract":{"ai_languageModel":[[{"node":"Extract Invoice Data","type":"ai_languageModel","index":0}]]},"Invoice Data Schema":{"ai_outputParser":[[{"node":"Extract Invoice Data","type":"ai_outputParser","index":0}]]},"Check Vendor History":{"main":[[{"node":"Merge All Context","type":"main","index":0}]]},"Extract Invoice Data":{"main":[[{"node":"Check Duplicates","type":"main","index":0}]]},"Gmail — Invoice Inbox":{"main":[[{"node":"Extract Invoice Data","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":28,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.supabase":{"count":3},"n8n-nodes-base.stickyNote":{"count":13},"n8n-nodes-base.gmailTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":2},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":2},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"Kumar SmartFlow Craft","username":"smartflowautomate","bio":"Founder of SmartFlowCraft — an AI agent platform for deploying production-ready automation for sales, support, and content ops. I build n8n workflow templates for real B2B use cases: SDR pipelines, churn detection, \n  multi-agent orchestration, content repurposing, and revenue operations.","verified":true,"links":["https://www.smartflowcraft.com/"],"avatar":"https://gravatar.com/avatar/da2267caca3c05aef7c35ee3394094a845dd4b2d1696e5e455c8bf5e9ce8f1c6?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":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"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/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/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/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"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":545,"icon":"file:supabase.svg","name":"n8n-nodes-base.supabase","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.supabase/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/supabase/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Supabase"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDkiIGhlaWdodD0iMTEzIiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSJ1cmwoI2EpIiBkPSJNNjMuNzA4IDExMC4yODRjLTIuODYgMy42MDEtOC42NTggMS42MjgtOC43MjctMi45N2wtMS4wMDctNjcuMjUxaDQ1LjIyYzguMTkgMCAxMi43NTggOS40NiA3LjY2NSAxNS44NzR6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZmlsbC1vcGFjaXR5PSIuMiIgZD0iTTYzLjcwOCAxMTAuMjg0Yy0yLjg2IDMuNjAxLTguNjU4IDEuNjI4LTguNzI3LTIuOTdsLTEuMDA3LTY3LjI1MWg0NS4yMmM4LjE5IDAgMTIuNzU4IDkuNDYgNy42NjUgMTUuODc0eiIvPjxwYXRoIGZpbGw9IiMzRUNGOEUiIGQ9Ik00NS4zMTcgMi4wNzFjMi44Ni0zLjYwMSA4LjY1Ny0xLjYyOCA4LjcyNiAyLjk3bC40NDIgNjcuMjUxSDkuODNjLTguMTkgMC0xMi43NTktOS40Ni03LjY2NS0xNS44NzV6Ii8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iNTMuOTc0IiB4Mj0iOTQuMTYzIiB5MT0iNTQuOTc0IiB5Mj0iNzEuODI5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzI0OTM2MSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNFQ0Y4RSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMzYuMTU2IiB4Mj0iNTQuNDg0IiB5MT0iMzAuNTc4IiB5Mj0iNjUuMDgxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3AvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+"},"displayName":"Supabase","typeVersion":1,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"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":824,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmailTrigger","codex":{"data":{"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/trigger-nodes/n8n-nodes-base.gmailtrigger/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"Gmail Trigger"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail Trigger","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"}]},{"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":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"}]}],"categories":[{"id":34,"name":"Invoice Processing"},{"id":49,"name":"AI Summarization"}],"image":[]}}