{
  "workflow": {
    "id": 8845,
    "name": "Automatic issue routing in Linear with GPT-4-mini classification",
    "views": 136,
    "recentViews": 0,
    "totalViews": 136,
    "createdAt": "2025-09-23T04:51:41.133Z",
    "description": "## How it works\n\nThis workflow automatically classifies and routes new or updated Linear issues using AI.\nWhen an issue is created or updated, its title and description are analyzed by an OpenAI-powered classifier. The workflow then determines the correct team, routes the issue through the right path, and updates it in Linear.\nThis ensures accurate, consistent triaging and removes the need for manual assignment.\n\n## Step-by-step\n\n**1. Trigger and validation**  \n- **Linear Trigger** – Detects new or updated issues in Linear.  \n- **Filter New Issues Only** – Ensures the issue has a valid title.  \n- **If (Create or Update)** – Confirms the action is either create or update.  \n\n**2. AI classification**  \n- **OpenAI Chat Model** – Provides language model capabilities for classification.  \n- **AI Agent (Bug Classifier)** – Uses issue title and description to assign a team ID.  \n\n**3. Routing logic**  \n- **Engineering Router** – Checks if classification output is Engineering.  \n- **Product Router** – Checks if classification output is Product.  \n- **Design Router** – Checks if classification output is Design.  \n- **Default Router** – Fallback if no match is found.  \n\n**4. Update Linear issue**  \n- **Assign to Engineering** – Updates team assignment in Linear.  \n- **Assign to Product** – Updates team assignment in Linear.  \n- **Assign to Design** – Updates team assignment in Linear.  \n- **Assign to Default** – Assigns to fallback team if no match.  \n\n## Why use this?\n\n- Automates issue triage, eliminating manual team assignment.  \n- Speeds up bug resolution by instantly routing to the right team.  \n- Ensures consistency in bug categorization using AI-driven analysis.  \n- Scales effortlessly with growing issue volume.  \n- Reduces human error in issue management.  \n",
    "workflow": {
      "meta": {
        "templateCredsSetupCompleted": false
      },
      "name": "Linear Bug Auto-Routing",
      "nodes": [
        {
          "id": "8de2b34a-a4ff-4cdb-a028-3a5cf4583e63",
          "name": "📋 Filter New Issues Only",
          "type": "n8n-nodes-base.if",
          "position": [
            -2384,
            736
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 1,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "condition-1",
                  "operator": {
                    "type": "string",
                    "operation": "exists"
                  },
                  "leftValue": "={{ $json.data.title }}",
                  "rightValue": ""
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "ddc917d1-0513-49e0-a522-178210751b71",
          "name": "🔔 Linear Trigger",
          "type": "n8n-nodes-base.linearTrigger",
          "position": [
            -2608,
            736
          ],
          "parameters": {
            "teamId": "YOUR_LINEAR_TEAM_ID",
            "resources": [
              "issue"
            ]
          },
          "credentials": {
            "linearApi": "linear_api_credentials"
          },
          "typeVersion": 1
        },
        {
          "id": "07c6b417-86b4-43a6-b8f5-0db4685b073a",
          "name": "⚖️ If (Create or Update)",
          "type": "n8n-nodes-base.if",
          "position": [
            -2160,
            736
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 2,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "or",
              "conditions": [
                {
                  "id": "a395310f-475c-4726-b2ef-7db876471a36",
                  "operator": {
                    "name": "filter.operator.equals",
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.action }}",
                  "rightValue": "create"
                },
                {
                  "id": "92ece19c-6765-4ed0-a5dc-4fd1ef190cb6",
                  "operator": {
                    "name": "filter.operator.equals",
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.action }}",
                  "rightValue": "update"
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "aab37c69-54c9-4a53-ae6a-780091c1915f",
          "name": "🤖 AI Agent (Bug Classifier)",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            -1936,
            736
          ],
          "parameters": {
            "text": "=You are a bug classification expert. Based on the bug title and description, classify it into exactly one of these teams: Engineering, Product, Design, QA, DevOps, Support.\n\nRules:\n- If it belongs to Engineering, respond with: ENGINEERING_TEAM_ID\n- If it belongs to Product, respond with: PRODUCT_TEAM_ID\n- If it belongs to Design, respond with: DESIGN_TEAM_ID\n- If it belongs to Nothing(Default), respond with: DEFAULT_TEAM_ID\n\n\nRespond with ONLY the correct team ID as specified above. Do not include explanations, text, or formatting.\n\nTitle: {{ $json.data.title }}\nDescription: {{ $json.data.description }}",
            "options": {},
            "promptType": "define"
          },
          "typeVersion": 2.2
        },
        {
          "id": "af0aef84-bb2a-4a6e-a35a-ce1002fb7907",
          "name": "🔀 Engineering Router",
          "type": "n8n-nodes-base.switch",
          "position": [
            -1584,
            448
          ],
          "parameters": {
            "rules": {
              "values": [
                {
                  "conditions": {
                    "options": {
                      "version": 1,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "cedcaf8e-894e-4598-9d82-8e6ad125449c",
                        "operator": {
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.output }}",
                        "rightValue": "ENGINEERING_TEAM_ID"
                      }
                    ]
                  }
                }
              ]
            },
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "8fd08de3-dc30-495d-9ac4-1939d60d5bee",
          "name": "🔀 Product Router",
          "type": "n8n-nodes-base.switch",
          "position": [
            -1584,
            640
          ],
          "parameters": {
            "rules": {
              "values": [
                {
                  "conditions": {
                    "options": {
                      "version": 1,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "1d753992-3f8f-4899-a6db-1394ad513af8",
                        "operator": {
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.output }}",
                        "rightValue": "PRODUCT_TEAM_ID"
                      }
                    ]
                  }
                }
              ]
            },
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "4ebcd42e-7a0b-4a6a-acf0-decf9b60c7ca",
          "name": "🔀 Design Router",
          "type": "n8n-nodes-base.switch",
          "position": [
            -1584,
            832
          ],
          "parameters": {
            "rules": {
              "values": [
                {
                  "conditions": {
                    "options": {
                      "version": 1,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "85fcf1da-00b7-4392-9421-23dd52c18258",
                        "operator": {
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.output }}",
                        "rightValue": "DESIGN_TEAM_ID"
                      }
                    ]
                  }
                }
              ]
            },
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "11e315a7-50e2-4789-ad38-4c9a33569ede",
          "name": "🔀 Default Router",
          "type": "n8n-nodes-base.switch",
          "position": [
            -1584,
            1024
          ],
          "parameters": {
            "rules": {
              "values": [
                {
                  "conditions": {
                    "options": {
                      "version": 1,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "85fcf1da-00b7-4392-9421-23dd52c18258",
                        "operator": {
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.output }}",
                        "rightValue": "DEFAULT_TEAM_ID"
                      }
                    ]
                  }
                }
              ]
            },
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "37ef1f41-1cb2-40d0-99d2-f10603253e8f",
          "name": "🛠️ Assign to Engineering",
          "type": "n8n-nodes-base.linear",
          "position": [
            -1360,
            448
          ],
          "parameters": {
            "issueId": "={{ $('⚖️ If (Create or Update)').item.json.data.id }}",
            "operation": "update",
            "updateFields": {
              "teamId": "={{ $json.output }}"
            }
          },
          "credentials": {
            "linearApi": "linear_api_credentials"
          },
          "typeVersion": 1.1
        },
        {
          "id": "1ff305f6-6ad4-496e-8380-22e26f637c55",
          "name": "📦 Assign to Product",
          "type": "n8n-nodes-base.linear",
          "position": [
            -1360,
            640
          ],
          "parameters": {
            "issueId": "={{ $('⚖️ If (Create or Update)').item.json.data.id }}",
            "operation": "update",
            "updateFields": {
              "teamId": "={{ $json.output }}"
            }
          },
          "credentials": {
            "linearApi": "linear_api_credentials"
          },
          "typeVersion": 1.1
        },
        {
          "id": "5fb7fd8b-521e-4bf2-8e25-319e4a4bd961",
          "name": "🎨 Assign to Design",
          "type": "n8n-nodes-base.linear",
          "position": [
            -1360,
            832
          ],
          "parameters": {
            "issueId": "={{ $('⚖️ If (Create or Update)').item.json.data.id }}",
            "operation": "update",
            "updateFields": {
              "teamId": "={{ $json.output }}"
            }
          },
          "credentials": {
            "linearApi": "linear_api_credentials"
          },
          "typeVersion": 1.1
        },
        {
          "id": "998b5ad7-72b0-49d0-9e87-57bca44b5976",
          "name": "📂 Assign to Default",
          "type": "n8n-nodes-base.linear",
          "position": [
            -1360,
            1024
          ],
          "parameters": {
            "issueId": "={{ $('⚖️ If (Create or Update)').item.json.data.id }}",
            "operation": "update",
            "updateFields": {
              "teamId": "={{ $json.output }}"
            }
          },
          "credentials": {
            "linearApi": "linear_api_credentials"
          },
          "typeVersion": 1.1
        },
        {
          "id": "c8beeaf3-ca48-4d22-8889-5b0bac314700",
          "name": "🧠 OpenAI Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            -1872,
            960
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4-mini"
            },
            "options": {}
          },
          "credentials": {
            "openAiApi": "openai_api_credentials"
          },
          "typeVersion": 1.2
        },
        {
          "id": "e5ea3681-7a84-4582-b473-147ce69fb941",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -2656,
            144
          ],
          "parameters": {
            "color": 5,
            "width": 640,
            "height": 1040,
            "content": "## 🔔 Trigger & Filtering\n\n*🔔 Linear Trigger — This node acts as the entry point of the workflow. It continuously monitors Linear for any new activity and immediately triggers the automation whenever an issue is created or updated. By doing so, it ensures that the workflow reacts in real time without requiring any manual intervention.\n\n📋 Filter New Issues Only — Once triggered, the workflow passes through a validation step. This filter checks whether the issue has a valid title before allowing it to move further down the pipeline. This prevents incomplete or irrelevant records (such as empty or placeholder issues) from being unnecessarily processed, keeping the workflow clean and efficient.\n\n⚖️ If (Create or Update) — After validation, the workflow runs a conditional check to determine the type of action that occurred in Linear. Specifically, it verifies whether the incoming item is the result of a create or an update event. Only if the condition is met does the issue proceed to the next stage, ensuring the workflow remains focused on meaningful changes rather than every possible event.*"
          },
          "typeVersion": 1
        },
        {
          "id": "ad3eda57-3289-46f9-bb1a-7cacb0632206",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -2000,
            144
          ],
          "parameters": {
            "color": 4,
            "width": 320,
            "height": 1040,
            "content": "## 🤖 AI Classification\n\n*🧠 OpenAI Chat Model — This node serves as the backbone of the intelligent classification process. It leverages the power of an advanced large language model (LLM), specifically GPT-4-mini, to analyze text with accuracy and efficiency. By integrating directly into the workflow, it enables natural language understanding, which is essential for interpreting bug reports in a human-like manner. This ensures that every issue is examined contextually rather than just through static keyword checks.\n\n🤖 AI Agent (Bug Classifier) — Built on top of the OpenAI Chat Model, this specialized agent is designed to automatically interpret the bug title and description provided in Linear. Its role is to classify each issue into exactly one of the predefined categories: Engineering, Product, Design, or Default. By doing so, it removes the need for manual triaging, speeds up the bug management process, and ensures that issues are instantly directed to the right team with minimal human oversight.*"
          },
          "typeVersion": 1
        },
        {
          "id": "45ab34c6-9464-4d11-be27-297efa530029",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1408,
            144
          ],
          "parameters": {
            "height": 1040,
            "content": "## 🗂️ Assignment Actions\n\n*Assign to Engineering, Assign to Product, Assign to Design, and Assign to Default update the Linear issue with the correct team ID.\n\nThese ensure the issue gets routed into the right backlog automatically.*"
          },
          "typeVersion": 1
        },
        {
          "id": "9f3b5383-c215-4e33-ac47-93698cf186a4",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1664,
            144
          ],
          "parameters": {
            "color": 3,
            "height": 1040,
            "content": "## 🔀 Routing Logic\n\n*Engineering Router, Product Router, Design Router, and Default Router each check the classifier's output against the correct team ID.\n\nThis guarantees that only one path is chosen, based on the assigned team.*"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "connections": {
        "🔀 Design Router": {
          "main": [
            [
              {
                "node": "🎨 Assign to Design",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🔀 Default Router": {
          "main": [
            [
              {
                "node": "📂 Assign to Default",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🔀 Product Router": {
          "main": [
            [
              {
                "node": "📦 Assign to Product",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🔔 Linear Trigger": {
          "main": [
            [
              {
                "node": "📋 Filter New Issues Only",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🧠 OpenAI Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "🤖 AI Agent (Bug Classifier)",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "🔀 Engineering Router": {
          "main": [
            [
              {
                "node": "🛠️ Assign to Engineering",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "📋 Filter New Issues Only": {
          "main": [
            [
              {
                "node": "⚖️ If (Create or Update)",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "⚖️ If (Create or Update)": {
          "main": [
            [
              {
                "node": "🤖 AI Agent (Bug Classifier)",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🤖 AI Agent (Bug Classifier)": {
          "main": [
            [
              {
                "node": "🔀 Engineering Router",
                "type": "main",
                "index": 0
              },
              {
                "node": "🔀 Product Router",
                "type": "main",
                "index": 0
              },
              {
                "node": "🔀 Design Router",
                "type": "main",
                "index": 0
              },
              {
                "node": "🔀 Default Router",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 17,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 2
        },
        "n8n-nodes-base.linear": {
          "count": 4
        },
        "n8n-nodes-base.switch": {
          "count": 4
        },
        "n8n-nodes-base.stickyNote": {
          "count": 4
        },
        "n8n-nodes-base.linearTrigger": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatOpenAi": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Avkash Kakdiya",
      "username": "itechnotion",
      "bio": "🚀 Founder of iTechNotion — we build custom AI-powered automation workflows for startups, agencies, and founders.\n💡 Specializing in agentic AI systems, content automation, sales funnels, and digital workers.\n🔧 14+ years in tech | Building scalable no-code/low-code solutions using n8n, OpenAI, and other API-first tools.\n📬 Let’s automate what slows you down.",
      "verified": true,
      "links": [
        "https://calendly.com/itechnotion_sales/schedule-your-expert-consultation-for-automation"
      ],
      "avatar": "https://gravatar.com/avatar/cd18cea4647ff1df4cb154c7d172ca67dcf656f09a3f1ffece5646296d1822d5?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 20,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.if",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "If",
          "color": "#408000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "If",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 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": 551,
        "icon": "file:linear.svg",
        "name": "n8n-nodes-base.linearTrigger",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.lineartrigger/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/linear/"
                }
              ]
            },
            "categories": [
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Linear Trigger"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgZmlsbD0ibm9uZSIgc3R5bGU9IndpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7bWFyZ2luLXJpZ2h0OjEycHgiPjxwYXRoIGZpbGw9IiM1RTZBRDIiIGQ9Im0uNDAzIDM3LjQgMjYuMTk4IDI2LjE5N0MxMy4yMjMgNjEuMzM2IDIuNjY0IDUwLjc3Ny40MDMgMzcuMzk5TTAgMzAuMjg3IDMzLjcxMyA2NGEzMiAzMiAwIDAgMCA1Ljg1Mi0uODU4TC44NTggMjQuNDM1Yy0uNDYgMS44OS0uNzUgMy44NDctLjg1OCA1Ljg1Mk0yLjUzNiAxOS40MDRsNDIuMDYgNDIuMDZhMzIgMzIgMCAwIDAgNC40LTIuMzFsLTQ0LjE1LTQ0LjE1YTMyIDMyIDAgMCAwLTIuMzEgNC40TTcuNjk1IDExLjE0NUMxMy41NjggNC4zMiAyMi4yNjggMCAzMS45NzcgMCA0OS42NjMgMCA2NCAxNC4zMzcgNjQgMzIuMDIzYzAgOS43MS00LjMyIDE4LjQxLTExLjE0NSAyNC4yODJ6Ii8+PC9zdmc+"
        },
        "displayName": "Linear Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 563,
        "icon": "file:linear.svg",
        "name": "n8n-nodes-base.linear",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.linear/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/linear/"
                }
              ]
            },
            "categories": [
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "Linear"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgZmlsbD0ibm9uZSIgc3R5bGU9IndpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7bWFyZ2luLXJpZ2h0OjEycHgiPjxwYXRoIGZpbGw9IiM1RTZBRDIiIGQ9Im0uNDAzIDM3LjQgMjYuMTk4IDI2LjE5N0MxMy4yMjMgNjEuMzM2IDIuNjY0IDUwLjc3Ny40MDMgMzcuMzk5TTAgMzAuMjg3IDMzLjcxMyA2NGEzMiAzMiAwIDAgMCA1Ljg1Mi0uODU4TC44NTggMjQuNDM1Yy0uNDYgMS44OS0uNzUgMy44NDctLjg1OCA1Ljg1Mk0yLjUzNiAxOS40MDRsNDIuMDYgNDIuMDZhMzIgMzIgMCAwIDAgNC40LTIuMzFsLTQ0LjE1LTQ0LjE1YTMyIDMyIDAgMCAwLTIuMzEgNC40TTcuNjk1IDExLjE0NUMxMy41NjggNC4zMiAyMi4yNjggMCAzMS45NzcgMCA0OS42NjMgMCA2NCAxNC4zMzcgNjQgMzIuMDIzYzAgOS43MS00LjMyIDE4LjQxLTExLjE0NSAyNC4yODJ6Ii8+PC9zdmc+"
        },
        "displayName": "Linear",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "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": 1119,
        "icon": "fa:robot",
        "name": "@n8n/n8n-nodes-langchain.agent",
        "codex": {
          "data": {
            "alias": [
              "LangChain",
              "Chat",
              "Conversational",
              "Plan and Execute",
              "ReAct",
              "Tools"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Agents",
                "Root Nodes"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "AI Agent",
          "color": "#404040"
        },
        "iconData": {
          "icon": "robot",
          "type": "icon"
        },
        "displayName": "AI Agent",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1153,
        "icon": "file:openAiLight.svg",
        "name": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Language Models",
                "Root Nodes"
              ],
              "Language Models": [
                "Chat Models (Recommended)"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "OpenAI Chat Model"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="
        },
        "displayName": "OpenAI Chat Model",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 49,
        "name": "AI Summarization"
      }
    ],
    "image": []
  }
}