Every semester starts the same way. Five or six syllabi land in your downloads folder. Each one is 8-12 pages. You skim through looking for exam dates, assignment deadlines, office hours, required textbooks — mentally trying to piece together what the next 16 weeks look like. Then you do it again for the next course.
By week two, you’ve forgotten which professor has Tuesday office hours and whether that first paper is due the 14th or the 17th.
Built a workflow that reads every syllabus the moment it lands in Drive and pulls everything into a single structured summary — deadlines sorted chronologically, grading breakdown, required materials, instructor contact, schedule. All in Slack within about 15 seconds.
What it does
Syllabus dropped in Google Drive folder → extracts all course data → sorts deadlines chronologically → logs to course tracker sheet → posts full summary to Slack
Takes about 12-15 seconds per syllabus.
What gets extracted
Course:
- Name, course code, credits, semester, department
Instructor:
- Name, email, phone, office location, office hours
Schedule:
-
Meeting days, time, location
-
Semester start and end dates
Course content:
- Description and learning objectives (top 5)
Materials:
-
Required textbooks — title, author, ISBN
-
Optional materials flagged separately
Grading breakdown:
-
Every category with percentage weight
-
e.g., Assignments: 30% | Midterm: 25% | Final: 35% | Participation: 10%
Assignments:
- Name, type, due date, weight, description
Exams:
- Name, date, time, location, weight
Upcoming deadlines:
- All assignments and exams merged, sorted by date, top 10 listed
Policies:
-
Attendance policy
-
Late work policy
-
Academic integrity policy
What lands in Slack
📚 New Course Syllabus Processed
CS401 - Advanced Algorithms
👨🏫 Instructor: Dr. Maria Santos
📧 Email: [email protected]
🕐 Office Hours: Mon/Wed 2-4pm, Room 312
📅 Schedule: Mon, Wed, Fri at 10:00am in Building A, Room 204
📊 Grading: Assignments: 30% | Midterm: 25% | Final: 35% | Participation: 10%
📝 Assignments: 8 | Exams: 2
📖 Required Materials: 2
Upcoming Deadlines:
📌 Assignment 1 - Sorting Algorithms: Feb 14
📌 Assignment 2 - Graph Problems: Feb 28
📌 Midterm Exam: Mar 12
📌 Assignment 3 - Dynamic Programming: Mar 21
📌 Assignment 4 - NP Completeness: Apr 4
...
📄 View Syllabus
Drop 5 syllabi in the folder, get 5 structured summaries in Slack. Your entire semester mapped out before you’ve attended a single class.
What lands in Google Sheets
Each row: Course Code, Course Name, Credits, Semester, Instructor, Email, Office Hours, Schedule, Grading, Assignments (count), Exams (count), Required Materials (count), Added Date
One row per course. All your courses for the semester in a single view.
Setup
You’ll need:
-
Google Drive (folder for syllabus documents)
-
Google Sheets (free)
-
n8n instance (self-hosted — uses PDF Vector community node)
-
PDF Vector account (free tier: 100 credits/month)
-
Slack (for syllabus summaries)
About 10 minutes to configure.
Download
Workflow JSON:
course-syllabus-processor.json
Full workflow collection:
Setup Guide
Step 1: Get your PDF Vector API key
Sign up at pdfvector.com — free plan works fine for a semester’s worth of syllabi. Go to API Keys and generate a key.
Step 2: Create your Google Drive folder
Create a folder called “Syllabi” or “Course Documents.” Copy the folder ID from the URL.
Step 3: Create your Google Sheet
Headers in Row 1:
Course Code | Course Name | Credits | Semester | Instructor | Email | Office Hours | Schedule | Grading | Assignments | Exams | Required Materials | Added Date
Step 4: Import the workflow
Download JSON from GitHub → n8n → Import from File.
Step 5: Configure the nodes
Google Drive Trigger:
-
Connect Google Drive account (OAuth2)
-
Paste your folder ID
-
Event: File Created
Download Document:
- Same Google Drive credential
PDF Vector - Extract Syllabus:
-
Add new credential (Bearer Token)
-
Paste your API key
Process Syllabus:
- No config needed — deadline sorting and formatting run automatically
Log Course Info:
-
Connect Google Sheets
-
Paste your Sheet ID
Notify Student:
-
Connect Slack
-
Select your personal channel or a dedicated course-updates channel
Step 6: Test it
Drop any course syllabus PDF into your Drive folder. Check Slack and your Sheet after about 20 seconds.
Accuracy
Tested on syllabi from US universities across engineering, business, and humanities departments.
-
Course name, code, credits, instructor: ~97% on standard formatted syllabi
-
Schedule (days, time, location): ~94%
-
Assignment names and due dates: ~92% — works best when dates are explicit (Feb 14) vs relative (Week 3)
-
Grading breakdown with weights: ~93%
-
Required textbook titles and authors: ~95%
-
Exam dates: ~96% — usually the most prominently listed dates in any syllabus
Syllabi with non-standard formatting (heavy use of tables, unusual layouts) may miss some fields. Most university-standard syllabi extract reliably.
Cost
Each syllabus uses 3-4 PDF Vector credits. A full semester of 5-6 courses costs about 20-25 credits — well within the free tier of 100 credits/month.
Customizing it
Add Google Calendar integration:
After the Slack node, loop through the assignments array and create a Google Calendar event for each deadline. Every due date lands in your calendar automatically.
Build a master deadline view:
Create a second sheet tab called “Deadlines” and append each assignment and exam as individual rows — one row per deadline across all courses. Sort by date for a single master view of the entire semester.
Study group sharing:
Point the Slack notification to a shared study group channel instead of a personal one. Everyone in the group gets the same structured summary when any member uploads a syllabus.
Academic advisor use:
For advisors tracking multiple students, add a Student Name column and use subfolders per student as separate triggers.
Limitations
-
Requires self-hosted n8n (PDF Vector is a community node)
-
Relative dates (“Week 3,” “two weeks before finals”) don’t extract as calendar dates
-
Some syllabi list “TBD” for exam locations — these extract as-is
-
No Google Calendar integration built in — requires additional nodes
Questions? Drop a comment.
