{
  "workflow": {
    "id": 9436,
    "name": "Auto-extract & approve invoices with OpenAI, Jotform - fraud detection",
    "views": 175,
    "recentViews": 0,
    "totalViews": 175,
    "createdAt": "2025-10-09T18:54:18.753Z",
    "description": "Transform accounts payable from a manual bottleneck into an intelligent, automated system that reads invoices, detects fraud, and processes payments automatically—saving 20+ hours per week while preventing costly fraudulent payments.\n\n## 🎯 What This Workflow Does\n\nAutomates the complete invoice-to-payment cycle with advanced AI:\n\n1. **📧 Check Invoices from Jotform** - Monitor Jotform for Invoice Submission\n2. **🤖 AI-Powered OCR** - Extracts ALL data from PDFs and images (vendor, amounts, line items, dates, tax)\n3. **🚨 Fraud Detection Engine** - Analyzes 15+ fraud patterns: duplicates, anomalies, suspicious vendors, document quality\n4. **🚦 Intelligent Routing** - Auto-routes based on AI risk assessment:\n   - **Critical Fraud (Risk 80-100)**: Block → Slack alert → CFO investigation\n   - **Manager Review (&gt;$5K or Medium Risk)**: Approval workflow with full analysis\n   - **Auto-Approve (&lt;$5K + Low Risk)**: Instant → QuickBooks → Vendor notification\n5. **📊 Complete Audit Trail** - Every decision logged to Google Sheets with AI reasoning\n\n## ✨ Key Features\n\n### Advanced AI Capabilities\n- **Vision-Based OCR**: Reads any invoice format—PDF, scanned images, smartphone photos\n- **99% Extraction Accuracy**: Vendor details, line items, amounts, dates, tax calculations, payment terms\n- **Multi-Dimensional Fraud Detection**:\n  - Duplicate invoice identification (same number, similar amounts)\n  - Amount anomalies (round numbers, threshold gaming, unusually high)\n  - Vendor verification (new vendors, mismatched domains, missing tax IDs)\n  - Document quality scoring (OCR confidence, missing fields, calculation errors)\n  - Timing anomalies (future dates, expired invoices, weekend submissions)\n  - Pattern-based detection (frequent small amounts, vague descriptions, no PO references)\n\n### Intelligent Processing\n- **Risk-Based Scoring**: 0-100 risk score with detailed reasoning\n- **Vendor Trust Ratings**: Build vendor reputation over time\n- **Category Classification**: Auto-categorizes (software, consulting, office supplies, utilities, etc.)\n- **Amount Thresholds**: Configurable auto-approve limits\n- **Human-in-the-Loop**: Critical decisions escalated appropriately\n- **Fast-Track Low Risk**: Process safe invoices in under 60 seconds\n\n### Security & Compliance\n- **Fraud Prevention**: Catch fraudulent invoices before payment\n- **Duplicate Detection**: Prevent double payments automatically\n- **Complete Audit Trail**: Every decision logged with timestamp and reasoning\n- **Role-Based Approvals**: Route to correct approver based on amount and risk\n- **Document Verification**: Quality checks on every invoice\n\n## 💼 Perfect For\n\n- **Finance Teams**: Processing 50-500 invoices per week\n- **CFOs**: Need fraud prevention and spending visibility\n- **Controllers**: Want automated AP with audit compliance\n- **Growing Companies**: Scaling without adding AP headcount\n- **Multi-Location Businesses**: Centralized invoice processing across offices\n- **Fraud-Conscious Organizations**: Healthcare, legal, financial services, government contractors\n\n## 💰 ROI & Business Impact\n\n### Time Savings\n- **90% reduction** in manual data entry time\n- **20-25 hours saved per week** on invoice processing\n- **Same-day turnaround** on all legitimate invoices\n- **Zero data entry errors** with AI extraction\n- **No more lost invoices** - complete tracking\n\n### Fraud Prevention\n- **100% duplicate detection** before payment\n- **Catch suspicious patterns** automatically\n- **Prevent invoice splitting** (gaming approval thresholds)\n- **Identify fake vendors** before payment\n- **Average savings: $50K-$200K annually** in prevented fraud losses\n\n### Process Improvements\n- **24-hour vendor response times** (vs 7-10 days manual)\n- **95%+ payment accuracy** with AI validation\n- **Better cash flow management** via due date tracking\n- **Vendor satisfaction** from transparent, fast processing\n- **Audit-ready** with complete decision trail\n\n## 🔧 Required Integrations\n\n### Core Services\n- **Jotform** - Invoice Submissions\n*Create your form for free on [Jotform using this link](https://www.jotform.com/?partner=mediajade)*\n- **OpenAI API** - GPT-4o-mini for OCR & fraud detection (~$0.03/invoice)\n- **Google Sheets** - Invoice database and analytics (free)\n- **Accounting System** - QuickBooks, Xero, NetSuite, or Sage (via API)\n\n### Optional Add-Ons\n- **Slack** - Real-time fraud alerts and approval requests\n- **Bill.com** - Payment processing automation\n- **Linear/Asana** - Task creation for manual reviews\n- **Expensify/Ramp** - Expense management integration\n\n## 🚀 Quick Setup Guide\n\n### Step 1: Import Template\n1. Copy JSON from artifact\n2. In n8n: **Workflows** → **Import from File** → Paste JSON\n3. Template imports with all nodes and sticky notes\n\n### Step 2: Configure Email Monitoring\n1. Connect Gmail or Outlook account\n2. Update filter: invoices@yourcompany.com (or your AP email)\n3. Test: Send yourself a sample invoice\n\n### Step 3: Add OpenAI API\n1. Get API key: https://platform.openai.com/api-keys\n2. Add to both AI nodes (OCR + Fraud Detection)\n3. Cost: ~$0.03 per invoice processed\n\n### Step 4: Connect Accounting System\n1. Get API credentials from QuickBooks/Xero/NetSuite\n2. Configure HTTP Request node with your endpoint\n3. Map invoice fields to your GL codes\n\n### Step 5: Setup Approval Workflows\n1. Update email addresses (finance-manager@yourcompany.com)\n2. Configure Slack webhook (optional)\n3. Set approval thresholds ($5K default, customize as needed)\n\n### Step 6: Create Google Sheet Database\nCreate spreadsheet with columns:",
    "workflow": {
      "id": "KMgt49BPco6oE5Xj",
      "meta": {
        "instanceId": "277842713620d9f5554de3b1518b865a152c8c4db680008bd8aec536fc18b4a8"
      },
      "name": "Auto-Extract & Approve Invoices with OpenAI, Jotform - Fraud Detection",
      "tags": [
        {
          "id": "TDW7E4RVCMchXf5b",
          "name": "published",
          "createdAt": "2025-10-13T01:18:01.305Z",
          "updatedAt": "2025-10-13T01:18:01.305Z"
        }
      ],
      "nodes": [
        {
          "id": "2855123e-800d-426d-9adc-35b4fcbbbd65",
          "name": "Has Invoice Attachment?",
          "type": "n8n-nodes-base.if",
          "position": [
            -1264,
            256
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "caseSensitive": false
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "has-attachment",
                  "operator": {
                    "type": "boolean",
                    "operation": "true"
                  },
                  "leftValue": "={{ $json.attachments?.length > 0 }}",
                  "rightValue": true
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "6177f958-e010-426b-8d7a-1d9f2966eaed",
          "name": "Extract Invoice Attachments",
          "type": "n8n-nodes-base.code",
          "position": [
            -736,
            192
          ],
          "parameters": {
            "jsCode": "const items = $input.all();\nconst results = [];\n\nfor (const item of items) {\n  const attachments = item.json.attachments || [];\n  \n  // Filter for PDF and image attachments (common invoice formats)\n  const invoiceAttachments = attachments.filter(att => {\n    const name = att.filename?.toLowerCase() || '';\n    return name.endsWith('.pdf') || \n           name.endsWith('.png') || \n           name.endsWith('.jpg') || \n           name.endsWith('.jpeg');\n  });\n  \n  // Process each invoice attachment\n  for (const attachment of invoiceAttachments) {\n    results.push({\n      json: {\n        email_from: item.json.from,\n        email_subject: item.json.subject,\n        email_date: item.json.date,\n        email_id: item.json.id,\n        attachment_name: attachment.filename,\n        attachment_id: attachment.attachmentId,\n        attachment_size: attachment.size,\n        invoice_id: `INV-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n      },\n      binary: {\n        data: item.binary[attachment.attachmentId]\n      }\n    });\n  }\n}\n\nreturn results;"
          },
          "typeVersion": 2
        },
        {
          "id": "49036c5c-fdc0-47d0-8885-63dcd931f2e2",
          "name": "AI Invoice OCR & Extraction",
          "type": "@n8n/n8n-nodes-langchain.openAi",
          "position": [
            -576,
            192
          ],
          "parameters": {
            "modelId": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o-mini"
            },
            "options": {
              "temperature": 0.1
            },
            "messages": {
              "values": [
                {
                  "content": "=You are an expert invoice processing AI. Extract ALL information from this invoice document with perfect accuracy.\n\n**Email Context:**\nFrom: {{ $json.email_from }}\nSubject: {{ $json.email_subject }}\nDate: {{ $json.email_date }}\n\nAnalyze the attached invoice image/PDF and extract complete structured information. Return ONLY valid JSON with this exact structure:\n\n{\n  \"vendor_name\": \"Company Name\",\n  \"vendor_email\": \"vendor@email.com\",\n  \"vendor_address\": \"Full address\",\n  \"vendor_tax_id\": \"Tax/VAT ID if present\",\n  \"invoice_number\": \"INV-12345\",\n  \"invoice_date\": \"YYYY-MM-DD\",\n  \"due_date\": \"YYYY-MM-DD\",\n  \"po_number\": \"PO number if referenced\",\n  \"currency\": \"USD\",\n  \"line_items\": [\n    {\n      \"description\": \"Item description\",\n      \"quantity\": 1,\n      \"unit_price\": 100.00,\n      \"total\": 100.00\n    }\n  ],\n  \"subtotal\": 100.00,\n  \"tax_amount\": 8.00,\n  \"tax_rate\": 8.0,\n  \"shipping\": 0.00,\n  \"total_amount\": 108.00,\n  \"payment_terms\": \"Net 30\",\n  \"notes\": \"Any special notes or terms\",\n  \"bank_details\": \"Bank account information if present\",\n  \"invoice_category\": \"software|hardware|services|consulting|office_supplies|utilities|marketing|travel|other\",\n  \"confidence_score\": 0.95\n}\n\nIMPORTANT:\n- Extract exact amounts with 2 decimal places\n- Use YYYY-MM-DD format for dates\n- If information is missing, use null\n- Be extremely accurate with numbers\n- Classify invoice into appropriate category\n- Confidence score 0-1 based on document clarity"
                }
              ]
            }
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.8
        },
        {
          "id": "e82f7d85-e1d2-408b-a3ce-b5e12993763d",
          "name": "Parse Invoice Data",
          "type": "n8n-nodes-base.code",
          "position": [
            -288,
            192
          ],
          "parameters": {
            "jsCode": "const items = $input.all();\nconst results = [];\n\nfor (const item of items) {\n  try {\n    // Parse AI response\n    const aiText = item.json.message?.content || item.json.output || '{}';\n    \n    // Clean JSON\n    let cleanJson = aiText.replace(/```json\\n?/g, '').replace(/```\\n?/g, '').trim();\n    const jsonMatch = cleanJson.match(/\\{[\\s\\S]*\\}/);\n    if (jsonMatch) {\n      cleanJson = jsonMatch[0];\n    }\n    \n    const invoiceData = JSON.parse(cleanJson);\n    \n    // Get original email data\n    const originalData = $('Extract Invoice Attachments').item(0).json;\n    \n    results.push({\n      json: {\n        ...originalData,\n        ...invoiceData,\n        parsed_at: new Date().toISOString(),\n        processing_status: 'extracted'\n      }\n    });\n  } catch (error) {\n    results.push({\n      json: {\n        ...item.json,\n        parsing_error: error.message,\n        processing_status: 'failed'\n      }\n    });\n  }\n}\n\nreturn results;"
          },
          "typeVersion": 2
        },
        {
          "id": "2aedc6f8-75f4-4ae3-a562-39f270728a28",
          "name": "AI Fraud Detection Agent",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            16,
            144
          ],
          "parameters": {
            "text": "=You are a financial fraud detection AI with expertise in identifying invoice anomalies, duplicate submissions, and fraudulent patterns.\n\nAnalyze this invoice for potential fraud, anomalies, or issues:\n\n## INVOICE DETAILS\n**Vendor:** {{ $json.vendor_name }}\n**Invoice Number:** {{ $json.invoice_number }}\n**Date:** {{ $json.invoice_date }}\n**Due Date:** {{ $json.due_date }}\n**Amount:** {{ $json.currency }} {{ $json.total_amount }}\n**Category:** {{ $json.invoice_category }}\n**PO Number:** {{ $json.po_number || 'None' }}\n**Email From:** {{ $json.email_from }}\n\n**Line Items:**\n{{ $json.line_items.map(item => `- ${item.description}: ${item.quantity} × $${item.unit_price} = $${item.total}`).join('\\n') }}\n\n**Payment Terms:** {{ $json.payment_terms }}\n\n---\n\n## FRAUD DETECTION CRITERIA\n\n### Red Flags to Check:\n1. **Duplicate Invoice Detection**\n   - Similar amounts recently processed\n   - Same invoice number from this vendor\n   - Duplicate line item descriptions\n\n2. **Amount Anomalies**\n   - Unusually high amount for vendor/category\n   - Round numbers (possible fake invoices)\n   - Amount just under approval threshold (splitting)\n\n3. **Vendor Verification**\n   - New/unknown vendor\n   - Mismatched email domain vs vendor name\n   - Missing tax ID or business details\n   - Suspicious bank details\n\n4. **Document Quality Issues**\n   - Low confidence score from OCR\n   - Missing critical information\n   - Unprofessional formatting\n   - Mismatched totals or calculations\n\n5. **Timing Anomalies**\n   - Invoice date in future\n   - Very old invoice\n   - Due date already passed\n   - Weekend/holiday invoice dates\n\n6. **Pattern Detection**\n   - Frequent small invoices (just under approval limit)\n   - Vague descriptions (\"consulting services\")\n   - No PO number for large amounts\n   - Rush payment requests\n\n### Category-Specific Checks:\n- **Software/SaaS:** Check if subscription-based, verify renewal dates\n- **Consulting:** Verify hourly rates are reasonable\n- **Travel:** Check dates align with known business trips\n- **Office Supplies:** Verify quantities are reasonable\n\n---\n\n## YOUR ANALYSIS TASK\n\nProvide detailed fraud risk assessment covering:\n\n1. **Overall Risk Level** - critical/high/medium/low with clear reasoning\n\n2. **Specific Red Flags Found** - List all anomalies detected\n\n3. **Vendor Trust Score** - Rate vendor legitimacy (0-100)\n\n4. **Amount Validation** - Is the amount reasonable for this category?\n\n5. **Document Quality Score** - Rate invoice professionalism (0-100)\n\n6. **Duplicate Risk** - Likelihood this is a duplicate submission\n\n7. **Recommended Action** - auto_approve / manager_review / fraud_investigation / reject\n\n8. **Required Verifications** - What should be manually verified\n\n9. **Approval Workflow** - Who should approve based on amount/risk\n\n10. **Priority Level** - urgent / high / normal / low\n\nBe thorough and err on the side of caution. Flag anything suspicious for human review.",
            "options": {},
            "promptType": "define",
            "hasOutputParser": true
          },
          "typeVersion": 2.2
        },
        {
          "id": "d79e193d-8f8e-4f63-bc5d-87af7ebd3e42",
          "name": "OpenAI Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            -16,
            416
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o-mini"
            },
            "options": {
              "temperature": 0.2
            }
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "b07f6e14-d650-4da4-845f-191d76249aa6",
          "name": "Structured Output Parser",
          "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
          "position": [
            176,
            416
          ],
          "parameters": {
            "schemaType": "manual",
            "inputSchema": "{\n  \"type\": \"object\",\n  \"required\": [\n    \"risk_level\",\n    \"risk_score\",\n    \"red_flags\",\n    \"vendor_trust_score\",\n    \"amount_validation\",\n    \"document_quality_score\",\n    \"duplicate_risk\",\n    \"recommended_action\",\n    \"required_verifications\",\n    \"approval_workflow\",\n    \"priority_level\",\n    \"detailed_analysis_markdown\"\n  ],\n  \"properties\": {\n    \"risk_level\": {\n      \"type\": \"string\",\n      \"enum\": [\"critical\", \"high\", \"medium\", \"low\"]\n    },\n    \"risk_score\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 100,\n      \"description\": \"Overall fraud risk score\"\n    },\n    \"red_flags\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"description\": \"List of specific concerns found\"\n    },\n    \"vendor_trust_score\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 100\n    },\n    \"amount_validation\": {\n      \"type\": \"string\",\n      \"description\": \"Is amount reasonable? Details\"\n    },\n    \"document_quality_score\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 100\n    },\n    \"duplicate_risk\": {\n      \"type\": \"string\",\n      \"enum\": [\"none\", \"low\", \"medium\", \"high\", \"confirmed\"]\n    },\n    \"recommended_action\": {\n      \"type\": \"string\",\n      \"enum\": [\"auto_approve\", \"manager_review\", \"cfo_approval\", \"fraud_investigation\", \"reject\"]\n    },\n    \"required_verifications\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"}\n    },\n    \"approval_workflow\": {\n      \"type\": \"string\",\n      \"description\": \"Who should approve\"\n    },\n    \"priority_level\": {\n      \"type\": \"string\",\n      \"enum\": [\"urgent\", \"high\", \"normal\", \"low\"]\n    },\n    \"detailed_analysis_markdown\": {\n      \"type\": \"string\",\n      \"description\": \"Full analysis in markdown\"\n    }\n  }\n}"
          },
          "typeVersion": 1.3
        },
        {
          "id": "5f940f8a-f146-4438-b87d-e85b294095bb",
          "name": "Critical Fraud Risk?",
          "type": "n8n-nodes-base.if",
          "position": [
            400,
            96
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {},
              "combinator": "or",
              "conditions": [
                {
                  "id": "critical-risk",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.output.risk_level }}",
                  "rightValue": "critical"
                },
                {
                  "id": "fraud-investigation",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.output.recommended_action }}",
                  "rightValue": "fraud_investigation"
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "7ca0fa2f-183d-41fb-b654-bd39481ffc99",
          "name": "Auto-Approve Eligible?",
          "type": "n8n-nodes-base.if",
          "position": [
            416,
            352
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {},
              "combinator": "and",
              "conditions": [
                {
                  "id": "auto-approve",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.output.recommended_action }}",
                  "rightValue": "auto_approve"
                },
                {
                  "id": "low-risk-YOUR_OPENAI_KEY_HERE-small",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.output.risk_level }}",
                  "rightValue": "low"
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "7f4ffb88-3c0a-4ee2-90bf-f6139eeb62e2",
          "name": "Request Fraud Investigation",
          "type": "n8n-nodes-base.gmail",
          "position": [
            1296,
            -16
          ],
          "webhookId": "fraud-investigation-webhook",
          "parameters": {
            "sendTo": "user@example.com",
            "message": "=<!DOCTYPE html>\n<html>\n<head>\n<style>\nbody{font-family:Arial,sans-serif;line-height:1.6;color:#333;max-width:700px;margin:0 auto;padding:20px}\n.alert-banner{background:#dc3545;color:#fff;padding:20px;text-align:center;border-radius:8px 8px 0 0;font-size:20px;font-weight:bold}\n.content{background:#fff;padding:30px;border:3px solid #dc3545}\n.risk-YOUR_OPENAI_KEY_HERE{display:grid;grid-template-columns:1fr 1fr 1fr;gap:15px;margin:20px 0}\n.risk-YOUR_OPENAI_KEY_HERE{background:#fff3cd;padding:15px;text-align:center;border-radius:5px;border:2px solid #ffc107}\n.risk-YOUR_OPENAI_KEY_HERE.critical{background:#f8d7da;border-color:#dc3545}\n.risk-YOUR_OPENAI_KEY_HERE strong{display:block;font-size:28px;color:#dc3545;margin-bottom:5px}\n.red-flags{background:#f8d7da;padding:15px;border-left:4px solid #dc3545;margin:20px 0}\n.invoice-details{background:#f8f9fa;padding:15px;border-radius:5px;margin:20px 0}\n</style>\n</head>\n<body>\n<div class=\"alert-banner\">🚨 CRITICAL FRAUD ALERT 🚨</div>\n<div class=\"content\">\n<p><strong>A potentially fraudulent invoice has been detected and requires immediate investigation.</strong></p>\n\n<div class=\"invoice-details\">\n<h3 style=\"margin-top:0;color:#dc3545\">Invoice Information</h3>\n<p><strong>Vendor:</strong> {{ $('Parse Invoice Data').item.json.vendor_name }}<br>\n<strong>Invoice Number:</strong> {{ $('Parse Invoice Data').item.json.invoice_number }}<br>\n<strong>Amount:</strong> {{ $('Parse Invoice Data').item.json.currency }} {{ $('Parse Invoice Data').item.json.total_amount }}<br>\n<strong>Date:</strong> {{ $('Parse Invoice Data').item.json.invoice_date }}<br>\n<strong>Due Date:</strong> {{ $('Parse Invoice Data').item.json.due_date }}<br>\n<strong>Category:</strong> {{ $('Parse Invoice Data').item.json.invoice_category }}<br>\n<strong>PO Number:</strong> {{ $('Parse Invoice Data').item.json.po_number || 'None provided' }}</p>\n</div>\n\n<div class=\"risk-YOUR_OPENAI_KEY_HERE\">\n<div class=\"risk-YOUR_OPENAI_KEY_HERE critical\"><strong>{{ $json.output.risk_score }}</strong>Risk Score</div>\n<div class=\"risk-YOUR_OPENAI_KEY_HERE\"><strong>{{ $json.output.vendor_trust_score }}</strong>Vendor Trust</div>\n<div class=\"risk-YOUR_OPENAI_KEY_HERE\"><strong>{{ $json.output.document_quality_score }}</strong>Doc Quality</div>\n</div>\n\n<div class=\"red-flags\">\n<h3 style=\"margin-top:0;color:#dc3545\">⚠️ Red Flags Detected</h3>\n<ul style=\"margin:0;padding-left:20px\">\n{{ $json.output.red_flags.map(flag => '<li><strong>' + flag + '</strong></li>').join('') }}\n</ul>\n</div>\n\n<h3>Required Verifications:</h3>\n<ul>\n{{ $json.output.required_verifications.map(ver => '<li>' + ver + '</li>').join('') }}\n</ul>\n\n<h3>AI Recommendation:</h3>\n<p style=\"font-size:18px;color:#dc3545\"><strong>{{ $json.output.recommended_action.toUpperCase().replace('_', ' ') }}</strong></p>\n\n<p><strong>⏰ This invoice has been BLOCKED from payment pending your investigation.</strong></p>\n\n<p>Please review immediately and take appropriate action.</p>\n\n<p style=\"margin-top:30px;padding-top:20px;border-top:1px solid #ddd;font-size:12px;color:#666\">\n<strong>Invoice ID:</strong> {{ $('Parse Invoice Data').item.json.invoice_id }}<br>\n<strong>Detected:</strong> {{ $('Parse Invoice Data').item.json.parsed_at }}\n</p>\n</div>\n</body>\n</html>",
            "options": {},
            "subject": "=⚠️ URGENT: Suspicious Invoice Requires Investigation - {{ $('Parse Invoice Data').item.json.vendor_name }}",
            "operation": "sendAndWait"
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "credential-id",
              "name": "gmailOAuth2 Credential"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "4de0ce06-d062-4c0d-a006-3dda68257db0",
          "name": "Amount > $5000?",
          "type": "n8n-nodes-base.if",
          "position": [
            880,
            192
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {},
              "conditions": [
                {
                  "id": "amount-check",
                  "operator": {
                    "type": "number",
                    "operation": "larger"
                  },
                  "leftValue": "={{ $('Parse Invoice Data').item.json.total_amount }}",
                  "rightValue": "5000"
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "8b3d632f-fb06-4f4c-bbe7-00012fe7581e",
          "name": "Request Manager Approval",
          "type": "n8n-nodes-base.gmail",
          "position": [
            1312,
            176
          ],
          "webhookId": "manager-approval-webhook",
          "parameters": {
            "sendTo": "user@example.com",
            "message": "=<!DOCTYPE html>\n<html>\n<head>\n<style>\nbody{font-family:Arial,sans-serif;line-height:1.6;color:#333;max-width:700px;margin:0 auto;padding:20px}\n.header{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:25px;text-align:center;border-radius:8px 8px 0 0}\n.content{background:#fff;padding:30px;border:1px solid #ddd}\n.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:20px 0}\n.info-box{background:#f8f9fa;padding:15px;border-radius:5px}\n.score-box{background:#d4edda;padding:15px;text-align:center;border-radius:5px;border:2px solid #28a745}\n.score-box strong{display:block;font-size:24px;color:#28a745}\n.line-items{background:#f8f9fa;padding:15px;border-radius:5px;margin:20px 0}\ntable{width:100%;border-collapse:collapse}\ntable th{background:#667eea;color:#fff;padding:10px;text-align:left}\ntable td{padding:10px;border-bottom:1px solid #ddd}\n</style>\n</head>\n<body>\n<div class=\"header\">\n<h2 style=\"margin:0\">📄 Invoice Approval Required</h2>\n<p style=\"margin:5px 0 0 0\">{{ $('Parse Invoice Data').item.json.vendor_name }}</p>\n</div>\n<div class=\"content\">\n<div class=\"info-grid\">\n<div class=\"info-box\">\n<strong>Invoice Number:</strong> {{ $('Parse Invoice Data').item.json.invoice_number }}<br>\n<strong>Date:</strong> {{ $('Parse Invoice Data').item.json.invoice_date }}<br>\n<strong>Due Date:</strong> {{ $('Parse Invoice Data').item.json.due_date }}\n</div>\n<div class=\"info-box\">\n<strong>Amount:</strong> {{ $('Parse Invoice Data').item.json.currency }} {{ $('Parse Invoice Data').item.json.total_amount }}<br>\n<strong>Category:</strong> {{ $('Parse Invoice Data').item.json.invoice_category }}<br>\n<strong>PO #:</strong> {{ $('Parse Invoice Data').item.json.po_number || 'N/A' }}\n</div>\n</div>\n\n<div class=\"score-box\">\n<strong>{{ $json.output.vendor_trust_score }}</strong>\nVendor Trust Score (Low Risk)\n</div>\n\n<div class=\"line-items\">\n<h3 style=\"margin-top:0\">Line Items</h3>\n<table>\n<thead>\n<tr><th>Description</th><th>Qty</th><th>Unit Price</th><th>Total</th></tr>\n</thead>\n<tbody>\n{{ $('Parse Invoice Data').item.json.line_items.map(item => '<tr><td>' + item.description + '</td><td>' + item.quantity + '</td><td>$' + item.unit_price.toFixed(2) + '</td><td>$' + item.total.toFixed(2) + '</td></tr>').join('') }}\n<tr style=\"font-weight:bold;background:#f8f9fa\"><td colspan=\"3\">Subtotal</td><td>${{ $('Parse Invoice Data').item.json.subtotal.toFixed(2) }}</td></tr>\n<tr><td colspan=\"3\">Tax ({{ $('Parse Invoice Data').item.json.tax_rate }}%)</td><td>${{ $('Parse Invoice Data').item.json.tax_amount.toFixed(2) }}</td></tr>\n<tr style=\"font-weight:bold;font-size:18px;background:#667eea;color:#fff\"><td colspan=\"3\">TOTAL</td><td>${{ $('Parse Invoice Data').item.json.total_amount.toFixed(2) }}</td></tr>\n</tbody>\n</table>\n</div>\n\n<h3>AI Analysis Summary:</h3>\n<p><strong>Risk Level:</strong> {{ $json.output.risk_level.toUpperCase() }}<br>\n<strong>Recommendation:</strong> {{ $json.output.recommended_action.replace('_', ' ').toUpperCase() }}</p>\n\n{{ $json.output.red_flags.length > 0 ? '<h3>⚠️ Items to Verify:</h3><ul>' + $json.output.red_flags.map(flag => '<li>' + flag + '</li>').join('') + '</ul>' : '<p>✅ No issues detected</p>' }}\n\n<p><strong>Payment Terms:</strong> {{ $('Parse Invoice Data').item.json.payment_terms }}</p>\n\n<p style=\"margin-top:30px\"><strong>Please approve or reject this invoice.</strong></p>\n</div>\n</body>\n</html>",
            "options": {},
            "subject": "=Invoice Approval Required - {{ $('Parse Invoice Data').item.json.vendor_name }} - ${{ $('Parse Invoice Data').item.json.total_amount }}",
            "operation": "sendAndWait"
          },
          "typeVersion": 2.1
        },
        {
          "id": "e7d4d4b9-f1a7-49c2-acb2-bf66d102fe29",
          "name": "Notify Vendor - Approved",
          "type": "n8n-nodes-base.gmail",
          "position": [
            1328,
            368
          ],
          "webhookId": "c9c97d37-6231-4e60-8d68-252db4f5399f",
          "parameters": {
            "sendTo": "={{ $('Parse Invoice Data').item.json.email_from }}",
            "message": "=<!DOCTYPE html>\n<html>\n<head>\n<style>\nbody{font-family:Arial,sans-serif;line-height:1.6;color:#333;max-width:600px;margin:0 auto;padding:20px}\n.header{background:#28a745;color:#fff;padding:20px;text-align:center;border-radius:8px 8px 0 0}\n.content{background:#fff;padding:30px;border:1px solid #ddd}\n.info-box{background:#f8f9fa;padding:15px;border-radius:5px;margin:20px 0}\n</style>\n</head>\n<body>\n<div class=\"header\"><h2 style=\"margin:0\">✅ Invoice Approved</h2></div>\n<div class=\"content\">\n<p>Dear {{ $('Parse Invoice Data').item.json.vendor_name }},</p>\n<p>Thank you for your invoice. We've received and automatically processed it.</p>\n<div class=\"info-box\">\n<strong>Invoice Number:</strong> {{ $('Parse Invoice Data').item.json.invoice_number }}<br>\n<strong>Amount:</strong> {{ $('Parse Invoice Data').item.json.currency }} {{ $('Parse Invoice Data').item.json.total_amount }}<br>\n<strong>Due Date:</strong> {{ $('Parse Invoice Data').item.json.due_date }}<br>\n<strong>Status:</strong> Approved for Payment\n</div>\n<p>Payment will be processed according to terms: <strong>{{ $('Parse Invoice Data').item.json.payment_terms }}</strong></p>\n<p>Expected payment date: <strong>{{ $('Parse Invoice Data').item.json.due_date }}</strong></p>\n<p>If you have questions, please reply to this email.</p>\n<p>Best regards,<br><strong>Accounts Payable</strong><br>[Your Company]</p>\n</div>\n</body>\n</html>",
            "options": {},
            "subject": "=Invoice Received & Processing - {{ $('Parse Invoice Data').item.json.invoice_number }}"
          },
          "typeVersion": 2.1
        },
        {
          "id": "33787ce5-b0ef-46f2-9687-6d88d4effb55",
          "name": "Log to Invoice Database",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            1840,
            272
          ],
          "parameters": {
            "columns": {
              "value": {
                "amount": "={{ $('Parse Invoice Data').item.json.total_amount }}",
                "status": "={{ $json.status || 'Processed' }}",
                "category": "={{ $('Parse Invoice Data').item.json.invoice_category }}",
                "currency": "={{ $('Parse Invoice Data').item.json.currency }}",
                "due_date": "={{ $('Parse Invoice Data').item.json.due_date }}",
                "po_number": "={{ $('Parse Invoice Data').item.json.po_number }}",
                "red_flags": "={{ $json.output.red_flags.join('; ') }}",
                "invoice_id": "={{ $('Parse Invoice Data').item.json.invoice_id }}",
                "risk_level": "={{ $json.output.risk_level }}",
                "risk_score": "={{ $json.output.risk_score }}",
                "vendor_name": "={{ $('Parse Invoice Data').item.json.vendor_name }}",
                "invoice_date": "={{ $('Parse Invoice Data').item.json.invoice_date }}",
                "vendor_email": "={{ $('Parse Invoice Data').item.json.vendor_email }}",
                "vendor_trust": "={{ $json.output.vendor_trust_score }}",
                "duplicate_risk": "={{ $json.output.duplicate_risk }}",
                "invoice_number": "={{ $('Parse Invoice Data').item.json.invoice_number }}",
                "processed_date": "={{ $('Parse Invoice Data').item.json.parsed_at }}",
                "recommended_action": "={{ $json.output.recommended_action }}"
              },
              "mappingMode": "defineBelow"
            },
            "options": {},
            "operation": "append",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "YOUR_GOOGLE_SHEET_ID"
            }
          },
          "typeVersion": 4.5
        },
        {
          "id": "e510ac2c-183f-4f6b-bea0-1573cb6af792",
          "name": "Sticky Note - Intake",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1568,
            64
          ],
          "parameters": {
            "color": 5,
            "width": 674,
            "height": 388,
            "content": "## 📧 Smart Invoice Intake\n\nMonitors new invoice submitted via a **Jotform**\n\nCreate your form for free on [Jotform using this link](https://www.jotform.com/?partner=mediajade)\n\n**Output:** Invoice attachments ready for AI processing"
          },
          "typeVersion": 1
        },
        {
          "id": "e03f3fdf-80c2-4c87-9e05-58f499853191",
          "name": "Sticky Note - OCR",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -800,
            0
          ],
          "parameters": {
            "color": 4,
            "width": 674,
            "height": 444,
            "content": "## 🤖 AI-Powered OCR & Data Extraction\n\nUses GPT-4o-mini with vision to read invoices and extract ALL structured data with high accuracy.\n\n**Result:** 95%+ accuracy on invoice data extraction"
          },
          "typeVersion": 1
        },
        {
          "id": "69a627b2-fc15-440b-9668-f7cead11c022",
          "name": "Sticky Note - Fraud",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -64,
            -48
          ],
          "parameters": {
            "color": 6,
            "width": 756,
            "height": 692,
            "content": "## 🚨 AI Fraud Detection & Risk Analysis\n\nAdvanced fraud detection AI analyzes every invoice for anomalies, duplicates, and suspicious patterns.\n\n**Result:** Catch fraud before payment, protect company assets"
          },
          "typeVersion": 1
        },
        {
          "id": "8a173f21-6a0a-4428-916e-801b83eb1dda",
          "name": "Sticky Note - Routing",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            800,
            -176
          ],
          "parameters": {
            "color": 3,
            "width": 720,
            "height": 772,
            "content": "## 🚦 Intelligent Routing & Approval Workflows\n\nAutomatically routes invoices based on risk level, amount, and fraud analysis.\n\n**Result:** Fast processing for legitimate invoices, rigorous checks for suspicious ones"
          },
          "typeVersion": 1
        },
        {
          "id": "30f7ee03-153b-4ab6-86ce-f01e014e42d1",
          "name": "Sticky Note - Analytics",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1632,
            96
          ],
          "parameters": {
            "color": 7,
            "width": 480,
            "height": 364,
            "content": "## 📊 Financial Analytics & Audit Trail\n\nComprehensive logging of all invoices for analytics, compliance, and audit purposes.\n\n**Result:** Data-driven financial operations with full transparency"
          },
          "typeVersion": 1
        },
        {
          "id": "399c8b7f-a346-4cab-a49f-337b8b1605f4",
          "name": "Send a message",
          "type": "n8n-nodes-base.slack",
          "position": [
            992,
            0
          ],
          "webhookId": "9d823dcf-d08f-4c87-aef9-d9cb2b4b542a",
          "parameters": {
            "text": "=:rotating_light: *CRITICAL FRAUD ALERT* :rotating_light:\\n\\n*Invoice Details:*\\nVendor: {{ $('Parse Invoice Data').item.json.vendor_name }}\\nAmount: {{ $('Parse Invoice Data').item.json.currency }} {{ $('Parse Invoice Data').item.json.total_amount }}\\nInvoice #: {{ $('Parse Invoice Data').item.json.invoice_number }}\\n\\n*Risk Assessment:*\\nRisk Level: {{ $json.output.risk_level.toUpperCase() }}\\nRisk Score: {{ $json.output.risk_score }}/100\\nVendor Trust: {{ $json.output.vendor_trust_score }}/100\\n\\n*Red Flags:*\\n{{ $json.output.red_flags.map(flag => '• ' + flag).join('\\\\n') }}\\n\\n*Recommended Action:* {{ $json.output.recommended_action.toUpperCase().replace('_', ' ') }}\\n\\n:warning: *IMMEDIATE ACTION REQUIRED* - Do NOT process this invoice until investigated!",
            "select": "channel",
            "channelId": {
              "__rl": true,
              "mode": "list",
              "value": ""
            },
            "otherOptions": {}
          },
          "typeVersion": 2.3
        },
        {
          "id": "87e7a15b-abbc-4fbc-b1ba-fe987c2740c8",
          "name": "Update an invoice",
          "type": "n8n-nodes-base.quickbooks",
          "position": [
            1104,
            368
          ],
          "parameters": {
            "resource": "invoice",
            "operation": "update",
            "updateFields": {}
          },
          "typeVersion": 1
        },
        {
          "id": "8faf07af-b384-43d9-910e-ad4991bddd87",
          "name": "Jotform Trigger",
          "type": "n8n-nodes-base.jotFormTrigger",
          "position": [
            -1488,
            256
          ],
          "webhookId": "209c111c-5573-466c-8602-b4d6e2f44659",
          "parameters": {
            "form": "252815253377461"
          },
          "credentials": {
            "jotFormApi": {
              "id": "credential-id",
              "name": "jotFormApi Credential"
            }
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "c30da11e-1045-407f-973a-f68a6ee2b72d",
      "connections": {
        "Send a message": {
          "main": [
            [
              {
                "node": "Request Fraud Investigation",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Amount > $5000?": {
          "main": [
            [
              {
                "node": "Request Manager Approval",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Update an invoice",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Jotform Trigger": {
          "main": [
            [
              {
                "node": "Has Invoice Attachment?",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "OpenAI Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "AI Fraud Detection Agent",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Update an invoice": {
          "main": [
            [
              {
                "node": "Notify Vendor - Approved",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Parse Invoice Data": {
          "main": [
            [
              {
                "node": "AI Fraud Detection Agent",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Critical Fraud Risk?": {
          "main": [
            [
              {
                "node": "Send a message",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Amount > $5000?",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Auto-Approve Eligible?": {
          "main": [
            [
              {
                "node": "Update an invoice",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Amount > $5000?",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Has Invoice Attachment?": {
          "main": [
            [
              {
                "node": "Extract Invoice Attachments",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI Fraud Detection Agent": {
          "main": [
            [
              {
                "node": "Critical Fraud Risk?",
                "type": "main",
                "index": 0
              },
              {
                "node": "Auto-Approve Eligible?",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Notify Vendor - Approved": {
          "main": [
            [
              {
                "node": "Log to Invoice Database",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Request Manager Approval": {
          "main": [
            [
              {
                "node": "Log to Invoice Database",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Structured Output Parser": {
          "ai_outputParser": [
            [
              {
                "node": "AI Fraud Detection Agent",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        },
        "AI Invoice OCR & Extraction": {
          "main": [
            [
              {
                "node": "Parse Invoice Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract Invoice Attachments": {
          "main": [
            [
              {
                "node": "AI Invoice OCR & Extraction",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Request Fraud Investigation": {
          "main": [
            [
              {
                "node": "Log to Invoice Database",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 22,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 4
        },
        "n8n-nodes-base.code": {
          "count": 2
        },
        "n8n-nodes-base.gmail": {
          "count": 3
        },
        "n8n-nodes-base.slack": {
          "count": 1
        },
        "n8n-nodes-base.quickbooks": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 5
        },
        "n8n-nodes-base.googleSheets": {
          "count": 1
        },
        "n8n-nodes-base.jotFormTrigger": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.openAi": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatOpenAi": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.outputParserStructured": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Jitesh Dugar",
      "username": "jiteshdugar",
      "bio": "AI Automation Specialist - OpenAI, CRM & Automation Expert with a solid understanding of various tools that include Zapier, Make, Zoho CRM, Hubspot, Google Sheets, Airtable, Pipedrive, Google Analytics, and more.",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/jiteshdugar"
      ],
      "avatar": "https://gravatar.com/avatar/edaa3abb99806b0586dced559d0a5417f24a507e7c4464a63960f0638a4b1b90?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 18,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheets",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Sheet",
              "Spreadsheet",
              "GS"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/",
                  "icon": "❤️",
                  "label": "Love at first sight: Ricardo’s n8n journey"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-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/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/",
                  "icon": "⏲",
                  "label": "Creating triggers for n8n workflows using polling"
                },
                {
                  "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/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "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/how-honest-burgers-use-automation-to-save-100k-per-year/",
                  "icon": "🍔",
                  "label": "How Honest Burgers Use Automation to Save $100k per year"
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "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-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/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\",\"output\"]",
        "defaults": {
          "name": "Google Sheets"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets",
        "typeVersion": 5,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "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": 227,
        "icon": "file:jotform.svg",
        "name": "n8n-nodes-base.jotFormTrigger",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.jotformtrigger/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/jotform/"
                }
              ]
            },
            "categories": [
              "Communication"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Jotform Trigger"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNSAyOCI+PHBhdGggaWQ9ImpvdGZvcm0tbG9nb21hcmstZmlyc3QiIGZpbGw9IiNGRjYxMDAiIGQ9Ik0xOS4yOTQgMy45MzRhMy4zNDEgMy4zNDEgMCAwIDEgNC43MjcgMCAzLjM0NCAzLjM0NCAwIDAgMSAwIDQuNzI4bC0xMS44MTcgMTEuODJhMy4zNDEgMy4zNDEgMCAwIDEtNC43MjYgMCAzLjM0NCAzLjM0NCAwIDAgMSAwLTQuNzI3bDExLjgxNi0xMS44MloiPjwvcGF0aD48cGF0aCBpZD0iam90Zm9ybS1sb2dvbWFyay1zZWNvbmQiIGZpbGw9IiMwMDk5RkYiIGQ9Ik05LjI1Ljk4YTMuMzQ0IDMuMzQ0IDAgMCAxIDQuNzI3IDQuNzI4bC04LjI3MSA4LjI3NGEzLjM0MiAzLjM0MiAwIDAgMS00LjcyNyAwIDMuMzQ0IDMuMzQ0IDAgMCAxIDAtNC43MjlMOS4yNS45OFoiPjwvcGF0aD48cGF0aCBpZD0iam90Zm9ybS1sb2dvbWFyay10aGlyZCIgZmlsbD0iI0ZGQjYyOSIgZD0iTTE4LjcwNCAxNy41MjdhMy4zNDQgMy4zNDQgMCAwIDEgNC43MjYgNC43MjhsLTQuNzI2IDQuNzI5YTMuMzQyIDMuMzQyIDAgMSAxLTQuNzI3LTQuNzI4bDQuNzI3LTQuNzI5WiI+PC9wYXRoPjxwYXRoIGlkPSJqb3Rmb3JtLWxvZ29tYXJrLWZvdXJ0aCIgZmlsbD0iIzBBMTU1MSIgZD0iTTEuNjcxIDI4aDQuNjY3Yy43NDUgMCAxLjExOC0uOS41OTEtMS40MjdMMS40MjYgMjEuMDdDLjkgMjAuNTQyIDAgMjAuOTE1IDAgMjEuNjU5djQuNjdDMCAyNy4yNTEuNzQ4IDI4IDEuNjcxIDI4WiI+PC9wYXRoPjwvc3ZnPg=="
        },
        "displayName": "Jotform Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          }
        ]
      },
      {
        "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": 455,
        "icon": "file:quickbooks.svg",
        "name": "n8n-nodes-base.quickbooks",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.quickbooks/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/quickbooks/"
                }
              ]
            },
            "categories": [
              "Finance & Accounting"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "QuickBooks Online"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAwIDI1MDAiPjxjaXJjbGUgY3g9IjEyNTAiIGN5PSIxMjUwIiByPSIxMjUwIiBmaWxsPSIjMmNhMDFjIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTMwMS4zIDEyNDkuNmMuMSAyODIuNiAyMjggNTEyLjQgNTEwLjYgNTE0LjloNzIuM3YtMTg4LjloLTcyLjNjLTE3NS4yIDQ3LjgtMzU1LjktNTUuNS00MDMuNi0yMzAuNy0uNC0xLjQtLjctMi44LTEuMS00LjItNDkuMS0xNzcuNSA1My43LTM2MS40IDIzMC42LTQxMi41aDM2LjFhMzIyIDMyMiAwIDAgMSAxMzcuNSAwSDk4N3YxMDAyLjljLS45IDEwNi4xIDg0LjQgMTkyLjkgMTkwLjUgMTkzLjlWNzI5LjZIODEzYy0yODQuNiAxLjUtNTE0IDIzMy40LTUxMi41IDUxOHYuMXptMTM4Ny41LTUxOS44aC03Mi4zdjE5OC45aDcyLjNjMTc0LjgtNDcuNyAzNTUuMSA1NS4zIDQwMi44IDIzMCAuNCAxLjMuNyAyLjcgMS4xIDQgNDguOCAxNzYuOS01My43IDM2MC4xLTIyOS45IDQxMS4xaC0zNi4xYTMyMiAzMjIgMCAwIDEtMTM3LjUgMGgtMTc1LjZWNTcxYy45LTEwNi4xLTg0LjQtMTkyLjktMTkwLjUtMTkzLjl2MTM5Ny40aDM2NC41YzI4Ny4xLTQuNSA1MTYuMi0yNDAuOCA1MTEuOC01MjcuOS00LjQtMjgwLjgtMjMwLjktNTA3LjQtNTExLjgtNTExLjh6Ii8+PC9zdmc+"
        },
        "displayName": "QuickBooks Online",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 8,
            "name": "Finance & Accounting"
          }
        ]
      },
      {
        "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": 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": 1250,
        "icon": "file:openAi.svg",
        "name": "@n8n/n8n-nodes-langchain.openAi",
        "codex": {
          "data": {
            "alias": [
              "LangChain",
              "ChatGPT",
              "Sora",
              "DallE",
              "whisper",
              "audio",
              "transcribe",
              "tts",
              "assistant"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Agents",
                "Miscellaneous",
                "Root Nodes"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "OpenAI"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg1IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NiAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MSA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K"
        },
        "displayName": "OpenAI",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 34,
        "name": "Invoice Processing"
      },
      {
        "id": 49,
        "name": "AI Summarization"
      }
    ],
    "image": []
  }
}