{"workflow":{"id":13680,"name":"Route and escalate student advising requests with OpenAI, Gmail and Slack","views":6,"recentViews":0,"totalViews":6,"createdAt":"2026-02-25T06:01:31.323Z","description":"## How It Works\nThis workflow automates student academic advising by deploying a multi-agent AI system that triages student queries, routes them intelligently, and escalates when human intervention is needed. Designed for academic institutions, it eliminates manual triage bottlenecks and ensures timely, context-aware responses. A student event triggers the webhook, which feeds into a Status Agent to classify the student's situation. A routing node directs the request to an Academic Orchestration Agent, which delegates to specialized sub-agents—Advising, Notification, or Escalation—based on query type. Results are routed by action type, checked for escalation, then dispatched via student email, faculty email, or Slack advisor alert before logging completion.\n\n## Setup Steps\n1. Import workflow and configure Student Event Webhook URL.\n2. Add OpenAI API credentials to all OpenAI Model nodes.\n3. Configure Gmail credentials for student and faculty email nodes.\n4. Add Slack credentials and set target advisor channel for Slack alert.\n5. Set escalation thresholds in the \"Check if Escalation Required\" node.\n6. Test with sample student event payload via webhook.\n\n## Prerequisites\n- OpenAI API key\n- Gmail account with OAuth2\n- Slack workspace with bot token\n## Use Cases\n- Automated academic query triage for universities\n## Customization\n- Add new sub-agents for career or financial advising\n## Benefits\n- Reduces advisor workload through intelligent auto-triage\n- Ensures urgent cases are escalated instantly","workflow":{"id":"OlzPb-gZ5hhPqEXbGxYeK","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"AI student academic advisor with multi-agent routing and escalation","tags":[],"nodes":[{"id":"d1ec9629-98fc-4218-aad4-7cf5f7c599fe","name":"Student Event Webhook","type":"n8n-nodes-base.webhook","position":[-576,1360],"webhookId":"2aac088b-83af-4aa0-bfcf-ecb085fa4e69","parameters":{"path":"student-event","options":{},"httpMethod":"POST","responseMode":"lastNode"},"typeVersion":2.1},{"id":"99dded73-4c28-490a-b85a-68138b50ac28","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[-384,1360],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"advisorSlackChannel","type":"string","value":"<__PLACEHOLDER_VALUE__Slack channel ID for advisor alerts__>"},{"id":"id-2","name":"facultyEscalationEmail","type":"string","value":"<__PLACEHOLDER_VALUE__Faculty escalation email address__>"},{"id":"id-3","name":"studentNotificationFromEmail","type":"string","value":"<__PLACEHOLDER_VALUE__From email address for student notifications__>"},{"id":"id-4","name":"enrollmentThresholdDays","type":"number","value":30},{"id":"id-5","name":"progressionWarningGPA","type":"number","value":2}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"1b6f64ca-3a40-4a2d-a498-478e83c9ecb4","name":"Student Status Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[-192,1360],"parameters":{"text":"=Student Event Data: {{ JSON.stringify($json) }}","options":{"systemMessage":"You are a Student Status Validation Agent responsible for analyzing student lifecycle events and validating enrollment, progression, and graduation signals.\n\nYour task is to:\n1. Validate student enrollment status and eligibility\n2. Assess academic progression signals (GPA, credits completed, course completion rates)\n3. Identify graduation readiness indicators\n4. Detect at-risk patterns (low GPA, incomplete courses, attendance issues)\n5. Classify the student lifecycle stage\n6. Provide structured validation results\n\nLifecycle Stages:\n- NEW_ENROLLMENT: Student recently enrolled, needs onboarding\n- ACTIVE_PROGRESSION: Student progressing normally\n- AT_RISK: Student showing warning signs (low GPA, incomplete courses)\n- GRADUATION_ELIGIBLE: Student meets graduation requirements\n- INTERVENTION_REQUIRED: Student requires immediate academic support\n\nYou do NOT make academic judgments or recommendations. You only validate and classify signals based on objective data."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"0b3708ca-236b-4e7a-9422-055d50d4f4b5","name":"OpenAI Model - Status Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-256,1584],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"45502496-f29c-4211-bb49-b761448d3473","name":"Status Validation Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-64,1584],"parameters":{"jsonSchemaExample":"{\n  \"studentId\": \"string\",\n  \"lifecycleStage\": \"NEW_ENROLLMENT | ACTIVE_PROGRESSION | AT_RISK | GRADUATION_ELIGIBLE | INTERVENTION_REQUIRED\",\n  \"enrollmentStatus\": \"VALID | INVALID | PENDING\",\n  \"progressionStatus\": \"ON_TRACK | WARNING | CRITICAL\",\n  \"graduationEligible\": \"boolean\",\n  \"gpa\": \"number\",\n  \"creditsCompleted\": \"number\",\n  \"creditsRequired\": \"number\",\n  \"riskFactors\": [\"string\"],\n  \"validationTimestamp\": \"string\",\n  \"reasoning\": \"string\"\n}"},"typeVersion":1.3},{"id":"f33b227d-16d1-49c8-8791-e739f9350810","name":"Route by Student Status","type":"n8n-nodes-base.switch","position":[160,1360],"parameters":{"rules":{"values":[{"outputKey":"requiresAction","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.lifecycleStage }}","rightValue":"AT_RISK"},{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.lifecycleStage }}","rightValue":"INTERVENTION_REQUIRED"},{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.lifecycleStage }}","rightValue":"GRADUATION_ELIGIBLE"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra","renameFallbackOutput":"noActionNeeded"}},"typeVersion":3.4},{"id":"73a3325c-b2a9-4b70-ba6c-422987ee1273","name":"Advising Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[512,1584],"parameters":{"text":"={{ $fromAI(\"studentStatusData\", \"Student status validation results from Student Status Agent\", \"json\") }}","options":{"systemMessage":"You are an Academic Advising Agent that provides guidance recommendations based on student status signals.\n\nYour task is to:\n1. Analyze student lifecycle stage and progression status\n2. Recommend appropriate advising actions (course selection, tutoring, academic planning)\n3. Identify support resources needed (tutoring, counseling, financial aid)\n4. Suggest intervention timing and priority\n5. Provide actionable next steps for advisors\n\nYou do NOT make academic judgments about student capability or potential. You only recommend procedural and support actions based on objective status signals.\n\nReturn structured advising recommendations."},"hasOutputParser":true,"toolDescription":"Provides academic advising recommendations based on student status validation results"},"typeVersion":3},{"id":"2bcda812-41a5-4f3a-a5c3-79bbac9fc270","name":"OpenAI Model - Advising Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[464,1792],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"6e7d2260-662a-405f-873f-9b914f30e991","name":"Advising Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[656,1792],"parameters":{"jsonSchemaExample":"{\n  \"recommendedActions\": [\"string\"],\n  \"supportResources\": [\"string\"],\n  \"interventionPriority\": \"LOW | MEDIUM | HIGH | URGENT\",\n  \"advisorNextSteps\": [\"string\"],\n  \"estimatedTimeframe\": \"string\",\n  \"reasoning\": \"string\"\n}"},"typeVersion":1.3},{"id":"3f3b714a-27c4-4abf-a42b-bf424d92d3b3","name":"Notification Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[800,1584],"parameters":{"text":"={{ $fromAI(\"studentStatusData\", \"Student status validation results\", \"json\") }}","options":{"systemMessage":"You are a Notification Strategy Agent that determines appropriate communication channels and messaging for student lifecycle events.\n\nYour task is to:\n1. Determine who needs to be notified (student, advisor, faculty, administration)\n2. Select appropriate notification channels (email, Slack, SMS)\n3. Define notification priority and urgency\n4. Draft clear, actionable notification messages\n5. Set notification timing\n\nNotification Channels:\n- STUDENT_EMAIL: Direct communication to student\n- ADVISOR_SLACK: Alert to academic advisor via Slack\n- FACULTY_EMAIL: Escalation to faculty/department\n- ADMIN_DASHBOARD: Log to administrative system\n\nYou do NOT make academic judgments. You only coordinate communication based on status signals.\n\nReturn structured notification strategy."},"hasOutputParser":true,"toolDescription":"Determines notification strategy including channels, recipients, and messaging for student events"},"typeVersion":3},{"id":"f551fd61-f030-4dff-bc0e-41981570e64b","name":"OpenAI Model - Notification Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[800,1792],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"82adf348-9185-4b38-9ced-4a732abfe890","name":"Notification Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[976,1808],"parameters":{"jsonSchemaExample":"{\n  \"notificationChannels\": [\"STUDENT_EMAIL | ADVISOR_SLACK | FACULTY_EMAIL | ADMIN_DASHBOARD\"],\n  \"priority\": \"LOW | MEDIUM | HIGH | URGENT\",\n  \"studentMessage\": \"string\",\n  \"advisorMessage\": \"string\",\n  \"facultyMessage\": \"string\",\n  \"notificationTiming\": \"IMMEDIATE | WITHIN_24H | WITHIN_WEEK\",\n  \"reasoning\": \"string\"\n}"},"typeVersion":1.3},{"id":"4abd8a2d-1a35-4692-a583-0eb62640121c","name":"Escalation Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1088,1584],"parameters":{"text":"={{ $fromAI(\"studentStatusData\", \"Student status validation results\", \"json\") }}","options":{"systemMessage":"You are an Escalation Assessment Agent that determines when faculty or administrative intervention is required.\n\nYour task is to:\n1. Assess whether situation requires faculty escalation\n2. Identify escalation triggers (academic integrity, severe at-risk status, policy violations)\n3. Determine escalation urgency and priority\n4. Specify required faculty actions\n5. Provide escalation documentation\n\nEscalation Triggers:\n- Academic integrity concerns\n- Severe at-risk status (GPA < 2.0, multiple failed courses)\n- Policy violations\n- Graduation requirement exceptions\n- Financial aid eligibility issues\n\nYou do NOT make academic judgments about student capability. You only assess whether procedural escalation is warranted based on objective criteria.\n\nReturn structured escalation assessment."},"hasOutputParser":true,"toolDescription":"Assesses whether faculty escalation is required and provides escalation details"},"typeVersion":3},{"id":"c5f22cf0-1ea8-40c9-87c5-6c98a6c79b77","name":"OpenAI Model - Escalation Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1136,1792],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"bc7683ed-15e8-4b66-b422-25d55b56d41f","name":"Escalation Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1312,1808],"parameters":{"jsonSchemaExample":"{\n  \"escalationRequired\": \"boolean\",\n  \"escalationTriggers\": [\"string\"],\n  \"escalationUrgency\": \"LOW | MEDIUM | HIGH | CRITICAL\",\n  \"requiredFacultyActions\": [\"string\"],\n  \"escalationDocumentation\": \"string\",\n  \"reasoning\": \"string\"\n}"},"typeVersion":1.3},{"id":"d8acff29-6b82-4da7-98c3-8650c8189945","name":"Academic Orchestration Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[800,1360],"parameters":{"text":"=Student Status: {{ JSON.stringify($json.output) }}","options":{"systemMessage":"You are an Academic Orchestration Agent that coordinates advising, notifications, and escalation processes for student lifecycle management.\n\nYour task is to:\n1. Call the Advising Agent Tool to get advising recommendations\n2. Call the Notification Agent Tool to determine notification strategy\n3. Call the Escalation Agent Tool to assess escalation requirements\n4. Synthesize all agent outputs into a coordinated action plan\n5. Return structured orchestration results\n\nYou coordinate procedural actions but do NOT make academic judgments about student capability or potential. You only orchestrate the workflow based on objective status signals.\n\nIMPORTANT: You must call ALL THREE agent tools for every student event to ensure comprehensive coordination."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"09e731d5-2cfd-4954-98a0-7f7a21c35902","name":"OpenAI Model - Orchestration Agent","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[448,1440],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"9e0a6023-6f73-430a-bd94-ec4256ab09b7","name":"Orchestration Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1376,1584],"parameters":{"jsonSchemaExample":"{\n  \"actionType\": \"STUDENT_NOTIFICATION | ADVISOR_ALERT | FACULTY_ESCALATION\",\n  \"advisingRecommendations\": \"object\",\n  \"notificationStrategy\": \"object\",\n  \"escalationAssessment\": \"object\",\n  \"coordinatedActions\": [\"string\"],\n  \"overallPriority\": \"LOW | MEDIUM | HIGH | URGENT\",\n  \"orchestrationSummary\": \"string\"\n}"},"typeVersion":1.3},{"id":"35856db6-61cc-40aa-9e1f-45f44f18e7ad","name":"Route by Action Type","type":"n8n-nodes-base.switch","position":[1552,1376],"parameters":{"rules":{"values":[{"outputKey":"studentNotification","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.actionType }}","rightValue":"STUDENT_NOTIFICATION"}]},"renameOutput":true},{"outputKey":"advisorAlert","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.actionType }}","rightValue":"ADVISOR_ALERT"}]},"renameOutput":true},{"outputKey":"facultyEscalation","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.actionType }}","rightValue":"FACULTY_ESCALATION"}]},"renameOutput":true}]},"options":{"ignoreCase":true,"fallbackOutput":"extra","renameFallbackOutput":"unknownAction"}},"typeVersion":3.4},{"id":"5a627aec-ca13-4055-b6f4-1b040591fb9a","name":"Send Student Notification Email","type":"n8n-nodes-base.emailSend","position":[2064,1328],"webhookId":"0ec471a0-701d-4680-ab8c-0a94cf275492","parameters":{"html":"=<html>\n<body style=\"font-family: Arial, sans-serif; line-height: 1.6; color: #333;\">\n<div style=\"background-color: #0066cc; color: white; padding: 20px;\">\n<h2>Academic Status Update</h2>\n</div>\n\n<div style=\"padding: 20px;\">\n<p>Dear Student,</p>\n\n<p>{{ $json.output.notificationStrategy.studentMessage }}</p>\n\n<h3>Recommended Actions</h3>\n<ul>\n{{ $json.output.advisingRecommendations.recommendedActions.map(action => `<li>${action}</li>`).join(\"\") }}\n</ul>\n\n<h3>Support Resources Available</h3>\n<ul>\n{{ $json.output.advisingRecommendations.supportResources.map(resource => `<li>${resource}</li>`).join(\"\") }}\n</ul>\n\n<p style=\"margin-top: 30px; padding: 15px; background-color: #e3f2fd; border-left: 4px solid #2196f3;\">\n<strong>Next Steps:</strong> {{ $json.output.advisingRecommendations.advisorNextSteps.join(\", \") }}\n</p>\n\n<p style=\"color: #666; font-size: 12px; margin-top: 30px;\">This is an automated notification from the Student Lifecycle Management System.</p>\n</div>\n</body>\n</html>","options":{},"subject":"=Academic Update: {{ $json.output.notificationStrategy.priority }} Priority","toEmail":"={{ $json.body.studentEmail || \"student@example.com\" }}","fromEmail":"={{ $('Workflow Configuration').first().json.studentNotificationFromEmail }}"},"typeVersion":2.1},{"id":"555bc3cf-d65a-45ba-8436-13da0b4498a7","name":"Send Advisor Slack Alert","type":"n8n-nodes-base.slack","position":[2064,1808],"webhookId":"a062348c-8bf1-4e5b-b9e3-5d355e210b5a","parameters":{"text":"=:warning: *Academic Advisor Alert*\n\n*Student ID:* {{ $('Student Status Agent').first().json.output.studentId }}\n*Lifecycle Stage:* {{ $('Student Status Agent').first().json.output.lifecycleStage }}\n*Priority:* {{ $json.output.notificationStrategy.priority }}\n\n*Advisor Message:*\n{{ $json.output.notificationStrategy.advisorMessage }}\n\n*Recommended Actions:*\n{{ $json.output.advisingRecommendations.recommendedActions.map((action, i) => `${i+1}. ${action}`).join(\"\\n\") }}\n\n*Intervention Priority:* {{ $json.output.advisingRecommendations.interventionPriority }}\n*Timeframe:* {{ $json.output.advisingRecommendations.estimatedTimeframe }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $('Workflow Configuration').first().json.advisorSlackChannel }}"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"d34b1ayEBbvZm2lT","name":"Slack account"}},"typeVersion":2.4},{"id":"dd6a8a5f-f8a4-4243-b1b8-b5f87ced86a1","name":"Send Faculty Escalation Email","type":"n8n-nodes-base.emailSend","position":[2080,1600],"webhookId":"3a16b440-9b57-40a3-953d-b536274eddb6","parameters":{"html":"=<html>\n<body style=\"font-family: Arial, sans-serif; line-height: 1.6; color: #333;\">\n<div style=\"background-color: #dc3545; color: white; padding: 20px;\">\n<h2>🚨 Faculty Escalation Required</h2>\n</div>\n\n<div style=\"padding: 20px;\">\n<h3>Student Information</h3>\n<table style=\"width: 100%; border-collapse: collapse;\">\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Student ID:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $('Student Status Agent').first().json.output.studentId }}</td></tr>\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Lifecycle Stage:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $('Student Status Agent').first().json.output.lifecycleStage }}</td></tr>\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">GPA:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $('Student Status Agent').first().json.output.gpa }}</td></tr>\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Credits Completed:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $('Student Status Agent').first().json.output.creditsCompleted }} / {{ $('Student Status Agent').first().json.output.creditsRequired }}</td></tr>\n</table>\n\n<h3>Escalation Details</h3>\n<p><strong>Urgency:</strong> {{ $json.output.escalationAssessment.escalationUrgency }}</p>\n<p><strong>Triggers:</strong></p>\n<ul>\n{{ $json.output.escalationAssessment.escalationTriggers.map(trigger => `<li>${trigger}</li>`).join(\"\") }}\n</ul>\n\n<h3>Required Faculty Actions</h3>\n<ul>\n{{ $json.output.escalationAssessment.requiredFacultyActions.map(action => `<li>${action}</li>`).join(\"\") }}\n</ul>\n\n<h3>Escalation Documentation</h3>\n<p style=\"background-color: #f8f9fa; padding: 15px; border-left: 4px solid #dc3545;\">{{ $json.output.escalationAssessment.escalationDocumentation }}</p>\n\n<h3>Risk Factors</h3>\n<ul>\n{{ $('Student Status Agent').first().json.output.riskFactors.map(factor => `<li>${factor}</li>`).join(\"\") }}\n</ul>\n\n<p style=\"margin-top: 30px; padding: 15px; background-color: #fff3cd; border-left: 4px solid #ffc107;\">\n<strong>⚠️ IMMEDIATE REVIEW REQUIRED</strong><br>\nThis case requires faculty review and decision within {{ $json.output.advisingRecommendations.estimatedTimeframe }}.\n</p>\n\n<p style=\"color: #666; font-size: 12px; margin-top: 30px;\">Generated: {{ $now.toFormat(\"yyyy-MM-dd HH:mm:ss\") }}</p>\n</div>\n</body>\n</html>","options":{},"subject":"=FACULTY ESCALATION REQUIRED: {{ $json.output.escalationAssessment.escalationUrgency }} Urgency - Student {{ $('Student Status Agent').first().json.output.studentId }}","toEmail":"={{ $('Workflow Configuration').first().json.facultyEscalationEmail }}","fromEmail":"={{ $('Workflow Configuration').first().json.studentNotificationFromEmail }}"},"typeVersion":2.1},{"id":"c3779aa9-1d09-4386-9934-e38e81ea37fc","name":"Check if Escalation Required","type":"n8n-nodes-base.if","position":[1888,1536],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"id-1","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.output.escalationAssessment.escalationRequired }}","rightValue":true}]}},"typeVersion":2.3},{"id":"9ff93934-3124-4f01-b41c-cc3e80e02d1a","name":"Merge Notification Paths","type":"n8n-nodes-base.merge","position":[2320,1360],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition"},"typeVersion":3.2},{"id":"db20c21e-a9e0-4cbc-b23d-f263305f9a55","name":"Log Workflow Completion","type":"n8n-nodes-base.code","position":[2480,1360],"parameters":{"jsCode":"const timestamp = new Date().toISOString();\nconst studentId = $('Student Status Agent').first().json.output.studentId;\nconst lifecycleStage = $('Student Status Agent').first().json.output.lifecycleStage;\nconst actionType = $('Academic Orchestration Agent').first().json.output.actionType;\nconst priority = $('Academic Orchestration Agent').first().json.output.overallPriority;\n\nconst logEntry = {\n  timestamp,\n  studentId,\n  lifecycleStage,\n  actionType,\n  priority,\n  orchestrationSummary: $('Academic Orchestration Agent').first().json.output.orchestrationSummary,\n  workflowStatus: \"COMPLETED\"\n};\n\nconsole.log(\"Workflow Completion Log:\", JSON.stringify(logEntry, null, 2));\n\nreturn [{ json: logEntry }];"},"typeVersion":2},{"id":"7e00ffb2-0f73-4350-8c43-ee950137a477","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[432,800],"parameters":{"color":5,"width":400,"height":336,"content":"## Prerequisites\n- OpenAI API key\n- Gmail account with OAuth2\n- Slack workspace with bot token\n## Use Cases\n- Automated academic query triage for universities\n## Customization\n- Add new sub-agents for career or financial advising\n## Benefits\n- Reduces advisor workload through intelligent auto-triage\n- Ensures urgent cases are escalated instantly"},"typeVersion":1},{"id":"90d1104c-63d5-4560-b42b-62f17336c0b8","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[32,816],"parameters":{"width":352,"height":320,"content":"## Setup Steps\n1. Import workflow and configure Student Event Webhook URL.\n2. Add OpenAI API credentials to all OpenAI Model nodes.\n3. Configure Gmail credentials for student and faculty email nodes.\n4. Add Slack credentials and set target advisor channel for Slack alert.\n5. Set escalation thresholds in the \"Check if Escalation Required\" node.\n6. Test with sample student event payload via webhook."},"typeVersion":1},{"id":"3a4385ab-3250-4c10-a4b2-f9b129dc9891","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-608,864],"parameters":{"width":592,"height":272,"content":"## How It Works\nThis workflow automates student academic advising by deploying a multi-agent AI system that triages student queries, routes them intelligently, and escalates when human intervention is needed. Designed for academic institutions, it eliminates manual triage bottlenecks and ensures timely, context-aware responses. A student event triggers the webhook, which feeds into a Status Agent to classify the student's situation. A routing node directs the request to an Academic Orchestration Agent, which delegates to specialized sub-agents—Advising, Notification, or Escalation—based on query type. Results are routed by action type, checked for escalation, then dispatched via student email, faculty email, or Slack advisor alert before logging completion."},"typeVersion":1},{"id":"adb50523-0782-4324-9d9d-95399bf5c417","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-608,1200],"parameters":{"color":7,"width":672,"height":752,"content":"## Student Status Agent\n**What** – Classifies student status using OpenAI.\n**Why** – Ensures downstream agents have validated context before acting."},"typeVersion":1},{"id":"99e7ec15-2265-4396-b432-467e297f32ee","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[80,1200],"parameters":{"color":7,"width":304,"height":736,"content":"## Route by Student Status\n**What** – Directs flow based on status classification.\n**Why** – Prevents irrelevant agents from processing unmatched queries."},"typeVersion":1},{"id":"549828d4-e590-48c1-8a00-5b5e1e49427c","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[416,1200],"parameters":{"color":7,"width":1072,"height":848,"content":"## Academic Orchestration Agent\n**What** – Delegates to Advising, Notification, or Escalation sub-agents.\n**Why** – Centralises decision logic for modular, maintainable routing."},"typeVersion":1},{"id":"e8623f89-1daf-484b-b4f8-667ff7109033","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[1504,1200],"parameters":{"color":7,"width":288,"height":848,"content":"## Route by Action Type & Escalation Check\n**What** – Determines output channel and escalation need.\n**Why** – Ensures urgent cases reach faculty without delay."},"typeVersion":1},{"id":"8e90f822-2de2-412a-b2b3-7c6a72da2553","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[1824,1184],"parameters":{"color":7,"width":768,"height":832,"content":"## Notifications\n**What** – Sends email to student/faculty or Slack alert to advisor.\n**Why** – Delivers outcomes through the most appropriate channel."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"b00ba4de-5b56-4acf-9039-e7f09ee85bcf","connections":{"Advising Agent Tool":{"ai_tool":[[{"node":"Academic Orchestration Agent","type":"ai_tool","index":0}]]},"Route by Action Type":{"main":[[{"node":"Send Student Notification Email","type":"main","index":0}],[{"node":"Send Advisor Slack Alert","type":"main","index":0}],[{"node":"Check if Escalation Required","type":"main","index":0}]]},"Student Status Agent":{"main":[[{"node":"Route by Student Status","type":"main","index":0}]]},"Escalation Agent Tool":{"ai_tool":[[{"node":"Academic Orchestration Agent","type":"ai_tool","index":0}]]},"Student Event Webhook":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Advising Output Parser":{"ai_outputParser":[[{"node":"Advising Agent Tool","type":"ai_outputParser","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Student Status Agent","type":"main","index":0}]]},"Notification Agent Tool":{"ai_tool":[[{"node":"Academic Orchestration Agent","type":"ai_tool","index":0}]]},"Route by Student Status":{"main":[[{"node":"Academic Orchestration Agent","type":"main","index":0}]]},"Escalation Output Parser":{"ai_outputParser":[[{"node":"Escalation Agent Tool","type":"ai_outputParser","index":0}]]},"Merge Notification Paths":{"main":[[{"node":"Log Workflow Completion","type":"main","index":0}]]},"Send Advisor Slack Alert":{"main":[[{"node":"Merge Notification Paths","type":"main","index":1}]]},"Notification Output Parser":{"ai_outputParser":[[{"node":"Notification Agent Tool","type":"ai_outputParser","index":0}]]},"OpenAI Model - Status Agent":{"ai_languageModel":[[{"node":"Student Status Agent","type":"ai_languageModel","index":0}]]},"Orchestration Output Parser":{"ai_outputParser":[[{"node":"Academic Orchestration Agent","type":"ai_outputParser","index":0}]]},"Academic Orchestration Agent":{"main":[[{"node":"Route by Action Type","type":"main","index":0}]]},"Check if Escalation Required":{"main":[[{"node":"Send Faculty Escalation Email","type":"main","index":0}],[{"node":"Merge Notification Paths","type":"main","index":1}]]},"OpenAI Model - Advising Agent":{"ai_languageModel":[[{"node":"Advising Agent Tool","type":"ai_languageModel","index":0}]]},"Send Faculty Escalation Email":{"main":[[{"node":"Merge Notification Paths","type":"main","index":0}]]},"OpenAI Model - Escalation Agent":{"ai_languageModel":[[{"node":"Escalation Agent Tool","type":"ai_languageModel","index":0}]]},"Send Student Notification Email":{"main":[[{"node":"Merge Notification Paths","type":"main","index":0}]]},"Status Validation Output Parser":{"ai_outputParser":[[{"node":"Student Status Agent","type":"ai_outputParser","index":0}]]},"OpenAI Model - Notification Agent":{"ai_languageModel":[[{"node":"Notification Agent Tool","type":"ai_languageModel","index":0}]]},"OpenAI Model - Orchestration Agent":{"ai_languageModel":[[{"node":"Academic Orchestration Agent","type":"ai_languageModel","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":33,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.switch":{"count":2},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.emailSend":{"count":2},"n8n-nodes-base.stickyNote":{"count":8},"@n8n/n8n-nodes-langchain.agent":{"count":2},"@n8n/n8n-nodes-langchain.agentTool":{"count":3},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":5},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":5}}},"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":11,"icon":"fa:envelope","name":"n8n-nodes-base.emailSend","codex":{"data":{"alias":["SMTP","email","human","form","wait","hitl","approval"],"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/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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/sendemail/"}]},"categories":["Communication","HITL","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Send Email","color":"#00bb88"},"iconData":{"icon":"envelope","type":"icon"},"displayName":"Send Email","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":9,"name":"Core Nodes"},{"id":28,"name":"HITL"}]},{"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":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":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"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/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/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/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"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/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"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/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/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/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, 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/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/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"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/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"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":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":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":1310,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agentTool","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent Tool","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent Tool","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":40,"name":"Support Chatbot"},{"id":47,"name":"AI Chatbot"}],"image":[]}}