{
  "workflow": {
    "id": 7239,
    "name": "Parse invoices & documents with Gemini AI, OCR, and Google Sheets integration",
    "views": 1311,
    "recentViews": 1,
    "totalViews": 1311,
    "createdAt": "2025-08-11T11:01:37.132Z",
    "description": "## Smart Document Parser for Invoices, Logs or Sensor Reports (PDF/Image to Google Sheets)\n\nThis n8n workflow automatically parses documents such as invoices, sensor logs or structured PDFs/images (including scanned docs or CSVs), extracts key fields like totals, dates and customer/vendor info using OCR and AI, and writes the structured output into Google Sheets.\n\n## Who’s it for\n\n* Finance or Ops teams automating invoice processing.\n* SaaS platforms parsing uploaded reports or documents.\n* Anyone needing a no-code backend for PDF/image/CSV document parsing.\n* AI-powered data capture pipelines.\n\n## How it works\n1. **Webhook Trigger** receives file uploads (`/uploadDoc`)\n2. **Switch Node** checks the file type:\n\t* If **image** → Use **Tesseract OCR**\n\t* If **PDF** → Use PDF parser\n\t* If **CSV** → Extract as-is\n3. Extracted text is passed to:\n\t* **Google Gemini or Gemini Flash AI** model\n\t* Prompt extracts fields like `invoice_id`, `total`, `customer_name`, etc.\n4. JSON string is parsed and cleaned\n5. Data is appended to **Google Sheets** using `appendOrUpdate`\n\n## How to set up\n1. Create a Google Sheet with columns like:\n\n`invoice_id`, `invoice_date`, `due_date`, `customer_name`, `vendor_name`, `subtotal`, `tax_total`, `total`, `currency`\n\n2. Connect:\n\t* Google Sheets OAuth\n\t* Google Gemini (PaLM API key) for LLM parsing\n3. Deploy the webhook endpoint: `/uploadDoc`\n4. Upload sample files (PDFs, images, CSVs) to test\n5. Review and map sheet columns in the `Invoice Data` node\n\n## Requirements\n\n| Tool | Purpose |\n| ------------- | --------------------------------- |\n| n8n | Automation framework |\n| Google Sheets | To store structured output |\n| Tesseract OCR | For scanned image text extraction |\n| Google Gemini | For natural language parsing |\n\n## How to customize\n\n* Add extraction for **line items** using structured prompts.\n* Change prompt to extract **sensor readings**, **log types**, or custom keys.\n* Add support for other file types (e.g., XLSX, DOCX).\n* Add Slack/Email notifications on success/failure.\n* Swap Gemini with OpenAI or Hugging Face if preferred.\n\n## Add‑ons\n\n* Save uploaded files to Google Drive or S3\n* Add auth for secure uploads\n* Use charting/dashboard nodes to visualize extracted data\n* Integrate with billing/accounting software\n\n## Use Case Examples\n\n| Scenario | What Happens |\n| ----------------------- | ------------------------------------------------------- |\n| Invoice Upload (PDF) | Extracts totals, customer, tax data into a Google Sheet |\n| Scanned Receipt (Image) | OCR + LLM extracts structured data |\n| Log File (CSV) | Parses and logs entries into Sheets |\n\n## Common troubleshooting\n\n| Issue | Possible Cause | Solution |\n| --------------------------------- | ----------------------- | ------------------------------------------- |\n| `Webhook not triggered` | URL or method mismatch | Use correct POST URL `/uploadDoc` |\n| `Text is blank` | OCR failed | Check image quality or Tesseract config |\n| `Gemini model not returning JSON` | Prompt formatting issue | Ensure prompt ends with valid JSON schema |\n| `Sheet not updated` | Invalid Sheet ID or tab | Double-check sheet credentials and tab name |\n\n## Need Help?\n\n- Need help fine-tuning the Gemini prompt for better field accuracy?\n- Want to extract full tables, multi-page invoices or convert PDFs to JSON lines?\n\nOur automation team at WeblineIndia can help you extend this into a full-blown document automation pipeline.",
    "workflow": {
      "id": "c92ZApSKwsRmg6zb",
      "meta": {
        "instanceId": "14e4c77104722ab186539dfea5182e419aecc83d85963fe13f6de862c875ebfa",
        "templateCredsSetupCompleted": true
      },
      "name": "Smart Document Parser for Invoices, Logs or Sensor Reports (PDF/Image/csv to Sheet)",
      "tags": [],
      "nodes": [
        {
          "id": "98517a08-3fc4-4c0c-aa4b-44d93c864eb4",
          "name": "Check file type",
          "type": "n8n-nodes-base.switch",
          "position": [
            220,
            860
          ],
          "parameters": {
            "rules": {
              "values": [
                {
                  "conditions": {
                    "options": {
                      "version": 2,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "40ee8e68-2b72-4ba9-b7a2-8c976852d48b",
                        "operator": {
                          "type": "string",
                          "operation": "contains"
                        },
                        "leftValue": "={{ $('Webhook Invoice upload').item.binary.file.mimeType }}",
                        "rightValue": "image"
                      }
                    ]
                  }
                },
                {
                  "conditions": {
                    "options": {
                      "version": 2,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "c4315e16-313f-4363-a625-71436498e46a",
                        "operator": {
                          "name": "filter.operator.equals",
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $('Webhook Invoice upload').item.binary.file.mimeType }}",
                        "rightValue": "application/pdf"
                      }
                    ]
                  }
                },
                {
                  "conditions": {
                    "options": {
                      "version": 2,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "cffb0678-f006-47e0-91ea-afd17f133a77",
                        "operator": {
                          "type": "string",
                          "operation": "contains"
                        },
                        "leftValue": "={{ $('Webhook Invoice upload').item.binary.file.mimeType }}",
                        "rightValue": "csv"
                      }
                    ]
                  }
                }
              ]
            },
            "options": {}
          },
          "typeVersion": 3.2
        },
        {
          "id": "6ef5d99c-b842-4290-9766-8b780df66f6b",
          "name": "Invoice data",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            738,
            1110
          ],
          "parameters": {
            "columns": {
              "value": {
                "total": "={{ $json.total }}",
                "currency": "={{ $json.currency }}",
                "due_date": "={{ $json.due_date }}",
                "subtotal": "={{ $json.subtotal }}",
                "tax_total": "={{ $json.tax_total }}",
                "invoice_id": "={{ $json.invoice_id }}",
                "vendor_name": "={{ $json.vendor_name }}",
                "invoice_date": "={{ $json.invoice_date }}",
                "customer_name": "={{ $json.customer_name }}"
              },
              "schema": [
                {
                  "id": "invoice_id",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "invoice_id",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "invoice_date",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "invoice_date",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "due_date",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "due_date",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "customer_name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "customer_name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "vendor_name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "vendor_name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "subtotal",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "subtotal",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "tax_total",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "tax_total",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "total",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "total",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "currency",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "currency",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "customer_address",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "customer_address",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "customer_tax_id",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "customer_tax_id",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "vendor_address",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "vendor_address",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "vendor_tax_id",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "vendor_tax_id",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "vendor_iban",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "vendor_iban",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "vendor_bic",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "vendor_bic",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "line_id",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "line_id",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "description",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "description",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "quantity",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "quantity",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "unit_price",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "unit_price",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "line_total",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "line_total",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "tax_rate",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "tax_rate",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [
                "invoice_id"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 0,
              "cachedResultUrl": "",
              "cachedResultName": "Invoice"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "0",
              "cachedResultUrl": "",
              "cachedResultName": ""
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "",
              "name": ""
            }
          },
          "typeVersion": 4.6
        },
        {
          "id": "6b0ce6fd-5d09-4bc2-a3b2-cc8c0e2878d6",
          "name": "Invoice Data",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            1256,
            760
          ],
          "parameters": {
            "columns": {
              "value": {
                "total": "={{ $json.total }}",
                "currency": "={{ $json.currency }}",
                "due_date": "={{ $json.due_date }}",
                "subtotal": "={{ $json.subtotal }}",
                "tax_total": "={{ $json.tax_total }}",
                "invoice_id": "={{ $json.invoice_id }}",
                "vendor_name": "={{ $json.vendor_name }}",
                "invoice_date": "={{ $json.invoice_date }}",
                "customer_name": "={{ $json.customer_name }}"
              },
              "schema": [
                {
                  "id": "invoice_id",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": false,
                  "displayName": "invoice_id",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "invoice_date",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "invoice_date",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "due_date",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "due_date",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "customer_name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "customer_name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "vendor_name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "vendor_name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "subtotal",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "subtotal",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "tax_total",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "tax_total",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "total",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "total",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "currency",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "currency",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Accounting",
                  "type": "string",
                  "display": true,
                  "removed": true,
                  "required": false,
                  "displayName": "Accounting",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [
                "invoice_id"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 0,
              "cachedResultUrl": "",
              "cachedResultName": "Invoice"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "0",
              "cachedResultUrl": "",
              "cachedResultName": ""
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "",
              "name": ""
            }
          },
          "typeVersion": 4.6
        },
        {
          "id": "7f5b8ffe-d4e8-4b7b-803e-6c37d0da0221",
          "name": "Transfrom data",
          "type": "n8n-nodes-base.code",
          "position": [
            1036,
            760
          ],
          "parameters": {
            "jsCode": "const raw = $input.first().json.text || '';\n\n// 1. Remove code block syntax like ```json ... ```\nconst cleaned = raw.replace(/```json|```/g, '').trim();\n\n\n  const parsed = JSON.parse(cleaned);\n  return [{ json: parsed }];"
          },
          "typeVersion": 2,
          "alwaysOutputData": true
        },
        {
          "id": "b818ac61-4837-4a9f-b90e-bb6b4b7739c1",
          "name": "Google Gemini Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
          "position": [
            748,
            880
          ],
          "parameters": {
            "options": {},
            "modelName": "models/gemini-1.5-flash"
          },
          "credentials": {
            "googlePalmApi": {
              "id": "",
              "name": ""
            }
          },
          "typeVersion": 1
        },
        {
          "id": "2941bf32-0db6-4486-8696-e207de09364c",
          "name": "Format data from text",
          "type": "@n8n/n8n-nodes-langchain.chainLlm",
          "position": [
            660,
            660
          ],
          "parameters": {
            "text": "=Extract the following invoice details from the given raw text:\n\n- invoice_id  \n- invoice_date  \n- due_date  \n- customer_name  \n- vendor_name  \n- subtotal  \n- tax_total  \n- total  \n- currency\n\nUse the following input text:\n{{ $json.text }}\n\nReturn the result as a valid JSON object using this exact structure:\n\n{\n  \"invoice_id\": \"string or null\",\n  \"invoice_date\": \"string (e.g., 2024-10-10) or null\",\n  \"due_date\": \"string (e.g., 2024-10-25) or null\",\n  \"customer_name\": \"string or null\",\n  \"vendor_name\": \"string or null\",\n  \"subtotal\": \"string or null\",\n  \"tax_total\": \"string or null\",\n  \"total\": \"string or null\",\n  \"currency\": \"string (e.g., €, $, £) or null\"\n}\n\nIf any field is missing or not found, set it as `null`. Return only the JSON output without extra text.\n",
            "batching": {},
            "promptType": "define"
          },
          "typeVersion": 1.7
        },
        {
          "id": "7c829587-f028-4332-831f-92f9529b72ca",
          "name": "Webhook Invoice upload",
          "type": "n8n-nodes-base.webhook",
          "position": [
            0,
            860
          ],
          "webhookId": "3dafecda-82df-4af9-84f2-7815ffa81319",
          "parameters": {
            "path": "uploadDoc",
            "options": {},
            "httpMethod": "POST"
          },
          "typeVersion": 2
        },
        {
          "id": "05176b33-fcda-4f1a-84fa-2449108a0a54",
          "name": "PDF to Text",
          "type": "n8n-nodes-base.extractFromFile",
          "position": [
            440,
            860
          ],
          "parameters": {
            "options": {},
            "operation": "pdf",
            "binaryPropertyName": "file"
          },
          "typeVersion": 1
        },
        {
          "id": "81690344-d04c-428b-b720-bb539fbe2bbe",
          "name": "Image to Text",
          "type": "n8n-nodes-tesseractjs.tesseractNode",
          "position": [
            440,
            660
          ],
          "parameters": {
            "options": {},
            "inputDataFieldName": "file"
          },
          "typeVersion": 1
        },
        {
          "id": "a0f49ed7-1d42-4df8-a802-74754d1549c0",
          "name": "CSV to JSON",
          "type": "n8n-nodes-base.extractFromFile",
          "position": [
            440,
            1110
          ],
          "parameters": {
            "options": {},
            "binaryPropertyName": "file"
          },
          "typeVersion": 1
        },
        {
          "id": "0473ba6b-734e-4f53-8ecb-86711db1bd76",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -60,
            1300
          ],
          "parameters": {
            "color": 2,
            "width": 1500,
            "height": 540,
            "content": "---\n### **Purpose**\n * To automatically extract structured data from uploaded documents (PDFs, images, or CSVs) — such as invoices, logs, or reports — and save the results into Google Sheets using AI and OCR.\n\n---\n### **Core Logic**\n1. **Webhook Trigger** receives the uploaded document.\n2. **Switch Node** detects file type:\n   *  Image → Parsed using **Tesseract OCR**\n   *  PDF → Parsed via built-in PDF extractor\n   *  CSV → Parsed as raw text\n3. Extracted text is sent to **Google Gemini AI** to identify fields like:\n   * `invoice_id`, `invoice_date`, `total`, etc.\n4. AI output is converted into valid JSON.\n5. JSON is **appended to Google Sheets** via `appendOrUpdate`.\n\n---\n### **Outcome**\n* Extracted invoice/report data is stored cleanly in a Google Sheet.\n* Works with scanned documents, images, and structured files.\n* Enables AI-powered automation of manual data entry workflows."
          },
          "typeVersion": 1
        },
        {
          "id": "63a9e69e-566c-4db6-9d31-b25f438fbd26",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -72,
            550
          ],
          "parameters": {
            "color": 7,
            "width": 1500,
            "height": 720,
            "content": "## Smart Document Parser for Invoices, Logs or Sensor Reports (PDF/Image/csv to Sheet)"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "b5ae5035-b75f-4f8d-8d43-020fdb2c529e",
      "connections": {
        "CSV to JSON": {
          "main": [
            [
              {
                "node": "Invoice data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "PDF to Text": {
          "main": [
            [
              {
                "node": "Format data from text",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Image to Text": {
          "main": [
            [
              {
                "node": "Format data from text",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Transfrom data": {
          "main": [
            [
              {
                "node": "Invoice Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Check file type": {
          "main": [
            [
              {
                "node": "Image to Text",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "PDF to Text",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "CSV to JSON",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format data from text": {
          "main": [
            [
              {
                "node": "Transfrom data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Webhook Invoice upload": {
          "main": [
            [
              {
                "node": "Check file type",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Google Gemini Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "Format data from text",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 12,
      "nodeTypes": {
        "n8n-nodes-base.code": {
          "count": 1
        },
        "n8n-nodes-base.switch": {
          "count": 1
        },
        "n8n-nodes-base.webhook": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 2
        },
        "n8n-nodes-base.googleSheets": {
          "count": 2
        },
        "n8n-nodes-base.extractFromFile": {
          "count": 2
        },
        "@n8n/n8n-nodes-langchain.chainLlm": {
          "count": 1
        },
        "n8n-nodes-tesseractjs.tesseractNode": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatGoogleGemini": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "WeblineIndia",
      "username": "weblineindia",
      "bio": "A Leading Software Engineering, Consulting & Outsourcing Services Company in USA & India serving Clients Globally since 1999.",
      "verified": true,
      "links": [
        "https://www.weblineindia.com/"
      ],
      "avatar": "https://gravatar.com/avatar/a229d43aefca4588581583c58bb37b4773aebbdf4c1fef86a08bb1d38eae91fa?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": 47,
        "icon": "file:webhook.svg",
        "name": "n8n-nodes-base.webhook",
        "codex": {
          "data": {
            "alias": [
              "HTTP",
              "API",
              "Build",
              "WH"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/",
                  "icon": "✍️",
                  "label": "Learn how to automatically cross-post your content with n8n"
                },
                {
                  "url": "https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "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/what-are-apis-how-to-use-them-with-no-code/",
                  "icon": " 🪢",
                  "label": "What are APIs and how to use them with no code"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/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/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/",
                  "icon": "📹",
                  "label": "The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/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/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/creating-custom-incident-response-workflows-with-n8n/",
                  "label": "How to automate every step of an incident response workflow"
                },
                {
                  "url": "https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/",
                  "icon": "🧰",
                  "label": "Learn to Build Powerful API Endpoints Using Webhooks"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/",
                  "icon": "🦄",
                  "label": "Learn how to use webhooks with Mattermost slash commands"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Webhook"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"
        },
        "displayName": "Webhook",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 112,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.switch",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "If",
              "Path",
              "Filter",
              "Condition",
              "Logic",
              "Branch",
              "Case"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/",
                  "icon": "👦",
                  "label": "Build your own virtual assistant with n8n: A step by step guide"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Switch",
          "color": "#506000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "Switch",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 834,
        "icon": "file:code.svg",
        "name": "n8n-nodes-base.code",
        "codex": {
          "data": {
            "alias": [
              "cpde",
              "Javascript",
              "JS",
              "Python",
              "Script",
              "Custom Code",
              "Function"
            ],
            "details": "The Code node allows you to execute JavaScript in your workflow.",
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Code"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Code",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1123,
        "icon": "fa:link",
        "name": "@n8n/n8n-nodes-langchain.chainLlm",
        "codex": {
          "data": {
            "alias": [
              "LangChain"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Chains",
                "Root Nodes"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Basic LLM Chain",
          "color": "#909298"
        },
        "iconData": {
          "icon": "link",
          "type": "icon"
        },
        "displayName": "Basic LLM Chain",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1235,
        "icon": "file:extractFromFile.svg",
        "name": "n8n-nodes-base.extractFromFile",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Spreadsheet",
              "Excel",
              "xls",
              "xlsx",
              "ods",
              "tabular",
              "decode",
              "decoding",
              "Move Binary Data",
              "Binary",
              "File",
              "PDF",
              "JSON",
              "HTML",
              "ICS",
              "iCal",
              "txt",
              "Text",
              "RTF",
              "XML",
              "64",
              "Base64",
              "Convert"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Files",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Extract from File"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuOTM3NSAyQzAuNDE5NzMzIDIgMCAyLjQxOTczIDAgMi45Mzc1VjM3LjMyMjFDMCAzNy44Mzk5IDAuNDE5NzMzIDM4LjI1OTYgMC45Mzc1IDM4LjI1OTZIMjYuMjE1NEMyNi43MzMyIDM4LjI1OTYgMjcuMTUyOSAzNy44Mzk5IDI3LjE1MjkgMzcuMzIyMUwyNy4xNTI5IDMwLjY3MTlMMTYuNzk2OSAzMC42NzE5QzE0Ljg5ODQgMzAuNjcxOSAxMy4zNTk0IDI5LjEzMjkgMTMuMzU5NCAyNy4yMzQ0VjI1LjM1OTRDMTMuMzU5NCAyMy40NjA5IDE0Ljg5ODQgMjEuOTIxOSAxNi43OTY5IDIxLjkyMTlIMjcuMTUyOUwyNy4xNTI5IDE1Ljc4MjFIMTQuMzA4M0MxMy43OTA2IDE1Ljc4MjEgMTMuMzcwOCAxNS4zNjI0IDEzLjM3MDggMTQuODQ0NlYySDAuOTM3NVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTE2LjAyNzEgMkMxNS45NDA4IDIgMTUuODcwOCAyLjA2OTk2IDE1Ljg3MDggMi4xNTYyNVYxMi44MTM0QzE1Ljg3MDggMTMuMDcyMyAxNi4wODA3IDEzLjI4MjEgMTYuMzM5NiAxMy4yODIxSDI2Ljk5NjdDMjcuMDgzIDEzLjI4MjEgMjcuMTUyOSAxMy4yMTIyIDI3LjE1MjkgMTMuMTI1OUwyNy4xNTI5IDEyLjYxNzFDMjcuMTUyOSAxMi4zNjg4IDI3LjA1NDUgMTIuMTMwNyAyNi44NzkxIDExLjk1NUwxNy4yMjI1IDIuMjc1MzhDMTcuMDQ2NiAyLjA5OTA4IDE2LjgwNzkgMiAxNi41NTg4IDJIMTYuMDI3MVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTI5Ljc2NDIgMzQuNjUwM0MyOS4wMzQgMzMuOTE2IDI5LjAzNzQgMzIuNzI4OCAyOS43NzE2IDMxLjk5ODZMMzMuNjE5NyAyOC4xNzE5TDE2Ljc5NjkgMjguMTcxOUMxNi4yNzkxIDI4LjE3MTkgMTUuODU5NCAyNy43NTIxIDE1Ljg1OTQgMjcuMjM0NFYyNS4zNTk0QzE1Ljg1OTQgMjQuODQxNiAxNi4yNzkxIDI0LjQyMTkgMTYuNzk2OSAyNC40MjE5TDMzLjU0MTIgMjQuNDIxOUwyOS43NzE2IDIwLjY3MzNDMjkuMDM3NCAxOS45NDMxIDI5LjAzNCAxOC43NTU5IDI5Ljc2NDIgMTguMDIxNkMzMC40OTQ0IDE3LjI4NzQgMzEuNjgxNiAxNy4yODQgMzIuNDE1OSAxOC4wMTQyTDM5LjQ0NzEgMjUuMDA2NEMzOS44MDEgMjUuMzU4MyA0MCAyNS44MzY4IDQwIDI2LjMzNTlDNDAgMjYuODM1IDM5LjgwMSAyNy4zMTM1IDM5LjQ0NzEgMjcuNjY1NUwzMi40MTU5IDM0LjY1NzZDMzEuNjgxNiAzNS4zODc4IDMwLjQ5NDQgMzUuMzg0NSAyOS43NjQyIDM0LjY1MDNaIiBmaWxsPSIjMzUzRjZFIi8+Cjwvc3ZnPgo="
        },
        "displayName": "Extract from File",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1262,
        "icon": "file:google.svg",
        "name": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Language Models",
                "Root Nodes"
              ],
              "Language Models": [
                "Chat Models (Recommended)"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Google Gemini Chat Model"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"
        },
        "displayName": "Google Gemini Chat Model",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 34,
        "name": "Invoice Processing"
      },
      {
        "id": 51,
        "name": "Multimodal AI"
      }
    ],
    "image": []
  }
}