{
  "workflow": {
    "id": 9682,
    "name": "Route Jira tasks to experts using Google Sheets and GPT-4o-mini",
    "views": 50,
    "recentViews": 0,
    "totalViews": 50,
    "createdAt": "2025-10-15T06:57:20.569Z",
    "description": "## Description \nAutomatically assigns new tasks from an Excel/Google Sheets source to the best-fit employee based on expertise, then creates issues in Jira. Gain fast, consistent routing that reduces manual triage and speeds delivery. 🧠📊➡️🗂️\n\n## What This Template Does \n- Fetches new task rows and related areas from Google Sheets/Excel.\n- Analyzes each item with an AI Agent using Azure OpenAI.\n- Selects the best-fit employee by matching the area to expertise stored in the sheet.\n- Returns structured outputs (task, assignee, expertise, ID, bug/task) and creates the Jira issue.\n- Applies rule-based handling for bugs vs tasks via a Switch node.\n\n## Key Benefits \n⏱ Save time by automating task assignment from new entries.\n🎯 Improve accuracy with expertise-based matching.\n📋 Keep clean, structured outputs for downstream systems.\n🔁 Seamless handoff from Sheets to Jira with no manual steps.\n\n## Features \n- Google Sheets Trigger: Reads new task name and related area from the sheet.\n- AI Agent (Azure OpenAI): Evaluates expertise fit and decides the best assignee.\n- Structured Output Parser: Returns exactly five fields: task_name, assignee_name, expertise, employee_id, item_type (bug/task).\n- Jira Create Issue: Creates issues in Jira using selected assignee and item type.\n- Switch (Rules): Routes logic for bugs vs tasks for consistent categorization.\n\n## Requirements \n- n8n instance: Cloud or self-hosted.\n- Google Sheets access: Sheet containing employee roster with columns for Name, Expertise, and ID; connect credentials in n8n.\n- Azure OpenAI (GPT-4o-mini): Configure the Azure OpenAI Chat Model credentials for the AI Agent.\n- Jira credentials: Authorized account with permissions to create issues.\n- Output Parser setup: Structured Output Parser configured to the five-field schema: task_name, assignee_name, expertise, employee_id, item_type.\n\n## Target Audience \n🧩 IT Support and Ops teams routing incoming work.\n🧭 Project managers orchestrating assignments at scale.\n🛠 Engineering managers seeking consistent triage.\n📈 Business operations teams automating intake to delivery.\n\n## Step-by-Step Setup Instructions \n- Connect Google Sheets credentials and map the task and area fields; ensure roster columns (Name, Expertise, ID) are present.\n- Add Jira credentials and set the Create Issue node to your target project and issue type.\n- Configure Azure OpenAI (GPT-4o-mini) for the AI Agent and provide credentials.\n- Import the workflow, assign all credentials, and align the Structured Output Parser to the five-field schema.\n- Run a test with sample rows; confirm assignee selection and Jira issue creation; then enable scheduling.\n\n## Security Best Practices \n- Use least-privilege API tokens for Google Sheets and Jira.\n- Restrict sheet access to only required users and service accounts.\n- Validate and sanitize incoming task data before issue creation.\n- Store credentials securely in n8n and rotate them regularly.\n- Log only necessary fields; avoid sensitive data in workflow logs.\n ",
    "workflow": {
      "id": "dlSaktSpjNmnRa19",
      "meta": {
        "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
        "templateCredsSetupCompleted": true
      },
      "name": "Auto-Assign Jira Issues from Google Sheets with Azure OpenAI (GPT-4o-mini) 🚀",
      "tags": [],
      "nodes": [
        {
          "id": "e4492d7d-a417-481b-9a22-edb34409ad44",
          "name": "Google Sheets Trigger",
          "type": "n8n-nodes-base.googleSheetsTrigger",
          "position": [
            0,
            96
          ],
          "parameters": {
            "event": "rowAdded",
            "options": {},
            "pollTimes": {
              "item": [
                {
                  "mode": "everyMinute"
                }
              ]
            },
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1aXin2bvkoNYIARJZeYjWDl8wTVVbSYc1A0kud2Mo21Y/edit#gid=0",
              "cachedResultName": "Sheet1"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1aXin2bvkoNYIARJZeYjWDl8wTVVbSYc1A0kud2Mo21Y",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1aXin2bvkoNYIARJZeYjWDl8wTVVbSYc1A0kud2Mo21Y/edit?usp=drivesdk",
              "cachedResultName": "new tasks for the week"
            }
          },
          "credentials": {
            "googleSheetsTriggerOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsTriggerOAuth2Api Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "ae918733-f905-4d5b-a43f-80efeb574edc",
          "name": "AI Agent",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            280,
            96
          ],
          "parameters": {
            "text": "=Task Name: {{ $json['Task Name'] }}\nRelated Area: {{ $json.Area }}",
            "options": {
              "batching": {
                "delayBetweenBatches": 500
              },
              "systemMessage": "=You are an AI Assignment Agent. Your job is to read a task’s name and its related area, consult the Google Sheets tool to find the best-fit employee based on expertise, and return a structured result with exactly five items.\n\nInputs:\n- Task Name: a short title describing the task.\n- Related Area: the domain/category the task falls into (e.g., backend, frontend, DevOps, security, QA, data).\n\nAvailable Tool:\n- Google Sheets: The sheet contains employee roster rows with at least these columns:\n  - Name\n  - Expertise (one or more skills, areas, or domains; may be comma-separated)\n  - ID (unique employee identifier)\n\nGoal:\n- Select the single best-fit employee for the task based on matching Related Area to employee Expertise.\n\nOperating Rules:\n1. Extract Task Name and Related Area from the user message. Normalize to lowercase and trim whitespace.\n2. Use the Google Sheets tool to read all rows from the configured employee roster sheet.\n3. Parse each row’s Expertise into a set of normalized keywords (split by commas, slashes, or semicolons; trim; lowercase).\n4. Scoring:\n   - Exact match: Related Area equals any expertise keyword → 3 points.\n   - Close match: Related Area appears as a substring in an expertise keyword or vice versa → 2 points.\n   - Semantic/alias match: common synonyms (e.g., “backend” ~ “server-side”, “frontend” ~ “UI”, “devops” ~ “SRE”, “data” ~ “analytics”, “security” ~ “infosec”, “QA” ~ “testing”) → 2 points.\n   - Broader category match (e.g., “web” with “frontend”/“backend”) → 1 point.\n5. Choose the employee with the highest score. Tie-break in order:\n   - More specific expertise (shorter keyword length).\n   - More exact matches (count).\n   - Stable ordering by ID ascending.\n6. Do not invent employees or expertise. Only select from the rows returned by Google Sheets.\n7. If no employee scores ≥1 point, return null values for the person fields.\n8. Determine item type (“bug” or “task”):\n   - If the Related Area or Task Name includes bug-like keywords (e.g., “bug”, “fix”, “issue”, “error”, “defect”, “failure”, “broken”, “timeout”), set item_type = \"bug\".\n   - Otherwise, set item_type = \"task\"."
            },
            "promptType": "define",
            "hasOutputParser": true
          },
          "retryOnFail": true,
          "typeVersion": 2.2
        },
        {
          "id": "00ab5a23-4a96-4224-9e1c-979f302d2d49",
          "name": "Azure OpenAI Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
          "position": [
            224,
            320
          ],
          "parameters": {
            "model": "gpt-4o-mini",
            "options": {}
          },
          "credentials": {
            "azureOpenAiApi": {
              "id": "credential-id",
              "name": "azureOpenAiApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "076f832a-b000-419a-8379-aa91667754e0",
          "name": "Get row(s) in sheet in Google Sheets",
          "type": "n8n-nodes-base.googleSheetsTool",
          "position": [
            352,
            320
          ],
          "parameters": {
            "options": {},
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Qtw6wd_bT51-wPrDIgZdwqWb5JxkkdE0d4Fh14HP8sE/edit#gid=0",
              "cachedResultName": "Sheet1"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1Qtw6wd_bT51-wPrDIgZdwqWb5JxkkdE0d4Fh14HP8sE",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Qtw6wd_bT51-wPrDIgZdwqWb5JxkkdE0d4Fh14HP8sE/edit?usp=drivesdk",
              "cachedResultName": "JIRA Tracking Account IDs"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "05ce4d67-3e8a-4b59-9732-ebd4ce415205",
          "name": "Structured Output Parser",
          "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
          "position": [
            480,
            320
          ],
          "parameters": {
            "jsonSchemaExample": "{\n\t\"task_name\": \"Fix login API timeout\",\n  \"assignee_name\": \"Priya Sharma\",\n  \"expertise\": \"backend, API performance\",\n  \"employee_id\": \"712020:67676669-f944-4347-a465-81096c2a85ca\",\n  \"item_type\": \"bug\"\n}"
          },
          "typeVersion": 1.3
        },
        {
          "id": "815bcddd-898a-448e-ad65-1d1ab5bd0c96",
          "name": "Create an issue",
          "type": "n8n-nodes-base.jira",
          "position": [
            912,
            0
          ],
          "parameters": {
            "project": {
              "__rl": true,
              "mode": "list",
              "value": "10000",
              "cachedResultName": "My Scrum Project"
            },
            "summary": "={{ $json.output.task_name }}",
            "issueType": {
              "__rl": true,
              "mode": "list",
              "value": "10005",
              "cachedResultName": "Bug"
            },
            "additionalFields": {
              "assignee": {
                "__rl": true,
                "mode": "id",
                "value": "={{ $json.output.employee_id }}"
              }
            }
          },
          "credentials": {
            "jiraSoftwareCloudApi": {
              "id": "credential-id",
              "name": "jiraSoftwareCloudApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "7465acca-43da-48fd-9d64-3ec187d84513",
          "name": "Switch",
          "type": "n8n-nodes-base.switch",
          "position": [
            688,
            96
          ],
          "parameters": {
            "rules": {
              "values": [
                {
                  "conditions": {
                    "options": {
                      "version": 2,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "34be92a7-20bd-4741-a84e-b7f4da5101cf",
                        "operator": {
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.output.item_type }}",
                        "rightValue": "bug"
                      }
                    ]
                  }
                },
                {
                  "conditions": {
                    "options": {
                      "version": 2,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "116c85b0-ec2b-45e1-8752-b9554f382a32",
                        "operator": {
                          "name": "filter.operator.equals",
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.output.item_type }}",
                        "rightValue": "task"
                      }
                    ]
                  }
                }
              ]
            },
            "options": {}
          },
          "typeVersion": 3.3
        },
        {
          "id": "64c2aa34-f415-4383-b3fa-460e1cf48372",
          "name": "Create an issue1",
          "type": "n8n-nodes-base.jira",
          "position": [
            912,
            192
          ],
          "parameters": {
            "project": {
              "__rl": true,
              "mode": "list",
              "value": "10000",
              "cachedResultName": "My Scrum Project"
            },
            "summary": "={{ $json.output.task_name }}",
            "issueType": {
              "__rl": true,
              "mode": "list",
              "value": "10004",
              "cachedResultName": "Task"
            },
            "additionalFields": {
              "assignee": {
                "__rl": true,
                "mode": "id",
                "value": "={{ $json.output.employee_id }}"
              }
            }
          },
          "credentials": {
            "jiraSoftwareCloudApi": {
              "id": "credential-id",
              "name": "jiraSoftwareCloudApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "89fbfd63-c1c4-49e5-900e-80229844e7b9",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -336,
            64
          ],
          "parameters": {
            "height": 192,
            "content": "## Google Sheets Trigger  \nWatches a sheet for newly added rows and passes the Task Name and Related Area into the workflow for processing."
          },
          "typeVersion": 1
        },
        {
          "id": "ed1ad258-9580-4f3a-897a-54b57c43530d",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            272,
            -160
          ],
          "parameters": {
            "height": 224,
            "content": "## AI Agent (Azure OpenAI Chat Model)  \nEvaluates the task and area, compares against employee expertise from Sheets, and outputs the structured assignment fields."
          },
          "typeVersion": 1
        },
        {
          "id": "f40e5efe-53f5-4ad7-9ecb-8b613b2ea150",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            624,
            272
          ],
          "parameters": {
            "height": 144,
            "content": "## Switch (Rules)  \nRoutes workflow logic based on item_type to apply different handling or fields for a bug versus a task."
          },
          "typeVersion": 1
        },
        {
          "id": "98101c77-67d7-485b-9aef-1e566bffd9d6",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            832,
            -224
          ],
          "parameters": {
            "height": 192,
            "content": "## Create an issue (Jira)  \nCreates the Jira issue with the chosen assignee and metadata from the parsed output, completing the intake-to-ticket flow."
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "7248046c-82d9-4feb-91f8-170732718007",
      "connections": {
        "Switch": {
          "main": [
            [
              {
                "node": "Create an issue",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Create an issue1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI Agent": {
          "main": [
            [
              {
                "node": "Switch",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Google Sheets Trigger": {
          "main": [
            [
              {
                "node": "AI Agent",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Azure OpenAI Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "AI Agent",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Structured Output Parser": {
          "ai_outputParser": [
            [
              {
                "node": "AI Agent",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        },
        "Get row(s) in sheet in Google Sheets": {
          "ai_tool": [
            [
              {
                "node": "AI Agent",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 12,
      "nodeTypes": {
        "n8n-nodes-base.jira": {
          "count": 2
        },
        "n8n-nodes-base.switch": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 4
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "n8n-nodes-base.googleSheetsTool": {
          "count": 1
        },
        "n8n-nodes-base.googleSheetsTrigger": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.outputParserStructured": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Rahul Joshi",
      "username": "rahul08",
      "bio": "Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.\n\n",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/callrahul/"
      ],
      "avatar": "https://gravatar.com/avatar/b6cf57822463143589b36ada06fbf6cb1509223a740fae3160b28f1ce41ccc12?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 77,
        "icon": "file:jira.svg",
        "name": "n8n-nodes-base.jira",
        "codex": {
          "data": {
            "resources": {
              "generic": [
                {
                  "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/creating-custom-incident-response-workflows-with-n8n/",
                  "label": "How to automate every step of an incident response workflow"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.jira/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/jira/"
                }
              ]
            },
            "categories": [
              "Development",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "Jira Software"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjguMjUgNzEuMjUiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMuMTI1IiB5PSIzLjEyNSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjkxLjklIiB4Mj0iMjguNDklIiB5MT0iNDAuMjIlIiB5Mj0iODEuNjMlIj48c3RvcCBvZmZzZXQ9IjE4JSIgc3RvcC1jb2xvcj0iIzAwNTJjYyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzI2ODRmZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIiB4MT0iOC43JSIgeDI9IjcyLjI2JSIgeTE9IjU5LjE3JSIgeTI9IjE3Ljk5JSI+PHN0b3Agb2Zmc2V0PSIxOCUiIHN0b3AtY29sb3I9IiMwMDUyY2MiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMyNjg0ZmYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48c3ltYm9sIGlkPSJhIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgZmlsbC1ydWxlPSJub256ZXJvIiBzdHJva2U9Im5vbmUiPjxwYXRoIGZpbGw9IiMyNjg0ZmYiIGQ9Ik02MS4xNjEgMzAuMjExIDMwLjk1IDAgLjc0IDMwLjIxMWEyLjU0IDIuNTQgMCAwIDAgMCAzLjU4MWwzMC4yMTEgMzAuMjEgMzAuMjExLTMwLjIxYTIuNTQgMi41NCAwIDAgMCAwLTMuNTgxek0zMC45NSA0MS40NmwtOS40NjItOS40NjIgOS40NjItOS40NjIgOS40NjIgOS40NjJ6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTMwLjk1IDIyLjU5OUMyNC43NTUgMTYuNDA1IDI0LjcyNCA2LjM3IDMwLjg4MS4xMzhMMTAuMTE0IDIwLjc3NGwxMS4yNjggMTEuMjY4eiIvPjxwYXRoIGZpbGw9InVybCgjYykiIGQ9Ik00MC40MzcgMzEuOTczIDMwLjk1IDQxLjQ2YTE1LjkzIDE1LjkzIDAgMCAxIDAgMjIuNTM2bDIwLjc0OS0yMC43NDl6Ii8+PC9nPjwvc3ltYm9sPjwvc3ZnPg=="
        },
        "displayName": "Jira Software",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 4,
            "name": "Productivity"
          },
          {
            "id": 5,
            "name": "Development"
          }
        ]
      },
      {
        "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": 841,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheetsTrigger",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Spreadsheet",
              "GS"
            ],
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googlesheetstrigger/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Google Sheets Trigger"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "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": 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": 1253,
        "icon": "file:azure.svg",
        "name": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatazureopenai/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Language Models",
                "Root Nodes"
              ],
              "Language Models": [
                "Chat Models (Recommended)"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Azure OpenAI Chat Model"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMjQyIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iNTguOTcyJSIgeDI9IjM3LjE5MSUiIHkxPSI3LjQxMSUiIHkyPSIxMDMuNzYyJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzExNEE4QiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzA2NjlCQyIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iNTkuNzE5JSIgeDI9IjUyLjY5MSUiIHkxPSI1Mi4zMTMlIiB5Mj0iNTQuODY0JSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1vcGFjaXR5PSIuMyIvPjxzdG9wIG9mZnNldD0iNy4xJSIgc3RvcC1vcGFjaXR5PSIuMiIvPjxzdG9wIG9mZnNldD0iMzIuMSUiIHN0b3Atb3BhY2l0eT0iLjEiLz48c3RvcCBvZmZzZXQ9IjYyLjMlIiBzdG9wLW9wYWNpdHk9Ii4wNSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImMiIHgxPSIzNy4yNzklIiB4Mj0iNjIuNDczJSIgeTE9IjQuNiUiIHkyPSI5OS45NzklIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjM0NDQkY0Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMjg5MkRGIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZmlsbD0idXJsKCNhKSIgZD0iTTg1LjM0My4wMDNoNzUuNzUzTDgyLjQ1NyAyMzNhMTIuMDggMTIuMDggMCAwIDEtMTEuNDQyIDguMjE2SDEyLjA2QTEyLjA2IDEyLjA2IDAgMCAxIC42MzMgMjI1LjMwM0w3My44OTggOC4yMTlBMTIuMDggMTIuMDggMCAwIDEgODUuMzQzIDB6Ii8+PHBhdGggZmlsbD0iIzAwNzhENCIgZD0iTTE5NS40MjMgMTU2LjI4Mkg3NS4yOTdhNS41NiA1LjU2IDAgMCAwLTMuNzk2IDkuNjI3bDc3LjE5IDcyLjA0N2ExMi4xNCAxMi4xNCAwIDAgMCA4LjI4IDMuMjZoNjguMDJ6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTg1LjM0My4wMDNhMTEuOTggMTEuOTggMCAwIDAtMTEuNDcxIDguMzc2TC43MjMgMjI1LjEwNWExMi4wNDUgMTIuMDQ1IDAgMCAwIDExLjM3IDE2LjExMmg2MC40NzVhMTIuOTMgMTIuOTMgMCAwIDAgOS45MjEtOC40MzdsMTQuNTg4LTQyLjk5MSA1Mi4xMDUgNDguNmExMi4zMyAxMi4zMyAwIDAgMCA3Ljc1NyAyLjgyOGg2Ny43NjZsLTI5LjcyMS04NC45MzUtODYuNjQzLjAyTDE2MS4zNy4wMDN6Ii8+PHBhdGggZmlsbD0idXJsKCNjKSIgZD0iTTE4Mi4wOTggOC4yMDdBMTIuMDYgMTIuMDYgMCAwIDAgMTcwLjY3LjAwM0g4Ni4yNDVjNS4xNzUgMCA5Ljc3MyAzLjMwMSAxMS40MjggOC4yMDRMMTcwLjk0IDIyNS4zYTEyLjA2MiAxMi4wNjIgMCAwIDEtMTEuNDI4IDE1LjkyaDg0LjQyOWExMi4wNjIgMTIuMDYyIDAgMCAwIDExLjQyNS0xNS45MnoiLz48L3N2Zz4="
        },
        "displayName": "Azure OpenAI Chat Model",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 39,
        "name": "CRM"
      },
      {
        "id": 47,
        "name": "AI Chatbot"
      }
    ],
    "image": []
  }
}