AutomationFlowsAI & RAG › Route and Escalate Student Advising Requests with Openai, Gmail and Slack

Route and Escalate Student Advising Requests with Openai, Gmail and Slack

ByCheng Siong Chin @cschin on n8n.io

This 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…

Webhook trigger★★★★★ complexityAI-powered33 nodesAgentOpenAI ChatOutput Parser StructuredAgent ToolEmail SendSlack
AI & RAG Trigger: Webhook Nodes: 33 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #13680 — we link there as the canonical source.

This workflow follows the Agent → Agenttool recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "OlzPb-gZ5hhPqEXbGxYeK",
  "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
      ],
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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": {
          "name": "<your credential>"
        }
      },
      "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
      ],
      "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
      ],
      "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": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "dd6a8a5f-f8a4-4243-b1b8-b5f87ced86a1",
      "name": "Send Faculty Escalation Email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2080,
        1600
      ],
      "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>\ud83d\udea8 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>\u26a0\ufe0f 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\u2014Advising, Notification, or Escalation\u2014based 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** \u2013 Classifies student status using OpenAI.\n**Why** \u2013 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** \u2013 Directs flow based on status classification.\n**Why** \u2013 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** \u2013 Delegates to Advising, Notification, or Escalation sub-agents.\n**Why** \u2013 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** \u2013 Determines output channel and escalation need.\n**Why** \u2013 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** \u2013 Sends email to student/faculty or Slack alert to advisor.\n**Why** \u2013 Delivers outcomes through the most appropriate channel."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "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
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This 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…

Source: https://n8n.io/workflows/13680/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow automates end-to-end AI-driven content moderation for platforms managing user-generated content, including marketplaces, communities, and enterprise systems. It is designed for product,

Agent, OpenAI Chat, Output Parser Structured +4
AI & RAG

This workflow automates platform trust and safety operations by deploying a multi-agent AI system that detects abuse signals, investigates behaviour, scores risk, checks policy compliance, and enforce

Agent, OpenAI Chat, Output Parser Structured +5
AI & RAG

This workflow transforms natural language queries into research reports through a five-stage AI pipeline. When triggered via webhook (typically from Google Sheets using the companion [](https://gist.g

Redis, Agent, Output Parser Structured +7
AI & RAG

This workflow automates end-to-end carbon emissions monitoring, strategy optimisation, and ESG reporting using a multi-agent AI supervisor architecture in n8n. Designed for sustainability managers, ES

Agent, OpenAI Chat, Output Parser Structured +10
AI & RAG

This workflow automates customer feedback processing by analyzing sentiment, identifying key issues, generating personalized responses, and escalating critical cases to support teams when required. De

Redis, Postgres, Agent +7