{
  "workflow": {
    "id": 10840,
    "name": "Sales CRM chatbot with GPT-4o-mini, Google Sheets lookup & memory",
    "views": 268,
    "recentViews": 1,
    "totalViews": 268,
    "createdAt": "2025-11-14T14:55:25.334Z",
    "description": "## 📘 Description:\n This workflow creates a fully interactive AI-powered Sales CRM Chatbot inside n8n, capable of understanding user queries, searching Google Sheets for CRM data, and responding intelligently based on real records.\n It integrates GPT-4o-mini with two live data sources—Outreach Automation Sheet and GHL Opportunity Database—allowing the bot to answer questions about leads, contact details, proposal links, outreach status, and opportunity information.\n The bot follows strict rules: it never guesses data, always performs lookups before answering, and remembers short-term conversation history for multi-turn chats.\n Every interaction is logged into a “chat_memory” sheet, while invalid responses are captured separately for debugging.\n The result is a real-time Sales Assistant Chat Interface that combines AI reasoning, structured tool calls, CRM lookups, and persistent memory.\n\n## ⚙️ What This Workflow Does (Step-by-Step)\n\n▶️ When Chat Message Received (Chat Trigger)\n Starts the workflow whenever a user sends a message in the n8n Chat UI.\n Captures chatInput, session ID, and context for the conversation.\n\n🧠 OpenAI Chat Model (GPT-4o-mini)\n Provides the AI reasoning engine used by the Sales CRM Router.\n Handles intent detection, tool-call planning, data interpretation, and conversational flow.\n\n🤖 AI Sales CRM Router (Agent Node)\n The brain of the system.\n Responsibilities:\nUnderstand user intent\nIdentify if a lookup is required\nAutomatically call the correct Google Sheets tool\nEnforce strict “lookup before answer” rules\nProduce structured, helpful responses\nAsk for missing details when lookup fails\nUses JSON-formatted tool-calls exactly as defined in the system prompt.\n\n📂 Google Sheets Tool — Outreach Sheet\n Queries the outreach automation sheet.\n Used when user asks about:\nLead status\nOutreach progress\nProposal links\nContact email/name lookup\nFollow-up details\n\n📂 Google Sheets Tool — Opportunity Sheet\n Queries the ghl database sheet.\n Used for:\nGHL opportunity details\nPipeline stage\nDeal value\nAssigned representative\nCompany details\n\n🧠 Conversation Memory Buffer (Short-Term Memory)\n Stores the last 7 conversational turns.\n Allows multi-turn interactions where the AI remembers previous questions and context within a session.\n\n🔍 Validate AI Output Payload (IF Node)\n Ensures the AI produced a valid output.\n ✅ If valid → saved to chat memory + returned to user\n ❌ If invalid → logged for review in error sheet\n\n🗂️ Write Chat Memory to Google Sheets\n Appends:\nTimestamp\nSession ID\nUser message\nAI response\n to the chat_memory sheet.\nCreates a complete audit trail for every conversation.\n\n⚠️ Log Invalid Chat Records to Google Sheets\n Captures failed or empty responses.\n Helps debug incorrect tool calls or malformed AI outputs.\n\n💬 Send Chat Response\n Delivers the AI’s final message back to the user instantly in the n8n chat window.\n\n## 🧩 Prerequisites\nOpenAI GPT-4o-mini API key\nGoogle Sheets OAuth (Techdome account)\nStructured Outreach Automation & GHL Opportunity sheets\nn8n Chat UI enabled\n\n## 💡 Key Benefits\n ✅ Real-time lead + opportunity lookup directly inside chat\n ✅ Fail-safe, rule-driven AI that never “hallucinates” data\n ✅ Multi-turn memory for natural conversation\n ✅ All chats logged for training and QA\n ✅ Perfect internal CRM companion for sales teams\n\n## 👥 Perfect For\nSales teams needing instant CRM insights\nOutreach teams checking proposal status\nSDRs handling lead follow-ups\nAnyone wanting AI-assisted CRM conversations inside n8n\n",
    "workflow": {
      "id": "auNGerGZ1885fnxC",
      "meta": {
        "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
        "templateCredsSetupCompleted": true
      },
      "name": "AI-Powered Sales CRM Chatbot with Google Sheets Lookup & Memory (GPT-4o-mini)",
      "tags": [],
      "nodes": [
        {
          "id": "36c30ad7-6cba-4e85-a6cd-2c6f779cc6d8",
          "name": "When chat message received",
          "type": "@n8n/n8n-nodes-langchain.chatTrigger",
          "position": [
            -512,
            -32
          ],
          "webhookId": "2c2a6ead-66fa-4f7a-9d63-5ce72fdc42b4",
          "parameters": {
            "options": {
              "responseMode": "responseNodes"
            }
          },
          "typeVersion": 1.3
        },
        {
          "id": "dbd2d924-42d3-45a8-ab25-cba180f1e6df",
          "name": "OpenAI Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            -736,
            576
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o-mini",
              "cachedResultName": "gpt-4o-mini"
            },
            "options": {}
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "c3a8fd2b-f863-4274-a04b-1083b1f56a3c",
          "name": "outreachSheet",
          "type": "n8n-nodes-base.googleSheetsTool",
          "position": [
            304,
            672
          ],
          "parameters": {
            "options": {},
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 46113423,
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit#gid=46113423",
              "cachedResultName": "outreach automation"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit?usp=drivesdk",
              "cachedResultName": "sample_leads_50"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "56e82657-1f32-476d-b29a-a7bf0365bb8a",
          "name": "opportunitySheet",
          "type": "n8n-nodes-base.googleSheetsTool",
          "position": [
            -16,
            656
          ],
          "parameters": {
            "options": {},
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 1423466972,
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit#gid=1423466972",
              "cachedResultName": "ghl database"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit?usp=drivesdk",
              "cachedResultName": "sample_leads_50"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "fb5ff6cd-5693-4459-afe1-f19f6ea3cdb4",
          "name": "AI Sales CRM Router",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            -144,
            -32
          ],
          "parameters": {
            "text": "=You are interacting with a sales assistant chatbot.\n\nUser Query:{{ $json.chatInput }}\n\n\nYour tasks:\n1. Understand the user’s question.\n2. Use the Google Sheets tool to search for relevant data:\n   - Lead Status\n   - Contact Details\n   - Company Details\n   - Outreach Status\n   - Proposal Links\n   - GHL Opportunity Details\n3. Use only the data returned from the sheet lookups.\n4. If data is missing, ask the user for more information.\n5. Give a clear and helpful answer based strictly on available data.\n",
            "options": {
              "systemMessage": "=You are an AI Sales CRM Agent inside n8n.\n\nYou have access to the following tools:\n1. outreachSheet – lookup in Outreach Automation sheet.\n2. opportunitySheet – lookup in GHL Opportunities sheet.\n\nRULES FOR TOOL USE:\n- If user mentions email, company name, contact name, status, lead, opportunity, or proposal:\n  YOU MUST call the appropriate tool BEFORE answering.\n\nTOOL CALL FORMAT:\nRespond ONLY using this JSON format when calling a tool:\n\n{\n  \"tool\": \"<toolName>\",\n  \"input\": {\n    \"searchColumn\": \"<column>\",\n    \"searchValue\": \"<value>\"\n  }\n}\n\nNever guess data. Always lookup first.\nIf no match is found, ask for more details.\nAfter a tool returns data, summarize it for the user.\n"
            },
            "promptType": "define"
          },
          "typeVersion": 2.1
        },
        {
          "id": "d5112fbf-21e2-40da-b4c7-00d93f2f66d3",
          "name": "Conversation Memory Buffer",
          "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
          "position": [
            -400,
            752
          ],
          "parameters": {
            "contextWindowLength": 7
          },
          "typeVersion": 1.3
        },
        {
          "id": "5811a14f-5b9c-4fce-b193-ae3d00fe3b56",
          "name": "Validate AI Output Payload",
          "type": "n8n-nodes-base.if",
          "position": [
            272,
            -32
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 2,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "e2adb005-2b3c-4d1e-8445-442df1fe925a",
                  "operator": {
                    "type": "string",
                    "operation": "notEmpty",
                    "singleValue": true
                  },
                  "leftValue": "={{ $json.output }}",
                  "rightValue": ""
                }
              ]
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "7a812c73-98c0-4dc0-899b-822569a6b942",
          "name": "Log Invalid Chat Records to Google Sheets",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            720,
            496
          ],
          "parameters": {
            "operation": "append",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "",
              "cachedResultUrl": "",
              "cachedResultName": ""
            },
            "documentId": {
              "__rl": true,
              "mode": "url",
              "value": ""
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.6
        },
        {
          "id": "a81feba3-9894-498e-825e-0c244bfb9c3d",
          "name": "Write Chat Memory to Google Sheets",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            688,
            -32
          ],
          "parameters": {
            "columns": {
              "value": {
                "SessionID": "={{ $('When chat message received').item.json.sessionId }}",
                "Timestamp": "={{ new Date().toISOString() }}",
                "UserMessage": "={{ $('When chat message received').item.json.chatInput }}",
                "AssistantResponse": "={{ $json.output }}"
              },
              "schema": [
                {
                  "id": "Timestamp",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Timestamp",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "SessionID",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "SessionID",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "UserMessage",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "UserMessage",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "AssistantResponse",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "AssistantResponse",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "append",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": 1064505346,
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit#gid=1064505346",
              "cachedResultName": "chat_memory"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit?usp=drivesdk",
              "cachedResultName": "sample_leads_50"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.6
        },
        {
          "id": "fec7c98e-c232-4e7c-be7d-3ac8bde820a4",
          "name": "Send Chat Response",
          "type": "@n8n/n8n-nodes-langchain.chat",
          "position": [
            1008,
            -32
          ],
          "parameters": {
            "message": "=={{ $(\"AI Sales CRM Router\").item.json.output }}\n",
            "options": {},
            "waitUserReply": false
          },
          "typeVersion": 1
        },
        {
          "id": "bbb79e7e-198b-4736-bee8-6b815bdb96c7",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1328,
            -656
          ],
          "parameters": {
            "width": 544,
            "height": 480,
            "content": "## 💬 AI-Powered Sales CRM Chatbot with Google Sheets Lookup & Memory (GPT-4o-mini)\nA conversational chatbot that connects directly with Google Sheets to answer sales queries, fetch outreach data, and recall past interactions.  \nActs as an intelligent assistant for lead status, proposals, and opportunity lookups.\n\n### 🔹 Workflow Highlights\n1️⃣ Triggered by new chat messages  \n2️⃣ Routes requests to AI Sales CRM Router (GPT-4o-mini)  \n3️⃣ Dynamically accesses Google Sheets (Outreach + Opportunities)  \n4️⃣ Maintains memory across multiple turns  \n5️⃣ Logs all chats to “chat_memory” sheet  \n6️⃣ Responds instantly via n8n’s chat interface  \n\n### 🔹 Tools & Integrations\n- **GPT-4o-mini** → AI reasoning & response generation  \n- **Google Sheets Tools** → Outreach & GHL database access  \n- **Memory Buffer** → Context retention for multi-turn chats  \n- **n8n Chat UI** → Live interface for conversation  \n- **Google Sheets (logging)** → Historical chat tracking\n"
          },
          "typeVersion": 1
        },
        {
          "id": "0379635f-48a6-4b8f-9ef7-3ab9939ba9fc",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -576,
            -320
          ],
          "parameters": {
            "color": 7,
            "height": 464,
            "content": "## ▶️ Chat Trigger — “When chat message received”  \nStarts whenever a user sends a message via the n8n Chat interface.  \nThe input (`chatInput`) contains user query text and session ID.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "126caf24-ff59-4ad9-a771-e333a96eb6f4",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -800,
            304
          ],
          "parameters": {
            "color": 7,
            "width": 224,
            "height": 432,
            "content": "## 🧠 OpenAI Chat Model (GPT-4o-mini)  \nProvides the conversational intelligence for the chatbot.  \nUsed by the “AI Sales CRM Router” for reasoning and response creation.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "19766639-15d8-446b-8625-624e0c8291c6",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -240,
            -432
          ],
          "parameters": {
            "color": 7,
            "width": 400,
            "height": 592,
            "content": "## 🤖 AI Sales CRM Router  \nActs as the core logic hub for the chatbot.  \nResponsibilities:\n- Understands user intent  \n- Decides when to query Google Sheets tools  \n- Builds JSON tool calls automatically  \n- Generates final summarized responses  \n\n### Key Rules:\n- Never guess data; always lookup first  \n- Uses structured JSON tool calls like:\n  {\n    \"tool\": \"<toolName>\",\n    \"input\": {\n      \"searchColumn\": \"<column>\",\n      \"searchValue\": \"<value>\"\n    }\n  }\n"
          },
          "typeVersion": 1
        },
        {
          "id": "c3e04038-eacd-457f-a046-1d14e9710f17",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            224,
            400
          ],
          "parameters": {
            "color": 7,
            "height": 432,
            "content": "## 📋 Outreach Sheet Tool  \nConnects to “outreach automation” sheet in Google Sheets.  \nUsed for lead follow-up, proposal link, and outreach status lookups.  \nCalled automatically by AI when user mentions leads, emails, or outreach progress.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "e3c39d41-1ca6-418f-827a-6fe54cb36a2d",
          "name": "Sticky Note5",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -128,
            416
          ],
          "parameters": {
            "color": 7,
            "height": 416,
            "content": "## 💼 Opportunity Sheet Tool  \nConnects to “ghl database” sheet for opportunity and CRM deal data.  \nUsed for company-level queries like pipeline stage, deal value, or assigned rep.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "0fac9f52-537b-4be1-90ca-35f1943f2b9d",
          "name": "Sticky Note6",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -464,
            448
          ],
          "parameters": {
            "color": 7,
            "height": 464,
            "content": "## 🧠 Conversation Memory Buffer  \nStores short-term conversation context (last 7 turns).  \nAllows multi-turn chat: the bot remembers previous user messages in the same session.  \nKey for natural, contextual replies.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "f18e3518-1c09-4de6-a994-c2910f841a06",
          "name": "Sticky Note7",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            208,
            -288
          ],
          "parameters": {
            "color": 7,
            "height": 448,
            "content": "## ✅ Validate AI Output Payload  \nChecks if the AI successfully produced a response (`output` field not empty).  \n✅ If yes → Writes to memory sheet and responds  \n❌ If no → Logs invalid interaction for review.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "f90af355-a681-4d36-bb24-3edc771f6653",
          "name": "Sticky Note8",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            608,
            -336
          ],
          "parameters": {
            "color": 7,
            "height": 528,
            "content": "## 🗂️ Write Chat Memory to Google Sheets  \nAppends every conversation turn (timestamp, session ID, user message, assistant response) into the “chat_memory” sheet.  \nHelps in tracking conversation logs and fine-tuning the chatbot.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "6f1e85ce-b053-4998-9854-863a6389f341",
          "name": "Sticky Note9",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            640,
            256
          ],
          "parameters": {
            "color": 7,
            "height": 448,
            "content": "## ⚠️ Log Invalid Chat Records  \nSaves interactions where AI output is missing or malformed.  \nUseful for debugging tool-call or API response issues.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "b9abc6b1-bdf9-47ad-b99d-8a2afd2df742",
          "name": "Sticky Note10",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            928,
            -272
          ],
          "parameters": {
            "color": 7,
            "height": 416,
            "content": "## 💬 Send Chat Response  \nDelivers AI’s generated response back to the user in the chat interface.  \nCompletes the interaction loop in real-time.\n"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "b0c667ec-eaca-4d4e-a959-6610e42c9b94",
      "connections": {
        "outreachSheet": {
          "ai_tool": [
            [
              {
                "node": "AI Sales CRM Router",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "opportunitySheet": {
          "ai_tool": [
            [
              {
                "node": "AI Sales CRM Router",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "OpenAI Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "AI Sales CRM Router",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "AI Sales CRM Router": {
          "main": [
            [
              {
                "node": "Validate AI Output Payload",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Conversation Memory Buffer": {
          "ai_memory": [
            [
              {
                "node": "AI Sales CRM Router",
                "type": "ai_memory",
                "index": 0
              }
            ]
          ]
        },
        "Validate AI Output Payload": {
          "main": [
            [
              {
                "node": "Write Chat Memory to Google Sheets",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Log Invalid Chat Records to Google Sheets",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "When chat message received": {
          "main": [
            [
              {
                "node": "AI Sales CRM Router",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Write Chat Memory to Google Sheets": {
          "main": [
            [
              {
                "node": "Send Chat Response",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 21,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 11
        },
        "n8n-nodes-base.googleSheets": {
          "count": 2
        },
        "@n8n/n8n-nodes-langchain.chat": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "n8n-nodes-base.googleSheetsTool": {
          "count": 2
        },
        "@n8n/n8n-nodes-langchain.chatTrigger": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatOpenAi": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.memoryBufferWindow": {
          "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": 18,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheets",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Sheet",
              "Spreadsheet",
              "GS"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/",
                  "icon": "❤️",
                  "label": "Love at first sight: Ricardo’s n8n journey"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/",
                  "icon": "⏲",
                  "label": "Creating triggers for n8n workflows using polling"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/",
                  "icon": "🍔",
                  "label": "How Honest Burgers Use Automation to Save $100k per year"
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\",\"output\"]",
        "defaults": {
          "name": "Google Sheets"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets",
        "typeVersion": 5,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 20,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.if",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "If",
          "color": "#408000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "If",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 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"
          }
        ]
      },
      {
        "id": 1163,
        "icon": "fa:database",
        "name": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Memory"
              ],
              "Memory": [
                "For beginners"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Simple Memory"
        },
        "iconData": {
          "icon": "database",
          "type": "icon"
        },
        "displayName": "Simple Memory",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1247,
        "icon": "fa:comments",
        "name": "@n8n/n8n-nodes-langchain.chatTrigger",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes",
              "Langchain"
            ]
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "When chat message received"
        },
        "iconData": {
          "icon": "comments",
          "type": "icon"
        },
        "displayName": "Chat Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1313,
        "icon": "fa:comments",
        "name": "@n8n/n8n-nodes-langchain.chat",
        "codex": {
          "data": {
            "alias": [
              "human",
              "wait",
              "hitl"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.respondtochat/"
                }
              ]
            },
            "categories": [
              "Core Nodes",
              "HITL",
              "Langchain"
            ],
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Respond to Chat"
        },
        "iconData": {
          "icon": "comments",
          "type": "icon"
        },
        "displayName": "Respond to Chat",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          },
          {
            "id": 26,
            "name": "Langchain"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 39,
        "name": "CRM"
      },
      {
        "id": 47,
        "name": "AI Chatbot"
      }
    ],
    "image": []
  }
}