Inspiration
The idea for this project came from a very simple but very common problem at the University of Toronto: course selection confusion.
A friend of mine was struggling to decide which courses to take and which professors to choose. After talking with more people, it became obvious that this wasn’t an isolated case. Many UofT students—especially in their first or second year—face the same uncertainty. There are hundreds of courses, different program requirements, and large differences between instructors. Navigating all of this without guidance can feel overwhelming.
Because of that, I wanted to build something that could act as a smart assistant for course planning. Instead of scrolling through forums, spreadsheets, and scattered advice, students could receive personalized suggestions based on their goals, interests, and learning preferences. An important part of the idea was also professor matching, since teaching style and course difficulty often depend heavily on the instructor.
The goal was simple: make course planning less confusing and more personalized for UofT students.
How I Built It
This project was built during the GenAI Hackathon, where rapid prototyping and “vibe coding” were strongly encouraged.
The core development process was a mix of:
Personal development and system design
AI-assisted coding using Claude
Iterative testing and debugging
Using AI during development turned out to be surprisingly effective. It allowed me to move much faster when building UI components, structuring data models, and prototyping features. In many ways, it acted like a high-speed coding collaborator that could quickly generate drafts of implementations.
However, the debugging process still required careful manual work. When something broke, it often meant tracing through multiple components and checking state updates line by line. Ironically, debugging sometimes took longer than writing the initial code, especially when small logic errors caused unexpected behavior.
Challenges
One of the main challenges was building a system that could capture meaningful personalization without overwhelming the user with questions.
The onboarding flow needed to balance several factors:
academic background
program interests
completed courses
learning preferences
courses' prerequisites
professor expectations
Designing this flow required several iterations to keep it both informative and fast to complete.
Another challenge was the time constraint of a hackathon. The project was built within a limited timeframe, so many parts are still closer to an MVP (Minimum Viable Product). Some features could be expanded further, and there may still be rough edges in the current implementation.
What I Learned
This project reinforced a few key ideas:
AI-assisted development can dramatically accelerate prototyping
Good UX often matters as much as the underlying model
Debugging and system integration remain deeply human tasks
Most importantly, it showed that even a simple idea—helping students pick courses—can become a meaningful tool when combined with personalization and intelligent guidance.
Current Status
Since this project was created during a hackathon, it should be considered an MVP. Some parts may still be imperfect, and future improvements could include:
stronger recommendation logic
better professor data integration
deeper personalization models
courses' prerequisite considerations when generating the schedule
But even in its current form, the goal remains the same: help UofT students navigate course planning with more clarity and choose the right courses for them.
Built With
- anthropic-api
- claude
- github
- openrouter-api
- tavily-api
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.