Our Inspiration
Berkeley’s course registration site makes it convoluted and overwhelming to choose the right schedule, especially for incoming students.
What we do
BearTracks recommends potential course schedules based on students’ time availability, previous completed credits, major requirements, and areas of interest.
How we built it
We store course registration data from berkeleytime.com on Supabase, collect user input from our React frontend, and process it using Flask and Python. Based on user input we query a ChromaDB vector embedding of every class to determine which classes align most closely with the user’s interests. We compile all possible combinations of 4 classes to form the student’s schedule, drawn from unmet requirements and areas of interest, and use Anthropic’s Claude model to rank these class combinations based on user input time constraints and interest areas.
Challenges we ran into
It was challenging to prompt-design to obtain accurate output from LLMs regarding ranking class combinations. We debated which features were most important to implement and demo in a limited time-frame.
Accomplishments that we're proud of
We’re proud to have a full stack demo of our implementation (public over shared wifi, hosting costs money), and of building a valuable tool that benefits and welcomes new members of the Berkeley community.
What we learned
We learned to navigate a full stack end to end design process using a React server, Flask API for our NLP model, Supabase database, and how to collaborate and delegate tasks in our interdependent environment.
What's next for BearTracks
Building out features that allow users to develop a profile. To fully represent the nuances of the course-scheduling system (nested prereqs, professor ratings, graduation timeline planning).
Log in or sign up for Devpost to join the conversation.