Inspiration
Every semester starts the same way: four courses, four syllabi, each written differently. The deadlines are scattered across PDFs, tables and paragraphs, and nobody adds them up. So the week where three deadlines collide only becomes obvious when it's already on top of you. I wanted a tool that finds that week early.
What it does
Syllabuddy turns your syllabi into one study plan.
- Read: Upload a PDF or photo, or paste the assessment section. AI extracts every deadline and grade weight.
- Check: Every date is checked against the original text. Anything doubtful is flagged, and flagged items are sent back to the AI for one second look. Then you review an editable table.
- Plan: Code builds a week-by-week study plan and flags crunch weeks. A dashboard shows this week's load, your next deadline and today's tasks.
- Adapt: Type "I'm sick from Thursday to Sunday" and the AI proposes plan changes. Nothing applies until you approve it.
- Export the plan as a calendar file.
How we built it
Syllabuddy is a Next.js and TypeScript app. The AI does two jobs that are hard for code: reading messy documents and understanding plain-English changes. Everything else is ordinary code: the planner, crunch detection, calendar export, and the checks on the AI's output. The AI never builds the plan, so the plan is predictable.
Safety was part of the design from the start. The syllabus is treated as untrusted data. Every extracted item must quote the line it came from, and the server checks that the quote exists and that its date matches. Output is a fixed structure, the text is scanned for planted instructions (including hidden text in PDFs), and a human approves every change.
Challenges we ran into
- Trusting the AI's output. Plausible but wrong dates are the real risk, so I built quote and date verification and a check-and-repair loop where the code, not the AI, decides what is correct.
- Unreliable free-tier AI. Models got busy or retired mid-build. I added timeouts, retries and backup models, and tested those failure paths with a simulated AI service.
- Reading PDFs. Text PDFs are read as text so dates can be verified. Scans and photos can't be checked against text, and the app says so.
Accomplishments that we're proud of
- An AI that gets checked, not just trusted. Every extracted deadline has to quote the line it came from. The code verifies the quote and the date, flags anything doubtful, and sends those items back to the AI once. The AI never marks its own work correct.
- Measured, not just demoed.On six test syllabi, including two prompt-injection attacks: 24 of 24 deadlines found, 23 of 23 grade weights right, 0 invented items, and neither attack followed.
- Tested for failure. The app is tested against a simulated AI service that is busy, retired, slow or returns bad data, and it recovers or fails with a clear message each time. About 90 automated checks pass.
- Built solo, start to finish. A working app with PDF reading, a dashboard, crunch-week detection, plan changes the student approves, and calendar export.
- Honest about its limits. SAFETY.md in the repo lists what it can't do, such as checking scans and photos against text.
What we learned
Calling an AI is the easy part. The valuable work is everything around it: checking its answers, handling failures, and keeping the student in control.
What's next for Syllabuddy
- Google Calendar sync, so the plan updates your calendar without a download.
- A larger evaluation set, with more messy and unusual syllabi, to measure accuracy better.
- Scanned PDFs and photos, with better checking where there's no text to compare against.
- Workload across a whole degree, to show the busiest weeks across all courses.
- Testing with real students, to learn what they'd change first.
Built With
- css
- gemini-api
- ics
- next.js
- node.js
- react
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.