{"workflow":{"id":13318,"name":"Monitor employee policy compliance with GPT-4, Slack, and email alerts","views":9,"recentViews":0,"totalViews":9,"createdAt":"2026-02-12T03:27:24.610Z","description":"## How It Works\nThis workflow automates enterprise policy compliance monitoring using AI agents to ensure organizational adherence to regulatory and internal policies. Designed for compliance officers, legal teams, and risk managers, it solves the challenge of manually reviewing vast policy documents and execution logs for violations.The system fetches policy records on schedule, routes them to specialized AI agents (OpenAI for compliance assessment and escalation logic), validates outputs, and logs all actions for audit trails. Email notifications alert stakeholders when violations occur. By automating detection and escalation, organizations reduce compliance risks, accelerate response times, and maintain comprehensive audit documentation—critical for regulated industries like finance, healthcare, and manufacturing.\n\n## Setup Steps\n1. Connect **Schedule Trigger** (set monitoring frequency: hourly/daily)\n2. Configure **Fetch Policy Records** node with your policy database/API credentials\n3. Add **OpenAI API key** to Compliance Agent and Escalation Logic nodes\n4. Connect **Email** node with SMTP credentials for alert notifications\n5. Link **Final Execution Log** to your audit storage system \n6. Test workflow with sample policy violations to verify routing logic\n\n## Prerequisites\nOpenAI API account with GPT-4 access, policy database/API access\n## Use Cases\nFinancial services regulatory compliance (KYC/AML), healthcare HIPAA monitoring\n## Customization\nModify AI prompts for industry-specific regulations, adjust routing thresholds for violation severity\n## Benefits\nReduces compliance review time by 90%, eliminates human oversight gaps","workflow":{"id":"WkOXSh7R2J8Ghya6QFqLl","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"AI-Driven Policy Monitoring and Compliance Orchestration System","tags":[],"nodes":[{"id":"f0df187a-a4f2-42d1-8e39-bb4530089a0b","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-1392,304],"parameters":{"rule":{"interval":[{"triggerAtHour":9}]}},"typeVersion":1.3},{"id":"c8ac420f-7ed5-42af-a6de-6c2e3ab2ccd4","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[-1168,304],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"policyTableName","type":"string","value":"employee_policy_records"},{"id":"id-2","name":"complianceTableName","type":"string","value":"compliance_actions_log"},{"id":"id-3","name":"auditTableName","type":"string","value":"audit_reports"},{"id":"id-4","name":"executionLogTableName","type":"string","value":"workflow_execution_log"},{"id":"id-5","name":"slackChannel","type":"string","value":"<__PLACEHOLDER_VALUE__Slack Channel ID for compliance alerts__>"},{"id":"id-6","name":"escalationEmail","type":"string","value":"<__PLACEHOLDER_VALUE__Email address for escalations__>"},{"id":"id-7","name":"complianceThresholdDays","type":"number","value":30}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"28aace8a-2a82-4b78-a9a3-19d9d65c3652","name":"Fetch Policy Records","type":"n8n-nodes-base.dataTable","position":[-944,304],"parameters":{"operation":"get","returnAll":true,"dataTableId":{"__rl":true,"mode":"name","value":"={{ $('Workflow Configuration').first().json.policyTableName }}"}},"typeVersion":1.1},{"id":"7de29645-dc4d-4343-b080-b1216dd46250","name":"Policy Monitoring Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[-720,304],"parameters":{"text":"=Employee Policy Data: {{ JSON.stringify($json) }}","options":{"systemMessage":"You are a Policy Monitoring Agent specialized in validating employee compliance with training, certification, and policy acknowledgement requirements.\n\nYour task is to:\n1. Analyze employee policy records including training completion dates, certification expiration dates, and policy acknowledgement timestamps\n2. Determine the overall compliance status (compliant, at_risk, non_compliant)\n3. Calculate days until next expiration or days overdue\n4. Assess risk level (low, medium, high, critical) based on:\n   - Number of days until expiration or overdue\n   - Type of requirement (training, certification, policy)\n   - Criticality of the requirement\n5. Determine required action (none, reminder, escalation)\n6. Evaluate individual status for training, certification, and policy acknowledgement\n7. Provide detailed reasoning for your assessment\n\nCompliance Rules:\n- Compliant: All requirements are current and valid for at least 30 days\n- At Risk: One or more requirements expire within 30 days\n- Non-Compliant: One or more requirements are expired or overdue\n\nRisk Level Guidelines:\n- Low: Compliant with 60+ days until next expiration\n- Medium: At risk with 15-30 days until expiration\n- High: At risk with less than 15 days until expiration\n- Critical: Non-compliant with expired requirements\n\nRequired Action:\n- None: Compliant with low risk\n- Reminder: At risk or medium risk\n- Escalation: High or critical risk\n\nReturn structured output with all required fields."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"baa01df0-9072-4b95-ac91-43c59fad7c05","name":"OpenAI Model - Policy Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-752,528],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"251cd2a1-6ec0-439d-81eb-e66761827e4e","name":"Policy Validation Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-576,528],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"employeeId\": {\n      \"type\": \"string\",\n      \"description\": \"Employee identifier\"\n    },\n    \"employeeName\": {\n      \"type\": \"string\",\n      \"description\": \"Employee full name\"\n    },\n    \"complianceStatus\": {\n      \"type\": \"string\",\n      \"enum\": [\"compliant\", \"at_risk\", \"non_compliant\"],\n      \"description\": \"Overall compliance status\"\n    },\n    \"riskLevel\": {\n      \"type\": \"string\",\n      \"enum\": [\"low\", \"medium\", \"high\", \"critical\"],\n      \"description\": \"Risk level based on compliance gaps\"\n    },\n    \"daysUntilExpiration\": {\n      \"type\": \"number\",\n      \"description\": \"Days until next expiration (negative if overdue)\"\n    },\n    \"requiredAction\": {\n      \"type\": \"string\",\n      \"enum\": [\"none\", \"reminder\", \"escalation\"],\n      \"description\": \"Action required for this employee\"\n    },\n    \"trainingStatus\": {\n      \"type\": \"string\",\n      \"description\": \"Training completion status\"\n    },\n    \"certificationStatus\": {\n      \"type\": \"string\",\n      \"description\": \"Certification validity status\"\n    },\n    \"policyAcknowledgementStatus\": {\n      \"type\": \"string\",\n      \"description\": \"Policy acknowledgement status\"\n    },\n    \"reasoning\": {\n      \"type\": \"string\",\n      \"description\": \"Detailed explanation of the compliance assessment\"\n    }\n  },\n  \"required\": [\"employeeId\", \"complianceStatus\", \"riskLevel\", \"requiredAction\", \"reasoning\"]\n}"},"typeVersion":1.3},{"id":"ac703572-2cd9-4b8a-bf5d-d02d91b01df2","name":"Route by Compliance Status","type":"n8n-nodes-base.switch","position":[-368,288],"parameters":{"rules":{"values":[{"outputKey":"Non-Compliant","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.complianceStatus }}","rightValue":"non_compliant"},{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.complianceStatus }}","rightValue":"at_risk"}]},"renameOutput":true},{"outputKey":"Compliant","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.complianceStatus }}","rightValue":"compliant"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra","renameFallbackOutput":"Unknown"}},"typeVersion":3.4},{"id":"1ad6c32d-03c5-4cd7-8448-ab2079feb9c8","name":"Compliance Orchestration Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[0,160],"parameters":{"text":"=Compliance Issue: {{ JSON.stringify($json.output) }}","options":{"systemMessage":"You are a Compliance Orchestration Agent responsible for managing compliance reminders, escalations, and audit reporting.\n\nYour task is to:\n1. Analyze non-compliant or at-risk employee records\n2. Determine the appropriate communication strategy based on risk level and required action\n3. Use available tools to send notifications and execute escalations:\n   - Slack Notification Tool: Send alerts to compliance team channels\n   - Email Notification Tool: Send formal notifications to employees and managers\n   - Escalation Logic Tool: Execute escalation workflows for critical violations\n4. Coordinate multi-channel notifications when necessary\n5. Ensure all actions are logged for audit purposes\n\nNotification Strategy:\n- For \"reminder\" actions: Send friendly reminder via email to employee\n- For \"escalation\" actions with medium/high risk: Send email to employee and Slack alert to compliance team\n- For \"escalation\" actions with critical risk: Execute full escalation logic, send emails to all stakeholders, and post urgent Slack alerts\n\nWhen using tools:\n- Slack messages should be concise and include: employee name, risk level, days overdue/until expiration, and required action\n- Email subjects should clearly indicate urgency level\n- Email bodies should be professional and include specific compliance requirements and deadlines\n- Always call Escalation Logic Tool for critical risk cases to determine proper escalation path\n\nYour goal is to ensure timely compliance while maintaining professional communication standards."},"promptType":"define"},"typeVersion":3.1},{"id":"18c240cb-6fe0-4b15-ae25-a4a09dd7fe4c","name":"OpenAI Model - Compliance Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-96,352],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.3},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"aa62539d-9d9e-481d-8971-eb2e8a9bc069","name":"Slack Notification Tool","type":"n8n-nodes-base.slackTool","position":[48,384],"webhookId":"28a1d670-fb4b-4e1c-877c-e44db250516d","parameters":{"text":"={{ $fromAI('message', 'Compliance alert message to send', 'string') }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $fromAI('slackChannel', 'Slack channel ID for compliance alerts', 'string', $('Workflow Configuration').first().json.slackChannel) }}"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"d34b1ayEBbvZm2lT","name":"Slack account"}},"typeVersion":2.4},{"id":"d64a8c6e-c22d-44ca-92ab-d9b45e608383","name":"Email Notification Tool","type":"n8n-nodes-base.emailSendTool","position":[192,384],"webhookId":"ef7324b1-c1e4-4841-a28f-a936c4bcfc22","parameters":{"message":"={{ $fromAI('emailBody', 'Email message body', 'string') }}","options":{},"subject":"={{ $fromAI('emailSubject', 'Email subject line', 'string') }}","toEmail":"={{ $fromAI('recipientEmail', 'Email address of recipient', 'string') }}","fromEmail":"<__PLACEHOLDER_VALUE__Sender email address for compliance notifications__>","operation":"sendAndWait"},"typeVersion":2.1},{"id":"e3288ae8-382b-4008-86ea-eea71e81cb43","name":"Escalation Logic Tool","type":"@n8n/n8n-nodes-langchain.toolCode","position":[336,432],"parameters":{"jsCode":"const complianceData = $fromAI('complianceData', 'The compliance issue data requiring escalation', 'json');\n\ntry {\n  const data = typeof complianceData === 'string' ? JSON.parse(complianceData) : complianceData;\n  \n  const riskLevel = data.riskLevel || 'medium';\n  const daysOverdue = Math.abs(data.daysUntilExpiration || 0);\n  const employeeName = data.employeeName || 'Unknown Employee';\n  const employeeId = data.employeeId || 'Unknown ID';\n  \n  let escalationPath = [];\n  let urgency = 'normal';\n  let requiredActions = [];\n  \n  if (riskLevel === 'critical' || daysOverdue > 60) {\n    escalationPath = ['Direct Manager', 'Department Head', 'HR Director', 'Compliance Officer'];\n    urgency = 'immediate';\n    requiredActions = [\n      'Immediate manager notification',\n      'HR intervention required',\n      'Compliance review meeting',\n      'Potential disciplinary action'\n    ];\n  } else if (riskLevel === 'high' || daysOverdue > 30) {\n    escalationPath = ['Direct Manager', 'HR Representative'];\n    urgency = 'high';\n    requiredActions = [\n      'Manager notification',\n      'HR follow-up',\n      'Compliance deadline extension review'\n    ];\n  } else {\n    escalationPath = ['Direct Manager'];\n    urgency = 'normal';\n    requiredActions = [\n      'Manager awareness',\n      'Employee reminder'\n    ];\n  }\n  \n  const escalationReport = {\n    employeeId: employeeId,\n    employeeName: employeeName,\n    riskLevel: riskLevel,\n    daysOverdue: daysOverdue,\n    urgency: urgency,\n    escalationPath: escalationPath,\n    requiredActions: requiredActions,\n    escalationDate: new Date().toISOString(),\n    summary: `${urgency.toUpperCase()} escalation required for ${employeeName} (${employeeId}). Risk: ${riskLevel}. Days overdue: ${daysOverdue}. Escalation path: ${escalationPath.join(' → ')}.`\n  };\n  \n  return JSON.stringify(escalationReport, null, 2);\n  \n} catch (error) {\n  return JSON.stringify({\n    error: 'Escalation logic failed',\n    message: error.message,\n    escalationPath: ['HR Director'],\n    urgency: 'high'\n  });\n}","description":"Executes escalation logic for critical compliance violations, determines escalation path and required stakeholders"},"typeVersion":1.3},{"id":"bd1e100d-8985-4923-9a34-a85189b9fa57","name":"Log Compliance Actions","type":"n8n-nodes-base.dataTable","position":[496,256],"parameters":{"columns":{"value":null,"mappingMode":"autoMapInputData"},"options":{},"operation":"upsert","dataTableId":{"__rl":true,"mode":"name","value":"={{ $('Workflow Configuration').first().json.complianceTableName }}"}},"typeVersion":1.1},{"id":"4f4fa2cb-6425-48d8-9476-eb0b50f48456","name":"Prepare Compliant Records","type":"n8n-nodes-base.set","position":[48,592],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"auditStatus","type":"string","value":"compliant"},{"id":"id-2","name":"auditDate","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-3","name":"auditType","type":"string","value":"automated_policy_check"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"1c7b46a8-2c87-4398-9bca-c3e72b835400","name":"Store Audit Report","type":"n8n-nodes-base.dataTable","position":[512,592],"parameters":{"columns":{"value":null,"mappingMode":"autoMapInputData"},"options":{},"operation":"upsert","dataTableId":{"__rl":true,"mode":"name","value":"={{ $('Workflow Configuration').first().json.auditTableName }}"}},"typeVersion":1.1},{"id":"fd381a95-15b1-4a31-b91f-b440edc3d6a1","name":"Merge All Actions","type":"n8n-nodes-base.merge","position":[720,400],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition"},"typeVersion":3.2},{"id":"2374286f-5f21-45ff-abc7-2df6d07e8690","name":"Final Execution Log","type":"n8n-nodes-base.dataTable","position":[912,400],"parameters":{"columns":{"value":null,"mappingMode":"autoMapInputData"},"options":{},"operation":"upsert","dataTableId":{"__rl":true,"mode":"name","value":"={{ $('Workflow Configuration').first().json.executionLogTableName }}"}},"typeVersion":1.1},{"id":"98f589b1-266a-4208-89c0-d41f2dc85c03","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1312,-288],"parameters":{"width":576,"height":288,"content":"## How It Works\nThis workflow automates enterprise policy compliance monitoring using AI agents to ensure organizational adherence to regulatory and internal policies. Designed for compliance officers, legal teams, and risk managers, it solves the challenge of manually reviewing vast policy documents and execution logs for violations.The system fetches policy records on schedule, routes them to specialized AI agents (OpenAI for compliance assessment and escalation logic), validates outputs, and logs all actions for audit trails. Email notifications alert stakeholders when violations occur. By automating detection and escalation, organizations reduce compliance risks, accelerate response times, and maintain comprehensive audit documentation—critical for regulated industries like finance, healthcare, and manufacturing."},"typeVersion":1},{"id":"5f0df633-d18b-44ca-8c9a-2247f1da29a9","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-720,-304],"parameters":{"width":400,"height":304,"content":"## Setup Steps\n1. Connect **Schedule Trigger** (set monitoring frequency: hourly/daily)\n2. Configure **Fetch Policy Records** node with your policy database/API credentials\n3. Add **OpenAI API key** to Compliance Agent and Escalation Logic nodes\n4. Connect **Email** node with SMTP credentials for alert notifications\n5. Link **Final Execution Log** to your audit storage system \n6. Test workflow with sample policy violations to verify routing logic"},"typeVersion":1},{"id":"0615c803-149a-4177-b28e-82cb013756fe","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-288,-320],"parameters":{"color":4,"width":544,"height":320,"content":"## Prerequisites\nOpenAI API account with GPT-4 access, policy database/API access\n## Use Cases\nFinancial services regulatory compliance (KYC/AML), healthcare HIPAA monitoring\n## Customization\nModify AI prompts for industry-specific regulations, adjust routing thresholds for violation severity\n## Benefits\nReduces compliance review time by 90%, eliminates human oversight gaps"},"typeVersion":1},{"id":"3522da3d-2c27-4b6f-9383-d56f0227fb8e","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[448,64],"parameters":{"color":7,"width":672,"height":784,"content":"## Escalation & Notification\n**Why**: Enables rapid stakeholder response and creates immutable compliance trails"},"typeVersion":1},{"id":"9bf40575-92cd-47fe-aafc-0082106e8f16","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-400,64],"parameters":{"color":7,"width":832,"height":768,"content":"## Intelligent Routing\n**Why**: Prioritizes critical issues for immediate action while logging minor infractions"},"typeVersion":1},{"id":"d80e388d-b6e3-445e-bc55-1da2b8c250f7","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-1440,64],"parameters":{"color":7,"width":1008,"height":720,"content":"## Scheduled Monitoring & AI Compliance Assessment\n**Why**: OpenAI agent analyzes policy records against compliance rules to ensure continuous monitoring and scales expert-level policy interpretation across thousands of documents instantly"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"d3fe34fe-44ad-4fcf-9a51-0c6c1be7b60c","connections":{"Schedule Trigger":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Merge All Actions":{"main":[[{"node":"Final Execution Log","type":"main","index":0}]]},"Store Audit Report":{"main":[[{"node":"Merge All Actions","type":"main","index":1}]]},"Fetch Policy Records":{"main":[[{"node":"Policy Monitoring Agent","type":"main","index":0}]]},"Escalation Logic Tool":{"ai_tool":[[{"node":"Compliance Orchestration Agent","type":"ai_tool","index":0}]]},"Log Compliance Actions":{"main":[[{"node":"Merge All Actions","type":"main","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Fetch Policy Records","type":"main","index":0}]]},"Email Notification Tool":{"ai_tool":[[{"node":"Compliance Orchestration Agent","type":"ai_tool","index":0}]]},"Policy Monitoring Agent":{"main":[[{"node":"Route by Compliance Status","type":"main","index":0}]]},"Slack Notification Tool":{"ai_tool":[[{"node":"Compliance Orchestration Agent","type":"ai_tool","index":0}]]},"Prepare Compliant Records":{"main":[[{"node":"Store Audit Report","type":"main","index":0}]]},"Route by Compliance Status":{"main":[[{"node":"Compliance Orchestration Agent","type":"main","index":0}],[{"node":"Prepare Compliant Records","type":"main","index":0}]]},"OpenAI Model - Policy Agent":{"ai_languageModel":[[{"node":"Policy Monitoring Agent","type":"ai_languageModel","index":0}]]},"Compliance Orchestration Agent":{"main":[[{"node":"Log Compliance Actions","type":"main","index":0}]]},"OpenAI Model - Compliance Agent":{"ai_languageModel":[[{"node":"Compliance Orchestration Agent","type":"ai_languageModel","index":0}]]},"Policy Validation Output Parser":{"ai_outputParser":[[{"node":"Policy Monitoring Agent","type":"ai_outputParser","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":23,"nodeTypes":{"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.dataTable":{"count":4},"n8n-nodes-base.slackTool":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.emailSendTool":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":2},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.toolCode":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":2},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Cheng Siong Chin","username":"cschin","bio":"Dr. Cheng Siong CHIN is an n8n workflow creator specializing in AI-powered automation, agent orchestration, and intelligent system integrations. He designs and builds end-to-end workflows that combine LLMs, APIs, and data pipelines to streamline complex processes and deliver production-ready automation solutions. Contact me to discuss custom AI workflows and agent architectures.\n","verified":true,"links":["https://gravatar.com/mysticluminary9fa255f7f5"],"avatar":"https://gravatar.com/avatar/54544f98e839bb9dd9a764ad1e6823eeddb6db5138d201e42f291a7b0a73303f?r=pg&d=retro&size=200"},"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":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"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/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"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/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/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/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/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/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"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/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"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/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"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.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":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":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":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":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1197,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.toolCode","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Code Tool"},"iconData":{"icon":"code","type":"icon"},"displayName":"Code Tool","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1315,"icon":"fa:table","name":"n8n-nodes-base.dataTable","codex":{"data":{"alias":["data","table","knowledge","data table","table","sheet","database","data base","mysql","postgres","postgresql","airtable","supabase","noco","notion"],"details":"Data table","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/"}]},"categories":["Core Nodes","Development"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\",\"transform\"]","defaults":{"name":"Data table"},"iconData":{"icon":"table","type":"icon"},"displayName":"Data table","typeVersion":1,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":35,"name":"Document Extraction"},{"id":49,"name":"AI Summarization"}],"image":[]}}