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)
1) 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
2) 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)?