Inspiration
Let's be honest, we all have gone through the time of choosing courses for school. There are hundreds, if not thousands, of courses available in my school - Bucknell University. Scrolling through tabs just to find 4-5 courses that suit us must feel like hell. Therefore, I created this holy tool to assist us in choosing the best courses for us.
What it does
Imagine you're a robot that can actually click buttons on a student's screen instead of just yapping about what buttons they should click. That's basically what this is.
You type something like: "Plan my next semester: max 15 credits, nothing before 10am, prioritize AI and cybersecurity" and the AI reads your actual transcript, cross-checks prerequisites, confirms there are seats open, and builds you a conflict-free draft schedule. No tabs, no spreadsheets, no prayers to the registration gods.
And because professors matter (let's be real), you can tell it "I hate CS320, it's brutal" and instead of rebuilding the whole thing from scratch like some kind of masochist, it just swaps that one course for alternatives and tells you the trade-offs.
The whole app is visible as you talk: a course catalog you can filter, a weekly timetable that shows both your actual schedule (solid blocks) and proposed courses, a transcript, and a degree audit that tells you exactly what you're missing before graduation. Draft courses wear a big blue banner that screams no seats held, you haven't committed to anything so you never accidentally think you're registered when you're not.
How I built it
JavaScript. All of it. HTML for the page, CSS so it doesn't look like a 1997 geocities site, and the brain of the thing lives in a standalone file so it could be tested without mocking the entire DOM.
Then I wired up 13 tools via WebMCP: search courses, check if you're eligible, build a schedule, swap one course, explain what a course does to your graduation timeline, handle registrations, join waitlists. The AI calls these tools; the tools update the page you're looking at; you see the results instantly and decide whether to confirm or bail.
It all runs in the browser. No backend. No database. Just sample student data and a 22-course Bucknell catalog baked into the JavaScript, so the demo works anywhere without authentication headaches.
I use Vercel to upload it and push my project on Github.
Challenges I ran into
The Draft vs. Registered blurry line: A timetable showing five proposed courses looks exactly like a registered schedule if you're not careful. I solved this by slapping a warning banner on drafts ("no seats held"), color-coding the timetable blocks differently (solid orange = real, dashed blue = proposed), and keeping separate credit counters ("6 of 15 registered · 9 in draft"). Students should never have to guess.
Small changes breaking the whole plan: Traditional schedulers rebuild everything when you tweak one thing. That's sucks .So I built a "replace one course" tool that keeps the other four courses exactly as they are, shows you alternatives ranked by how well they fit your goals, and explains the specific trade-offs. "This swap is 8 hours lighter per week but drops a team project from the term." That's useful.
Credits lie: "15 credits" sounds light until you realize it's 52 hours a week of work if you hit CS320 (the hardest course I seeded). So every course now carries a weekly workload estimate, a project count, and a workload band (light / moderate / heavy). Proposing a schedule without showing this is just being mean to the student.
Accomplishments that I am proud of
I built an end-to-end workflow where a student and an AI do something neither could alone: review degree progress, propose a schedule that respects constraints and interests, explore alternatives, swap one course intelligently, then register after the student clicks a confirmation button. The AI doesn't fake-click anything. Instead, it calls structured tools that update the real page.
I also made recommendations actually useful by connecting three things that usually live in separate tabs: scheduling, workload, and graduation requirements. When the AI suggests a course, it tells you why (elective vs. required), how much time it costs, and what graduation requirement it closes.
And I made the invisible visible. There's an activity log timestamping every action and crediting it to either the student or the advisor. You always know who did what and when.
What I learned
Academic advice is complicated: Just matching a student's interests to course descriptions is useless. You need to fold in prerequisites, seat availability, time conflicts, workload, degree requirements, and what happens downstream if you defer a course. A good recommendation juggles all of these at once.
State must be bulletproof: Students hate ambiguity. "Is this registered or just a proposal?" "Does deferring this course block me next term?" These questions need crystal-clear answers, baked into the UI, not buried in a chatbot transcript. I learned this the hard way when I first tested with the page.
Structured tools > vague chat: A chatbot can describe what a student should do. WebMCP tools let an AI actually do it—and because the tools are typed and validate input, the AI is less likely to hallucinate or contradict itself.
Honesty about limits: Workload estimates are imperfect. Graduation timelines are projections. Our UI shows these as estimates and projections, not guarantees. If you're going to let an AI influence a student's academic path, you have to be clear about what you actually know.
What's next
Ideally, I'd swap a course and lock in its replacement as a single transaction, so you're never in limbo holding a draft. I'd also validate workload estimates against historical student feedback (if a university had that data). Multi-semester planning would help students see the full path to graduation, not just the next term.
Longer term, real integration with a university's enrollment system (with proper auth, privacy safeguards, and audit trails) would make this a genuine advising tool instead of a demo. Right now, this is a prototype with sample data.
Built With
- css3
- github
- html5
- javascript
- openai
- vercel
- webmcp
Log in or sign up for Devpost to join the conversation.