{"workflow":{"id":13441,"name":"Build an OpenAI HR assistant for Telegram attendance and salary reports","views":86,"recentViews":1,"totalViews":86,"createdAt":"2026-02-16T17:34:14.895Z","description":"## What Problem Does It Solve?\n- HR managers waste hours manually logging attendance, calculating work hours, and tracking salary advances in spreadsheets.\n- Onboarding new staff often involves messy paperwork or scattered chat messages.\n- Salary calculations are prone to errors when manually tallying absence, overtime, and penalties.\n- This workflow solves these by:\n-- Allowing employees to check in/out and request loans via a simple Telegram chat.\n-- Automatically calculating work hours and applying penalties for early departure.\n-- Registering new employees through an interactive AI chat.\n-- Generating instant financial reports including net salary, deductions, and overtime.\n\n## How to Configure It\n- Google Sheets Setup\n-- Create a Google Sheet with two tabs: one for \"Employee Data\" (Columns: ID, Name, Role, Branch, Salary) and one for \"Logs\" (Attendance history).\n-- Connect your Google Sheets OAuth2 credentials in n8n and select this sheet in all related nodes.\n- Telegram Setup\n-- Create a new bot via BotFather and connect your Telegram credentials.\n-- (Optional) Set the \"Admin Chat ID\" in the Daily Report node to receive absentee lists.\n- AI Setup\n-- Add your OpenAI API key (used for intent classification and conversational agents).\n-- The included prompts are currently in Egyptian Arabic — you can translate them to English or your local language in the \"System Message\" of the Agent nodes.\n- Timezone\n-- Adjust the timezone in the \"Context\" section of the AI Agent nodes to match your company's location (currently set to Africa/Cairo).\n\n## How It Works\n- Telegram Trigger catches every message sent to the HR Bot.\n- AI Classifier analyzes the text to determine intent:\n-- New Employee: Triggers a conversation to collect Name, ID, Salary, and Branch -&gt; Validates data -&gt; Adds to \"Employee Data\" sheet.\n-- Attendance (Check-in): Logs the timestamp immediately.\n-- Departure (Check-out): Looks up arrival time, calculates total hours worked. If under 8 hours, it flags \"Early Departure\" and logs it with a penalty note.\n-- Financial Request: Logs salary advances (loans) directly to the sheet.\n-- Report Request: An AI Analyst calculates net salary (Basic + Overtime - Absence - Advances) and replies with a detailed breakdown.\n- Daily Schedule:\n-- Every day at 1:00 PM, the workflow compares today's attendance logs against the full employee list.\n-- It generates a list of absentees and sends a summary report to the HR Manager.\n\n## Customization Ideas\n- Change the Logic: Edit the JavaScript node to change the \"8-hour work day\" rule to match your company policy.\n- Multi-Platform: Swap the Telegram Trigger for WhatsApp or Slack to match your team's communication tool.\n- PDF Payslips: Add a node to generate a PDF payslip based on the AI's financial report and email it to the employee.\n- Face Recognition: Integrate an image analysis node if you want employees to send a selfie for attendance verification.\n- For more info [Contact Me](https://www.linkedin.com/in/khaledyasser01/)","workflow":{"id":"template-id","meta":{"instanceId":"template-instance-id"},"name":"Manage employee onboarding and attendance using Telegram and OpenAI","tags":[],"nodes":[{"id":"bd1","name":"Main_Overview","type":"n8n-nodes-base.stickyNote","position":[-2600,800],"parameters":{"color":1,"width":386,"height":516,"content":"### 🤖 HR Automated System\n\n#### How it works\n1. **Input:** Receives Telegram messages from employees.\n2. **AI Analysis:** Classifies intent (Attendance, Report, or Registration) using OpenAI.\n3. **Execution:** \n   - Logs Check-in/out & calculates penalties for early departure.\n   - Registers new employees via chat conversation.\n   - Generates salary reports based on attendance history.\n4. **Automation:** Runs a daily scheduled job to report absentees.\n\n#### Setup steps\n1. **Credentials:** Connect your Telegram Bot, OpenAI, and Google Sheets accounts.\n2. **Google Sheet:** Create a sheet with columns: `[Name, ID, Role, Branch, Salary]` and a second tab for `Logs`.\n3. **IDs:** Replace `[YOUR_SPREADSHEET_ID]` in all Sheet nodes.\n4. **Timezone:** Adjust the `Context` in the AI Agent nodes to your local timezone."},"typeVersion":1},{"id":"bd2","name":"Section_Input","type":"n8n-nodes-base.stickyNote","position":[-2160,1040],"parameters":{"color":7,"width":1900,"height":560,"content":"## 1. Input & Intent Classification\nReceives messages, maintains chat history, and uses AI to determine if the user is a new employee, recording a transaction, or asking for a report."},"typeVersion":1},{"id":"bd3","name":"Section_Onboarding","type":"n8n-nodes-base.stickyNote","position":[100,-120],"parameters":{"color":7,"width":2100,"height":700,"content":"## 2. New Employee Onboarding\nHandles the conversational flow to register new staff. Collects Name, ID, Salary, etc., validates the JSON data, and saves to the database."},"typeVersion":1},{"id":"bd4","name":"Section_Transactions","type":"n8n-nodes-base.stickyNote","position":[400,640],"parameters":{"color":7,"width":1700,"height":950,"content":"## 3. Transaction Logic\nHandles existing employees. Logs Attendance, calculates 'Early Departure' penalties based on work hours, and records Salary Advances."},"typeVersion":1},{"id":"bd5","name":"Section_Reports","type":"n8n-nodes-base.stickyNote","position":[900,1720],"parameters":{"color":7,"width":1200,"height":450,"content":"## 4. Financial Reporting\nFetches employee salary and movement history to calculate net pay (deducting absence/penalties and adding overtime)."},"typeVersion":1},{"id":"bd6","name":"Section_Daily","type":"n8n-nodes-base.stickyNote","position":[-2160,1680],"parameters":{"color":7,"width":2000,"height":450,"content":"## 5. Daily Scheduled Jobs\nRuns automatically (e.g., at 1:00 PM) to compare today's logs against the full employee list and report who is absent."},"typeVersion":1},{"id":"e91f272e-19ae-4903-bc5f-8b012419d324","name":"Telegram_Trigger","type":"n8n-nodes-base.telegramTrigger","position":[-2112,1136],"webhookId":"placeholder-webhook-id","parameters":{"updates":["message"],"additionalFields":{}},"typeVersion":1.2},{"id":"9d8e575c-f625-42c9-a16c-aa53e355cbf5","name":"Memory_Chat","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[-992,1424],"parameters":{"sessionKey":"chat_history","sessionIdType":"customKey"},"typeVersion":1.3},{"id":"343f675f-58ab-409e-b0f6-b965b80c308d","name":"Msg_Attendance_Success","type":"n8n-nodes-base.telegram","position":[1968,1488],"webhookId":"placeholder-webhook-id","parameters":{"text":"=☀️ Good morning, \n{{ $json['اسم الموظف'] }} \n\n✅ Your attendance has been successfully recorded!\n⏰ Arrival Time: \n{{ $json['التاريخ والوقت'] }}\n\nWishing you a productive and successful workday! 💪🚀","chatId":"={{ $('Telegram_Trigger').item.json.message.chat.id }}","additionalFields":{"appendAttribution":false}},"typeVersion":1.2},{"id":"c1c37e47-d9b8-4358-92c5-d62e194fb9c3","name":"Parse_AI_Response","type":"n8n-nodes-base.code","position":[-624,1200],"parameters":{"mode":"runOnceForEachItem","jsCode":"// 1. Safely receive text (whether named output or text)\nconst aiResponse = $json.output || $json.text;\n\n// 2. Safety check: If no data, stop and output a clear error message\nif (!aiResponse) {\n  throw new Error(\"Alert: No response received from AI (variable is empty).\");\n}\n\n// 3. Clean text from Markdown tags (```json)\nconst cleanJson = aiResponse.replace(/```json/g, '').replace(/```/g, '').trim();\n\n// 4. Convert text to JSON object and return\nreturn JSON.parse(cleanJson);"},"typeVersion":2},{"id":"05d87ded-fb5b-499e-95fe-43e0f013a877","name":"Lookup_Employee","type":"n8n-nodes-base.googleSheets","position":[-80,1120],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.identifier }}","lookupColumn":"كود الموظف"},{"lookupValue":"={{ $json.identifier }}","lookupColumn":"اسم الموظف"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]/edit#gid=0","cachedResultName":"data"},"documentId":{"__rl":true,"mode":"list","value":"[YOUR_SPREADSHEET_ID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]","cachedResultName":"[YOUR_SHEET_NAME]"},"combineFilters":"OR"},"typeVersion":4.7,"alwaysOutputData":true},{"id":"8905ab06-d258-404c-b9d3-ee60ef5a29ce","name":"Log_Transaction","type":"n8n-nodes-base.googleSheets","position":[1440,1488],"parameters":{"columns":{"value":{"القيمه":"={{ $('Parse_AI_Response').item.json.value }}","ملاحاظات":"={{ $('Parse_AI_Response').item.json.notes }}","اسم الموظف":"={{ $('Lookup_Employee').item.json['اسم الموظف'] }}","كود الموظف":"={{ $json['كود الموظف'] }}","نوع الحركه":"={{ $('Parse_AI_Response').item.json.action }}","التاريخ والوقت":"={{ $('Parse_AI_Response').item.json.timestamp }}"},"schema":[{"id":"التاريخ والوقت","type":"string","display":true,"required":false,"displayName":"التاريخ والوقت","defaultMatch":false,"canBeUsedToMatch":true},{"id":"كود الموظف","type":"string","display":true,"required":false,"displayName":"كود الموظف","defaultMatch":false,"canBeUsedToMatch":true},{"id":"اسم الموظف","type":"string","display":true,"required":false,"displayName":"اسم الموظف","defaultMatch":false,"canBeUsedToMatch":true},{"id":"نوع الحركه","type":"string","display":true,"required":false,"displayName":"نوع الحركه","defaultMatch":false,"canBeUsedToMatch":true},{"id":"القيمه","type":"string","display":true,"required":false,"displayName":"القيمه","defaultMatch":false,"canBeUsedToMatch":true},{"id":"ملاحاظات","type":"string","display":true,"required":false,"displayName":"ملاحاظات","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"[YOUR_LOGS_SHEET_GID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]/edit#gid=[YOUR_LOGS_SHEET_GID]","cachedResultName":"سجل الحركات"},"documentId":{"__rl":true,"mode":"list","value":"[YOUR_SPREADSHEET_ID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]","cachedResultName":"[YOUR_SHEET_NAME]"}},"typeVersion":4.7},{"id":"922eae56-0829-4191-9998-6887c5c85a85","name":"Check_Employee_Found","type":"n8n-nodes-base.if","position":[144,1120],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"6d680a3d-c8ba-40b7-913e-02962e7fb6dd","operator":{"type":"number","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json['كود الموظف'] }}","rightValue":0}]}},"typeVersion":2.3},{"id":"c15a466a-1e19-427a-9e66-013a45a139de","name":"Msg_Employee_Not_Found","type":"n8n-nodes-base.telegram","position":[320,1200],"webhookId":"placeholder-webhook-id","parameters":{"text":"=Sorry, this code ({{ $('Route_Intent').item.json.identifier }}) is not registered in our system! 🤔\n\nIf this is a new employee, reply with \"Yes\" to add them.\nIf there's a mistake, please double-check the code and try again.\n\nFor assistance, contact KHALED YASSER 📞","chatId":"={{ $('Telegram_Trigger').item.json.message.chat.id }}","additionalFields":{"appendAttribution":false}},"typeVersion":1.2},{"id":"1007f64f-4269-4558-9cee-a7cf6d57050c","name":"Route_Intent","type":"n8n-nodes-base.switch","onError":"continueRegularOutput","position":[-400,1200],"parameters":{"rules":{"values":[{"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"cd801203-7ecb-44fd-b60d-ff5f076e609e","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.intent }}","rightValue":"record"}]}},{"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"295bdf3d-531b-46c9-9592-bca673a1d0a4","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.intent }}","rightValue":"report"}]}}]},"options":{}},"typeVersion":3.4},{"id":"cd13e552-f0bb-4097-96c6-431cefc5f086","name":"Memory_Analyst","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[1696,2080],"parameters":{"sessionKey":"chat_history","sessionIdType":"customKey"},"typeVersion":1.3},{"id":"bcc064a5-7e14-40cb-8948-1a03785c1c53","name":"Msg_Analysis_Report","type":"n8n-nodes-base.telegram","position":[1984,1808],"webhookId":"placeholder-webhook-id","parameters":{"text":"={{ $json.output }}","chatId":"={{ $('Telegram_Trigger').item.json.message.chat.id }}","additionalFields":{"parse_mode":"HTML","appendAttribution":false}},"executeOnce":true,"typeVersion":1.2},{"id":"930fd357-49f1-49f4-b70a-d46360b31b95","name":"Agent_Classifier","type":"@n8n/n8n-nodes-langchain.agent","onError":"continueRegularOutput","position":[-1120,1184],"parameters":{"text":"={{ $json.message.text }}","options":{"systemMessage":"==# Role: HR Data Extractor & Router\n# Objective: Analyze the user's message to determine the intent (Recording Transaction OR Requesting Report) and extract relevant data strictly as JSON.\n\n# Context:\nThe exact current date and time in Africa/Cairo is: ={{ $now.setZone('Africa/Cairo').toFormat('yyyy-MM-dd hh:mm:ss a') }}\n\n# Instructions:\nAnalyze the user's message (English or Arabic) and output a JSON object with these exact fields:\n\n1. \"intent\": Determine the user's goal. MUST be one of:\n   - \"record\": If user wants to log attendance, absence, money, etc. (e.g., \"حضور 1001\", \"Advance 500\").\n   - \"report\": If user asks for info or summary (e.g., \"Report for Fatima\", \"How many days was Mohamed absent?\").\n\n2. \"action\": \n   - If intent is \"record\": Extract the action type EXACTLY as one of these Arabic terms to match the database: (حضور, انصراف, غياب, نص يوم, سلف, اضافي, اجازه).\n   - If intent is \"report\": Output \"report\".\n\n3. \"identifier\": The Employee ID or Name mentioned.\n4. \"value\": Amount or hours (if applicable), otherwise null.\n5. \"notes\": Any extra details.\n6. \"timestamp\": Current time from Context.\n\n# Output Format:\nYou MUST output ONLY a valid JSON object. Do NOT wrap in markdown blocks.\n\n# Example 1 (Recording):\nUser: \"Clock-in 1001\"\nOutput: { \"intent\": \"record\", \"action\": \"حضور\", \"identifier\": \"1001\", \"value\": null, \"notes\": \"\", \"timestamp\": \"...\" }\n\n# Example 2 (Reporting):\nUser: \"Report for Fatima Rouge\"\nOutput: { \"intent\": \"report\", \"action\": \"report\", \"identifier\": \"Fatima Rouge\", \"value\": null, \"notes\": \"\", \"timestamp\": \"...\" }"},"promptType":"define"},"typeVersion":3.1},{"id":"51a67c9b-73e9-44ac-9c77-bdbf56ee9aff","name":"Agent_Financial","type":"@n8n/n8n-nodes-langchain.agent","onError":"continueRegularOutput","position":[1552,1808],"parameters":{"text":"=Employee Basic Salary: {{ $('Fetch_Salary').item.json['الراتب الاساسي'] }}\nMovements Log: {{ JSON.stringify($input.all().map(item => item.json)) }}","options":{"systemMessage":"=Role: Professional HR Financial Analyst (XQ Pharma)\nObjective: Calculate the Net Salary strictly following the company's rules.\n\n# Input Data:\n1. Basic Salary.\n2. Movement Logs (Absence, Overtime, Advances, Departures, etc.).\n\n# Financial Rules (As per company policy):\n- Day Value = (Basic Salary / 30).\n- \"غياب\" (Absence): Deduct 1 full Day Value (-1.0).\n- \"اضافي\" (Overtime): Add 1 full Day Value (+1.0).\n- \"سلف\" (Advances): Deduct the exact amount provided in the \"value\" field.\n- \"انصراف\" (Departure): If marked as \"Early Departure\" or \"Penalty\", deduct 0.25 of a Day Value.\n- \"اجازه\" (Leaves): No deduction (Sick, Annual, Official holidays are paid).\n\n# Calculation Logic:\n- Calculate Total Deductions (Absence + Advances + Early Departure Penalties).\n- Calculate Total Additions (Overtime).\n- Net Salary = Basic Salary + Additions - Deductions.\n\n# Final Report (English):\nFinancial Report for Employee: [Name] (ID: [ID])\n--------------------------------------------------\n💰 Basic Salary: [Salary] EGP\n📊 Day Value: [Day Value] EGP\n\n🔻 Deductions:\n- Absence ([X] days): -[Value] EGP\n- Advances: -[Value] EGP\n- Early Departure Penalties: -[Value] EGP\n\n✅ Additions & Dues:\n- Overtime ([X] days): +[Value] EGP\n\n💵 Net Salary Due: [Net Salary] EGP\n--------------------------------------------------\nBest regards,\nKHALED YASSER"},"promptType":"define"},"retryOnFail":true,"typeVersion":3.1},{"id":"28d59d05-42ae-4325-aa42-edfda12a4da3","name":"Msg_Ask_New_Emp_Data","type":"n8n-nodes-base.telegram","position":[208,-64],"webhookId":"placeholder-webhook-id","parameters":{"text":"=🎉 Welcome to the XQ Pharma team! 🤝\n\nTo successfully register your details in the company's system, please send the following information in a single line, separated by dashes (-):\n\n(Code - Name - Position - Branch - Salary) 📝\n\n💡 Example:\n1005 - Mohamed Ahmed - Sales - Maadi - 6000\n\nAwaiting your details so we can get started! 🚀✨","chatId":"={{ $('Telegram_Trigger').item.json.message.chat.id }}","additionalFields":{"appendAttribution":false}},"typeVersion":1.2},{"id":"83bce609-761a-46e0-9d87-dd17fdec2e1e","name":"Memory_Onboarding","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[992,528],"parameters":{"sessionKey":"chat_history","sessionIdType":"customKey"},"typeVersion":1.3},{"id":"7d49dd78-9d34-40cb-b865-dab0bb81e9bf","name":"Agent_Onboarding","type":"@n8n/n8n-nodes-langchain.agent","position":[928,288],"parameters":{"text":"={{ $('Telegram_Trigger').item.json.message.text }}","options":{"systemMessage":"Role: Professional HR Assistant\nObjective: Capture new employee details and register them.\n\nCRITICAL LOGIC:\n\nIf the user says \"Yes\" without providing details:\n\nDO NOT use the registration tool/node.\n\nDO NOT output any JSON or structured data.\n\nReply ONLY with the \"Mandatory Response Format\" below.\n\nIf and only if the message contains real data (like a name and a code):\n\nExtract the data and proceed to register the employee using the tool.\n\nMandatory Response Format for \"Yes\" or missing data:\n\"Great! To register the employee, please send the following details in a single message in this order: (Employee Code - Name - Position - Branch - Salary)\"\n\nMandatory Closing:\nBest regards,\nKHALED YASSER"},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"08e69c55-7eca-445e-9cc5-b48d926930cb","name":"Validate_New_Emp_JSON","type":"n8n-nodes-base.code","position":[1280,288],"parameters":{"jsCode":"// 1. Receive output from the Agent\nconst rawOutput = $input.all()[0].json.output;\n\ntry {\n  // 2. Search for JSON (employee data) inside the text\n  const jsonMatch = rawOutput.match(/\\{[\\s\\S]*\\}/);\n\n  if (jsonMatch) {\n    // If data is found, parse it and pass it through\n    const cleanJson = JSON.parse(jsonMatch[0]);\n    return [{ json: { ...cleanJson, is_valid: true } }];\n  } else {\n    // If it's a regular message, send false to close the route smoothly\n    return [{ json: { is_valid: false } }];\n  }\n} catch (e) {\n  // In case of any error, close the route without stopping the workflow\n  return [{ json: { is_valid: false } }];\n}"},"typeVersion":2},{"id":"4ebe2121-1ad1-47bd-b187-c625871218ea","name":"Register_New_Emp","type":"n8n-nodes-base.googleSheets","position":[1744,288],"parameters":{"columns":{"value":{"الفرع":"={{ $json.branch }}","الوظيفه":"={{ $json.position }}","اسم الموظف":"={{ $json.name }}","كود الموظف":"={{ $json.code }}","الراتب الاساسي":"={{ $json.salary }}"},"schema":[{"id":"م","type":"string","display":true,"required":false,"displayName":"م","defaultMatch":false,"canBeUsedToMatch":true},{"id":"كود الموظف","type":"string","display":true,"required":false,"displayName":"كود الموظف","defaultMatch":false,"canBeUsedToMatch":true},{"id":"اسم الموظف","type":"string","display":true,"required":false,"displayName":"اسم الموظف","defaultMatch":false,"canBeUsedToMatch":true},{"id":"الوظيفه","type":"string","display":true,"required":false,"displayName":"الوظيفه","defaultMatch":false,"canBeUsedToMatch":true},{"id":"الفرع","type":"string","display":true,"required":false,"displayName":"الفرع","defaultMatch":false,"canBeUsedToMatch":true},{"id":"الراتب الاساسي","type":"string","display":true,"required":false,"displayName":"الراتب الاساسي","defaultMatch":false,"canBeUsedToMatch":true},{"id":"الحاله","type":"string","display":true,"required":false,"displayName":"الحاله","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]/edit#gid=0","cachedResultName":"data"},"documentId":{"__rl":true,"mode":"list","value":"[YOUR_SPREADSHEET_ID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]","cachedResultName":"[YOUR_SHEET_NAME]"}},"typeVersion":4.7},{"id":"183fbd9c-8ff9-44ac-9b48-e1b07b739896","name":"Msg_Registration_Success","type":"n8n-nodes-base.telegram","position":[2048,288],"webhookId":"placeholder-webhook-id","parameters":{"text":"=\"✅ Employee successfully registered!\n👤 Name: {{ $json['اسم الموظف'] }}\n🆔 Code: {{ $json['كود الموظف'] }}\n🏢 Branch: {{ $json['الفرع'] }}\n🛠️ Position: {{ $json['الوظيفه'] }}\n💰 Salary: {{ $json['الراتب الاساسي'] }}\"\n\nBest regards, \nKHALED YASSER","chatId":"={{ $('Telegram_Trigger').item.json.message.chat.id }}","additionalFields":{"appendAttribution":false}},"typeVersion":1.2},{"id":"4c353579-e15a-4ee6-9736-bd074627c258","name":"Model_Onboarding","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[832,528],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"typeVersion":1.3},{"id":"b34e24ea-45f1-4321-9ee0-3823dae1d2d1","name":"Model_Classifier","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-1152,1408],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"typeVersion":1.3},{"id":"e281d6a4-1f02-4d1a-8f16-adddc01a7b6a","name":"Model_Analyst","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1504,2080],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"typeVersion":1.3},{"id":"ef84526d-6f92-44c7-b73e-cff9618c614b","name":"Filter_Valid_Data","type":"n8n-nodes-base.filter","position":[1488,288],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"13adeb08-47d8-48f4-be4d-ce8a5a33ccd3","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.is_valid }}","rightValue":false}]}},"typeVersion":2.3},{"id":"77d625e6-045d-45f7-8ad2-612a47cacec4","name":"Route_New_vs_Existing","type":"n8n-nodes-base.switch","position":[-1840,1120],"parameters":{"rules":{"values":[{"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"94182e02-dff7-4cc3-b312-45476c9a91ea","operator":{"type":"string","operation":"contains"},"leftValue":"={{ $json.message.text }}","rightValue":"Yes"}]}},{"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"538a2b1c-743f-4f97-a79e-ac1833409841","operator":{"type":"string","operation":"contains"},"leftValue":"={{ $json.message.text }}","rightValue":"Salary"}]}},{"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"e2dbe368-6edd-4b23-996d-e954ec60924e","operator":{"type":"string","operation":"contains"},"leftValue":"={{ $json.message.text }}","rightValue":"-"}]}}]},"options":{"fallbackOutput":2}},"typeVersion":3.4},{"id":"04cf0510-c901-4cce-ac4f-67a80a735b00","name":"Fetch_Salary","type":"n8n-nodes-base.googleSheets","position":[1024,1808],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.identifier }}","lookupColumn":"كود الموظف"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]/edit#gid=0","cachedResultName":"data"},"documentId":{"__rl":true,"mode":"list","value":"[YOUR_SPREADSHEET_ID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]","cachedResultName":"[YOUR_SHEET_NAME]"}},"typeVersion":4.7},{"id":"a80dfc13-348d-4bf4-99f9-b5a3e28ebe62","name":"Fetch_Movement_History","type":"n8n-nodes-base.googleSheets","position":[1312,1808],"parameters":{"options":{"returnFirstMatch":false},"filtersUI":{"values":[{"lookupValue":"={{ $('Parse_AI_Response').item.json.identifier }}","lookupColumn":"كود الموظف"}]},"sheetName":{"__rl":true,"mode":"list","value":"[YOUR_LOGS_SHEET_GID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]/edit#gid=[YOUR_LOGS_SHEET_GID]","cachedResultName":"سجل الحركات"},"documentId":{"__rl":true,"mode":"list","value":"[YOUR_SPREADSHEET_ID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]","cachedResultName":"[YOUR_SHEET_NAME]"}},"typeVersion":4.7},{"id":"fbdfb942-abec-4873-8d96-ce9d19e8a267","name":"Model_Gemini","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[-1328,1408],"parameters":{"options":{}},"typeVersion":1},{"id":"1f589c8f-e9dd-4457-9f8f-30eda9b24703","name":"Route_Action_Type","type":"n8n-nodes-base.switch","position":[512,1088],"parameters":{"rules":{"values":[{"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"58b9b9c0-0507-4559-85ea-99709b2d03bf","operator":{"type":"string","operation":"contains"},"leftValue":"={{ $('Parse_AI_Response').item.json.action }}","rightValue":"انصراف"}]}},{"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"dba0f0db-16e5-431e-9ffb-6d0990d7e643","operator":{"type":"string","operation":"contains"},"leftValue":"={{ $('Parse_AI_Response').item.json.action }}","rightValue":"سلف"}]}}]},"options":{"fallbackOutput":"extra"}},"typeVersion":3.4},{"id":"6b9d65db-09a9-4a82-b726-432d7807904b","name":"Calc_Departure_Stats","type":"n8n-nodes-base.code","position":[1456,784],"parameters":{"jsCode":"// 1. Get attendance time from the previous node\nconst attendanceStr = $('Get_Arrival_Time').item.json['التاريخ والوقت'];\nconst attendanceTime = new Date(attendanceStr);\n\n// 2. Get current departure time\nconst departureTime = new Date($('Parse_AI_Response').item.json.timestamp);\n\n// 3. Calculate time difference\nconst diffInMs = departureTime - attendanceTime;\nconst diffInHours = diffInMs / (1000 * 60 * 60);\n\n// 4. Apply 8-hour rule\nlet penaltyNotes = \"Normal departure\";\nlet isPenalty = false;\n\nif (diffInHours < 8) {\n    penaltyNotes = `Early departure (worked only ${diffInHours.toFixed(2)} hours)`;\n    isPenalty = true;\n}\n\nreturn {\n    attendance_time: attendanceStr,\n    departure_time: departureTime.toLocaleString(),\n    hours_worked: diffInHours.toFixed(2),\n    is_early_departure: isPenalty,\n    notes: penaltyNotes\n};"},"typeVersion":2},{"id":"e25a56b9-b576-442a-bffa-7726d6db78ed","name":"Get_Arrival_Time","type":"n8n-nodes-base.googleSheets","position":[1200,784],"parameters":{"options":{"returnFirstMatch":true},"filtersUI":{"values":[{"lookupValue":"={{ $('Parse_AI_Response').item.json.identifier }}","lookupColumn":"كود الموظف"},{"lookupValue":"حضور","lookupColumn":"نوع الحركه"}]},"sheetName":{"__rl":true,"mode":"list","value":"[YOUR_LOGS_SHEET_GID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]/edit#gid=[YOUR_LOGS_SHEET_GID]","cachedResultName":"سجل الحركات"},"documentId":{"__rl":true,"mode":"list","value":"[YOUR_SPREADSHEET_ID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]","cachedResultName":"[YOUR_SHEET_NAME]"}},"typeVersion":4.7},{"id":"8ceb01d2-bc69-448b-854d-ffb0d4142099","name":"Log_Departure","type":"n8n-nodes-base.googleSheets","position":[1728,784],"parameters":{"columns":{"value":{"ملاحاظات":"={{ $json.notes }}","اسم الموظف":"={{ $('Get_Arrival_Time').item.json['اسم الموظف'] }}","كود الموظف":"={{ $('Parse_AI_Response').item.json.identifier }}","نوع الحركه":"انصراف","التاريخ والوقت":"={{ $json.departure_time }}"},"schema":[{"id":"التاريخ والوقت","type":"string","display":true,"required":false,"displayName":"التاريخ والوقت","defaultMatch":false,"canBeUsedToMatch":true},{"id":"كود الموظف","type":"string","display":true,"required":false,"displayName":"كود الموظف","defaultMatch":false,"canBeUsedToMatch":true},{"id":"اسم الموظف","type":"string","display":true,"required":false,"displayName":"اسم الموظف","defaultMatch":false,"canBeUsedToMatch":true},{"id":"نوع الحركه","type":"string","display":true,"required":false,"displayName":"نوع الحركه","defaultMatch":false,"canBeUsedToMatch":true},{"id":"القيمه","type":"string","display":true,"required":false,"displayName":"القيمه","defaultMatch":false,"canBeUsedToMatch":true},{"id":"ملاحاظات","type":"string","display":true,"required":false,"displayName":"ملاحاظات","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"[YOUR_LOGS_SHEET_GID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]/edit#gid=[YOUR_LOGS_SHEET_GID]","cachedResultName":"سجل الحركات"},"documentId":{"__rl":true,"mode":"list","value":"[YOUR_SPREADSHEET_ID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]","cachedResultName":"[YOUR_SHEET_NAME]"}},"typeVersion":4.7},{"id":"3d60b776-91ee-4568-9c23-3c12a65a7c5d","name":"Msg_Departure_Success","type":"n8n-nodes-base.telegram","position":[1984,784],"webhookId":"placeholder-webhook-id","parameters":{"text":"=👋 Great job, \n{{ $json['اسم الموظف'] }}!\n\n✅ Your clock-out has been recorded.\n⏱️ Hours worked:\n{{ $('Calc_Departure_Stats').item.json.hours_worked }}\n📝 Note:\n{{ $('Calc_Departure_Stats').item.json.notes }}\n\nRest up and recharge for tomorrow. Have a good night! 🏠✨","chatId":"={{ $('Telegram_Trigger').item.json.message.chat.id }}","additionalFields":{"appendAttribution":false}},"typeVersion":1.2},{"id":"1537466e-940c-4788-8966-c0019d116a38","name":"Msg_Advance_Success","type":"n8n-nodes-base.telegram","position":[1968,1104],"webhookId":"placeholder-webhook-id","parameters":{"text":"=💸 Financial Notice: {{ $json['اسم الموظف'] }}\n\nYour \"Advance\" request has been successfully recorded ✅\n💰 Amount: {{ $json['القيمه'] }} EGP\n📅 Date: {{ $json['التاريخ والوقت'] }}\n\nThis will be reviewed and deducted from the current month's salary. Best of luck! 💼✨","chatId":"={{ $('Telegram_Trigger').item.json.message.chat.id }}","additionalFields":{"appendAttribution":false}},"typeVersion":1.2},{"id":"a5721408-c091-4591-95f4-d5a2c421ed78","name":"Log_Advance","type":"n8n-nodes-base.googleSheets","position":[1424,1104],"parameters":{"columns":{"value":{"القيمه":"={{ $('Parse_AI_Response').item.json.value }}","اسم الموظف":"={{ $('Lookup_Employee').item.json['اسم الموظف'] }}","كود الموظف":"={{ $('Lookup_Employee').item.json['كود الموظف'] }}","نوع الحركه":"={{ $('Parse_AI_Response').item.json.action }}","التاريخ والوقت":"={{ $('Parse_AI_Response').item.json.timestamp }}"},"schema":[{"id":"التاريخ والوقت","type":"string","display":true,"required":false,"displayName":"التاريخ والوقت","defaultMatch":false,"canBeUsedToMatch":true},{"id":"كود الموظف","type":"string","display":true,"required":false,"displayName":"كود الموظف","defaultMatch":false,"canBeUsedToMatch":true},{"id":"اسم الموظف","type":"string","display":true,"required":false,"displayName":"اسم الموظف","defaultMatch":false,"canBeUsedToMatch":true},{"id":"نوع الحركه","type":"string","display":true,"required":false,"displayName":"نوع الحركه","defaultMatch":false,"canBeUsedToMatch":true},{"id":"القيمه","type":"string","display":true,"required":false,"displayName":"القيمه","defaultMatch":false,"canBeUsedToMatch":true},{"id":"ملاحاظات","type":"string","display":true,"required":false,"displayName":"ملاحاظات","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"[YOUR_LOGS_SHEET_GID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]/edit#gid=[YOUR_LOGS_SHEET_GID]","cachedResultName":"سجل الحركات"},"documentId":{"__rl":true,"mode":"list","value":"[YOUR_SPREADSHEET_ID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]","cachedResultName":"[YOUR_SHEET_NAME]"}},"typeVersion":4.7},{"id":"bfce569a-1307-44b8-b0ec-bd011b2392c4","name":"Daily_Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-2080,1904],"parameters":{"rule":{"interval":[{"triggerAtHour":13}]}},"typeVersion":1.3},{"id":"5409f06a-f95d-43c7-830e-239ffb8ccf05","name":"Filter_Today_Attendance","type":"n8n-nodes-base.filter","position":[-1200,1760],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"ea3a8847-35b5-4ecb-9e56-6fd741145e5f","operator":{"type":"string","operation":"startsWith"},"leftValue":"={{ $json['التاريخ والوقت'] }}","rightValue":"={{ $now.format('yyyy-MM-dd') }}"}]}},"typeVersion":2.3},{"id":"2f455047-b858-44b8-89e2-a2f41d3200dc","name":"Fetch_All_Employees","type":"n8n-nodes-base.googleSheets","position":[-1424,2048],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]/edit#gid=0","cachedResultName":"data"},"documentId":{"__rl":true,"mode":"list","value":"[YOUR_SPREADSHEET_ID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]","cachedResultName":"[YOUR_SHEET_NAME]"}},"typeVersion":4.7},{"id":"2191b104-2953-41ee-ade4-9de610e35ad2","name":"Fetch_Today_Logs","type":"n8n-nodes-base.googleSheets","position":[-1552,1744],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"حضور","lookupColumn":"نوع الحركه"}]},"sheetName":{"__rl":true,"mode":"list","value":"[YOUR_LOGS_SHEET_GID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]/edit#gid=[YOUR_LOGS_SHEET_GID]","cachedResultName":"سجل الحركات"},"documentId":{"__rl":true,"mode":"list","value":"[YOUR_SPREADSHEET_ID]","cachedResultUrl":"[https://docs.google.com/spreadsheets/d/](https://docs.google.com/spreadsheets/d/)[YOUR_SPREADSHEET_ID]","cachedResultName":"[YOUR_SHEET_NAME]"}},"typeVersion":4.7},{"id":"c0a98dc7-a160-408c-abd5-b9ce5732284a","name":"Calc_Absentees","type":"n8n-nodes-base.code","position":[-496,1904],"parameters":{"jsCode":"const allEmployees = $items(\"Fetch_All_Employees\"); // Must exactly match node name \"Fetch_All_Employees\"\nconst todayAttendance = $items(\"Filter_Today_Attendance\"); // Must exactly match node name \"Filter_Today_Attendance\"\n\nconst attendedIds = todayAttendance.map(item => item.json[\"كود الموظف\"]);\nconst absentees = allEmployees.filter(emp => !attendedIds.includes(emp.json[\"كود الموظف\"]));\n\nreturn absentees;"},"typeVersion":2},{"id":"05f58671-0c85-411a-b898-4296df21eed8","name":"Msg_Absentee_Report","type":"n8n-nodes-base.telegram","position":[-176,1904],"webhookId":"placeholder-webhook-id","parameters":{"text":"=📊 Daily Absence Report (1:00 PM) 📊\n-----------------------------------\n📍 Total Employees: {{ $items(\"Fetch_All_Employees\").length }}\n✅ Attendees: {{ new Set($items(\"Filter_Today_Attendance\").map(i => i.json[\"كود الموظف\"])).size }}\n❌ Absentees: {{ $input.all().length }}\n-----------------------------------\n⚠️ List of Late/Absent Employees:\n{{ $input.all().map(item => \"• \" + item.json[\"اسم الموظف\"]).join('\\n') }}\n\nPlease follow up with them to ensure workflow continuity! 🚀✨","chatId":"=[ADMIN_CHAT_ID]","additionalFields":{"parse_mode":"HTML","appendAttribution":false}},"executeOnce":true,"typeVersion":1.2},{"id":"2a47083b-fddf-4034-baaf-6489650aed3a","name":"Merge_Lists","type":"n8n-nodes-base.merge","position":[-784,1904],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition"},"typeVersion":3.2}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"template-version","connections":{"Log_Advance":{"main":[[{"node":"Msg_Advance_Success","type":"main","index":0}]]},"Memory_Chat":{"ai_memory":[[{"node":"Agent_Classifier","type":"ai_memory","index":0}]]},"Merge_Lists":{"main":[[{"node":"Calc_Absentees","type":"main","index":0}]]},"Fetch_Salary":{"main":[[{"node":"Fetch_Movement_History","type":"main","index":0}]]},"Model_Gemini":{"ai_languageModel":[[]]},"Route_Intent":{"main":[[{"node":"Lookup_Employee","type":"main","index":0}],[{"node":"Fetch_Salary","type":"main","index":0}]]},"Daily_Trigger":{"main":[[{"node":"Fetch_Today_Logs","type":"main","index":0},{"node":"Fetch_All_Employees","type":"main","index":0}]]},"Log_Departure":{"main":[[{"node":"Msg_Departure_Success","type":"main","index":0}]]},"Model_Analyst":{"ai_languageModel":[[{"node":"Agent_Financial","type":"ai_languageModel","index":0}]]},"Calc_Absentees":{"main":[[{"node":"Msg_Absentee_Report","type":"main","index":0}]]},"Memory_Analyst":{"ai_memory":[[{"node":"Agent_Financial","type":"ai_memory","index":0}]]},"Agent_Financial":{"main":[[{"node":"Msg_Analysis_Report","type":"main","index":0}]]},"Log_Transaction":{"main":[[{"node":"Msg_Attendance_Success","type":"main","index":0}]]},"Lookup_Employee":{"main":[[{"node":"Check_Employee_Found","type":"main","index":0}]]},"Agent_Classifier":{"main":[[{"node":"Parse_AI_Response","type":"main","index":0}]]},"Agent_Onboarding":{"main":[[{"node":"Validate_New_Emp_JSON","type":"main","index":0}]]},"Fetch_Today_Logs":{"main":[[{"node":"Filter_Today_Attendance","type":"main","index":0}]]},"Get_Arrival_Time":{"main":[[{"node":"Calc_Departure_Stats","type":"main","index":0}]]},"Model_Classifier":{"ai_languageModel":[[{"node":"Agent_Classifier","type":"ai_languageModel","index":0}]]},"Model_Onboarding":{"ai_languageModel":[[{"node":"Agent_Onboarding","type":"ai_languageModel","index":0}]]},"Register_New_Emp":{"main":[[{"node":"Msg_Registration_Success","type":"main","index":0}]]},"Telegram_Trigger":{"main":[[{"node":"Route_New_vs_Existing","type":"main","index":0}]]},"Filter_Valid_Data":{"main":[[{"node":"Register_New_Emp","type":"main","index":0}]]},"Memory_Onboarding":{"ai_memory":[[{"node":"Agent_Onboarding","type":"ai_memory","index":0}]]},"Parse_AI_Response":{"main":[[{"node":"Route_Intent","type":"main","index":0}]]},"Route_Action_Type":{"main":[[{"node":"Get_Arrival_Time","type":"main","index":0}],[{"node":"Log_Advance","type":"main","index":0}],[{"node":"Log_Transaction","type":"main","index":0}]]},"Fetch_All_Employees":{"main":[[{"node":"Merge_Lists","type":"main","index":1}]]},"Calc_Departure_Stats":{"main":[[{"node":"Log_Departure","type":"main","index":0}]]},"Check_Employee_Found":{"main":[[{"node":"Route_Action_Type","type":"main","index":0}],[{"node":"Msg_Employee_Not_Found","type":"main","index":0}]]},"Msg_Ask_New_Emp_Data":{"main":[[{"node":"Agent_Onboarding","type":"main","index":0}]]},"Route_New_vs_Existing":{"main":[[{"node":"Msg_Ask_New_Emp_Data","type":"main","index":0}],[{"node":"Agent_Onboarding","type":"main","index":0}],[{"node":"Agent_Classifier","type":"main","index":0}]]},"Validate_New_Emp_JSON":{"main":[[{"node":"Filter_Valid_Data","type":"main","index":0}]]},"Fetch_Movement_History":{"main":[[{"node":"Agent_Financial","type":"main","index":0}]]},"Filter_Today_Attendance":{"main":[[{"node":"Merge_Lists","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":47,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.code":{"count":4},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.filter":{"count":2},"n8n-nodes-base.switch":{"count":3},"n8n-nodes-base.telegram":{"count":8},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.googleSheets":{"count":10},"@n8n/n8n-nodes-langchain.agent":{"count":3},"n8n-nodes-base.scheduleTrigger":{"count":1},"n8n-nodes-base.telegramTrigger":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":3},"@n8n/n8n-nodes-langchain.lmChatGoogleGemini":{"count":1},"@n8n/n8n-nodes-langchain.memoryBufferWindow":{"count":3}}},"status":"published","readyToDemo":null,"user":{"name":"khaled yasser","username":"khaledyasser01","bio":"Odoo ERP Specialist (5+ Years) | MS Outlook & Microsoft Expert (9+ Years) | Workflow Automation (n8n) | Ai Automation","verified":true,"links":["https://www.linkedin.com/in/khaledyasser01/?skipRedirect=true"],"avatar":"https://gravatar.com/avatar/b745dbe81ba146f51ad79e3500a918ab7ad1f5aa6fafc3c3a01a987fe7e1bfaa?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":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"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/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"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/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/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.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":49,"icon":"file:telegram.svg","name":"n8n-nodes-base.telegram","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"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/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"},{"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/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/creating-telegram-bots-with-n8n-a-no-code-platform/","icon":"💬","label":"Creating Telegram Bots with n8n, a No-Code Platform"},{"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.telegram/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/telegram/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Telegram"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjYgNjYiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzM3YWVlMiIgZD0iTTAgMzJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyczMyLTE0LjMyNyAzMi0zMlM0OS42NzMgMCAzMiAwIDAgMTQuMzI3IDAgMzIiLz48cGF0aCBmaWxsPSIjYzhkYWVhIiBkPSJtMjEuNjYxIDM0LjMzOCAzLjc5NyAxMC41MDhzLjQ3NS45ODMuOTgzLjk4MyA4LjA2OC03Ljg2NCA4LjA2OC03Ljg2NGw4LjQwNy0xNi4yMzctMjEuMTE5IDkuODk4eiIvPjxwYXRoIGZpbGw9IiNhOWM2ZDgiIGQ9Im0yNi42OTUgMzcuMDM0LS43MjkgNy43NDZzLS4zMDUgMi4zNzMgMi4wNjggMGw0LjY0NC00LjIwMyIvPjxwYXRoIGQ9Im0yMS43MyAzNC43MTItNy44MDktMi41NDVzLS45MzItLjM3OC0uNjMzLTEuMjM3Yy4wNjItLjE3Ny4xODYtLjMyOC41NTktLjU4OCAxLjczMS0xLjIwNiAzMi4wMjgtMTIuMDk2IDMyLjAyOC0xMi4wOTZzLjg1Ni0uMjg4IDEuMzYxLS4wOTdjLjIzMS4wODguMzc4LjE4Ny41MDMuNTQ4LjA0NS4xMzIuMDcxLjQxMS4wNjguNjg5LS4wMDMuMjAxLS4wMjcuMzg2LS4wNDUuNjc4LS4xODQgMi45NzgtNS43MDYgMjUuMTk4LTUuNzA2IDI1LjE5OHMtLjMzIDEuMy0xLjUxNCAxLjM0NWMtLjQzMi4wMTYtLjk1Ni0uMDcxLTEuNTgyLS42MS0yLjMyMy0xLjk5OC0xMC4zNTItNy4zOTQtMTIuMTI2LTguNThhLjM0LjM0IDAgMCAxLS4xNDYtLjIzOWMtLjAyNS0uMTI1LjEwOC0uMjguMTA4LS4yOHMxMy45OC0xMi40MjcgMTQuMzUyLTEzLjczMWMuMDI5LS4xMDEtLjA3OS0uMTUxLS4yMjYtLjEwNy0uOTI5LjM0Mi0xNy4wMjUgMTAuNTA2LTE4LjgwMSAxMS42MjktLjEwNC4wNjYtLjM5NS4wMjMtLjM5NS4wMjMiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Telegram","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":50,"icon":"file:telegram.svg","name":"n8n-nodes-base.telegramTrigger","codex":{"data":{"resources":{"generic":[{"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/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/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/creating-telegram-bots-with-n8n-a-no-code-platform/","icon":"💬","label":"Creating Telegram Bots with n8n, a No-Code Platform"},{"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/trigger-nodes/n8n-nodes-base.telegramtrigger/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/telegram/"}]},"categories":["Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"Telegram Trigger"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjYgNjYiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzM3YWVlMiIgZD0iTTAgMzJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyczMyLTE0LjMyNyAzMi0zMlM0OS42NzMgMCAzMiAwIDAgMTQuMzI3IDAgMzIiLz48cGF0aCBmaWxsPSIjYzhkYWVhIiBkPSJtMjEuNjYxIDM0LjMzOCAzLjc5NyAxMC41MDhzLjQ3NS45ODMuOTgzLjk4MyA4LjA2OC03Ljg2NCA4LjA2OC03Ljg2NGw4LjQwNy0xNi4yMzctMjEuMTE5IDkuODk4eiIvPjxwYXRoIGZpbGw9IiNhOWM2ZDgiIGQ9Im0yNi42OTUgMzcuMDM0LS43MjkgNy43NDZzLS4zMDUgMi4zNzMgMi4wNjggMGw0LjY0NC00LjIwMyIvPjxwYXRoIGQ9Im0yMS43MyAzNC43MTItNy44MDktMi41NDVzLS45MzItLjM3OC0uNjMzLTEuMjM3Yy4wNjItLjE3Ny4xODYtLjMyOC41NTktLjU4OCAxLjczMS0xLjIwNiAzMi4wMjgtMTIuMDk2IDMyLjAyOC0xMi4wOTZzLjg1Ni0uMjg4IDEuMzYxLS4wOTdjLjIzMS4wODguMzc4LjE4Ny41MDMuNTQ4LjA0NS4xMzIuMDcxLjQxMS4wNjguNjg5LS4wMDMuMjAxLS4wMjcuMzg2LS4wNDUuNjc4LS4xODQgMi45NzgtNS43MDYgMjUuMTk4LTUuNzA2IDI1LjE5OHMtLjMzIDEuMy0xLjUxNCAxLjM0NWMtLjQzMi4wMTYtLjk1Ni0uMDcxLTEuNTgyLS42MS0yLjMyMy0xLjk5OC0xMC4zNTItNy4zOTQtMTIuMTI2LTguNThhLjM0LjM0IDAgMCAxLS4xNDYtLjIzOWMtLjAyNS0uMTI1LjEwOC0uMjguMTA4LS4yOHMxMy45OC0xMi40MjcgMTQuMzUyLTEzLjczMWMuMDI5LS4xMDEtLjA3OS0uMTUxLS4yMjYtLjEwNy0uOTI5LjM0Mi0xNy4wMjUgMTAuNTA2LTE4LjgwMSAxMS42MjktLjEwNC4wNjYtLjM5NS4wMjMtLjM5NS4wMjMiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Telegram Trigger","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":844,"icon":"fa:filter","name":"n8n-nodes-base.filter","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The Filter node can be used to filter items based on a condition. If the condition is met, the item will be passed on to the next node. If the condition is not met, the item will be omitted. Conditions can be combined together by AND(meet all conditions), or OR(meet at least one condition).","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Filter","color":"#229eff"},"iconData":{"icon":"filter","type":"icon"},"displayName":"Filter","typeVersion":2,"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":1262,"icon":"file:google.svg","name":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Google Gemini Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"},"displayName":"Google Gemini Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":17,"name":"HR"},{"id":47,"name":"AI Chatbot"}],"image":[]}}