Generate Student Course Schedules Based on Prerequisites with GPT and Google Sheets
Create a Fall 2025 course schedule for each student based on what they’ve already completed, catalog prerequisites, and term availability (Fall/Both). Reads students from Google Sheets → asks an AI agent to select exactly 5 courses (target 15–17 credits, no duplicates, prereqs enforced) → appends each student’s schedule to a schedule tab.
🧠 Summary Trigger:* Manual — “When clicking ‘Execute workflow’” I/O:* Google Sheets in → OpenAI decisioning → Google Sheets out Ideal for:** Registrars, advisors, degree-planning prototypes
✅ What this template does
Reads: StudentID, Name, Program, Year, CompletedCourses (pipe-separated CourseIDs) from **Sheet1
Decides: AI Scheduling Agent chooses 5 courses per student following catalog rules and prerequisites
Writes: Appends StudentID + Schedule strings to schedule worksheet
Credits target: 15–17 total per term
Catalog rules (enforced in the agent prompt):
Use Fall or Both courses for Fall 2025
Enforce AND prereqs (e.g., CS-102|CS-103 means both)
Priority: Major Core → Major Elective → Gen Ed (include Gen Ed if needed)
No duplicates or already-completed courses
Prefer 200-level progression when prereqs allow
⚙️ Setup (only 2 steps)
- Connect Google Sheets (OAuth2)
In n8n → Credentials → New → Google Sheets (OAuth2), sign in and grant access
In the Google Sheets nodes, select your spreadsheet and these tabs: Sheet1 (input students) schedule (output)
> Example spreadsheet (replace with your own):
> - Input: .../edit#gid=0
> - Output: .../edit#gid=572766543
- Connect OpenAI (API Key)
In n8n → Credentials → New → OpenAI API, paste your key
In the OpenAI Chat Model node, select that credential and a chat model (e.g., gpt-4o)
📥 Required input (Sheet1)
Columns**: StudentID, Name, Program, Year, CompletedCourses
CompletedCourses**: pipe-separated IDs (e.g., GEN-101|GEN-103|CS-101)
Program* names should match those referenced in the embedded catalog (e.g., *Computer Science BS, Business Administration BBA, etc.)
📤 Output (schedule tab) Columns**: StudentID Schedule → a selected course string (written one row per course after splitting)
🧩 Nodes in this template
Manual Trigger* → Get Student Data (Google Sheets) → Scheduling Agent (OpenAI)*
→ Split Schedule → Set Fields → Clear sheet → Append Schedule (Google Sheets)
🛠 Configuration tips
If you rename tabs, update both Get Student Data and Append Schedule nodes
Keep CompletedCourses consistent (use | as the delimiter)
To store rationale as well, add a column to the output and map it from the agent’s JSON
🧪 Test quickly
- Add 2–3 sample student rows with realistic CompletedCourses
- Run the workflow and verify: 5 course rows per student in schedule Course IDs respect prereqs & Fall/Both availability Credits sum ~15–17
🧯 Troubleshooting
Sheets OAuth error:** Reconnect “Google Sheets (OAuth2)” and re-select the spreadsheet & tabs
Empty schedules:** Ensure CompletedCourses uses | and that programs/courses align with the provided catalog names
Prereq violations:** Check that students actually have all AND-prereqs in CompletedCourses
OpenAI errors (401/429):** Verify API key, billing, and rate-limit → retry with lower concurrency
🔒 Privacy & data handling
Student rows are sent to OpenAI for decisioning. Remove or mask any fields you don’t want shared.
Google Sheets retains input/output. Use spreadsheet sharing controls to limit access.
💸 Cost & performance
OpenAI**: Billed per token; cost scales with student count and prompt size
Google Sheets**: Free within normal usage limits
Runtime**: Typically seconds to a minute depending on rows and rate limits
🧱 Limitations & assumptions
Works for Fall 2025 only (as written). For Spring, update availability rules in the agent prompt
Assumes catalog in the agent system message is your source of truth
Assumes Program names match catalog variants (case/spacing matter for clarity)
🧩 Customization ideas
Add a Max Credits column to cap term credits per student
Include Rationale in the sheet for advisor review
Add a “Gen Ed needed?” flag per student to force at least one Gen Ed selection
Export to PDF or email the schedules to advisors/students
🧾 Version & maintenance
n8n version:** Tested on recent n8n Cloud builds (2025)
Community nodes:** Not required
Maintenance:** Update the embedded catalog and offerings each term; keep prerequisites accurate
🗂 Tags & category
Category:** Education / Student Information Systems
Tags:** scheduling, registrar, google-sheets, openai, prerequisites, degree-planning, catalog, fall-term
🗒 Changelog v1.0.0** — Initial release: Sheets in/out, Fall 2025 catalog rules, prereq enforcement, 5-course selection, credits target
📬 Contact Need help customizing this (e.g., cohort logic, program-specific rules, adding rationale to the sheet, or emailing PDFs)?
📧 rbreen@ynteractive.com
🔗 Robert Breen — https://www.linkedin.com/in/robert-breen-29429625/
🌐 ynteractive.com — https://ynteractive.com
Related Templates
Use OpenRouter in n8n versions <1.78
What it is: In version 1.78, n8n introduced a dedicated node to use the OpenRouter service, which lets you to use a lot...
Task Deadline Reminders with Google Sheets, ChatGPT, and Gmail
Intro This template is for project managers, team leads, or anyone who wants to automatically remind teammates of tasks ...
🤖 Build Resilient AI Workflows with Automatic GPT and Gemini Failover Chain
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. How it works This...
🔒 Please log in to import templates to n8n and favorite templates
Workflow Visualization
Loading...
Preparing workflow renderer
Comments (0)
Login to post comments