Inspiration

High tuition and yet, scheduling doesn't just take time and patience, but overwhelms you to find the right match for your interests. You don't want to spend a semester in regret wishing to have chosen something else. Is this system flexible? Yes. Is it friendly for bigger universities? No. With over 3000+ courses to choose from and 80+ degree programs, it is quite uncommon to be lost in the forest. But need not to worry because we come with a guide. While actively updating its database with the latest information from ATLAS and UMich Data which is publicly available, our app was able to scrape the tiniest regions to give you highly specific recommendations for not just one or two semesters; but for you entire 4-year program. Just tell it what goal you wish to achieve, and it gives you a detailed plan that dynamically should change based on your transcript, prompts and context that it learns as it talks to you and secures your career path. Sounds similar? Yes, to an advisor. But from surveys take from UMich students, 6/10 students don't rely on advisors for long term planning as it gets "too broad" for them or they keep redirecting to you other advisors. Also scheduling requires appointments and detailed conversations that you might need at 2am at night. Worry not as our app is present as that agent right next to you, at your call. Not only does it give you a schedule plan, but it also accounts for changes in your interest and grades so that even if things might go downhill, it optimistically redirects you to a different, realistic and non-overwhelming career path that hones on your skills and gives you 95%+ satisfaction level.

What it does

Looking at databases with more than 500+ courses, your transcript, your goal and current status in your career track - our agent actively scans every possible combination that matches your interest in <7s that you could iterate though and make inference from. It Like a resume, the schedule our tool provides should become a part of your day-to-day life that goes over several iterations and refines itself.

How we built it

There were two main pipelines. The first pipeline was designed to retrieve core-classes and requirements for the desired goal. This was done by web-scrapping course requirements for each major and then implementing a RAG pipeline with a custom vector database containing course descriptions, prerequisites, and requirements for each major offered by the College of Literature, Sciences, and Arts. The second pipeline had the main prerogative to get the elective courses that aligned well with the student’s academic goal. This was done by making database that contained a list of tokenized words for every umich course. This was retrieved through getting every course description via umich API’s to then applying an LLM to the course description.

Data generation:

  • First, the course requirements pages for all majors offered through the College of Literature, Sciences, and Arts are scraped and added to a directory.
  • Next, a vector database using QdrantDB is used to generate and store vector embeddings. They will be used to retrieve the requirements for a specific major based on semantic search.

Overall agent details:

  • Model: GPT 4.1
  • Tools: RetrieveMajorInfoTool (RAG pipeline) and SearchCoursesTool (API integration)

RetrieveMajorInfoTool (for static data- course requirements per major)

When a user enters a prompt in the frontend, an LLM (GPT 4.1) extracts the relevant keywords and user's goals to determine the best major. Next the agent may choose to invoke the RetrieveMajorInfoTool tool to retrieve the requirements for the determined major.

SearchCoursesTool (for dynamically changing course information)

The agent uses this tool to help search for electives through the UMScheduleOfClasses API. This helps with picking the best electives given the users' goals and major, enabling personalized recommendations.

Challenges we ran into

  • Integrating the application backend with frontend.
  • Not spending >10s in search time unless user explicitly asks for it
  • Proofing the pipeline to stay grounded in the truth (provided by the vector database) while allowing for flexibility of exploration.
  • customized API calls to UMich database

Accomplishments that we're proud of

  • Integrating RAG with a custom vector database for accurate course recommendations.
  • Adding a structured output parser to make the agent's output predictably render on the frontend
  • System prompt techniques for detailed outlining of expected behavior from the agent

What we learned

Through collaboration we were able to get a better understanding of skills we already had prior experience with such as word-scrapping, API’s, and vector embeddings.

  • We explored how strong agentic pipelines can be built through integrating the right tools with the right sources of data. In our case, we needed the courses and their descriptions to be dynamically accessible through API calls, since they are updated frequently. However, the overall major requirements were large unstructured text, so a RAG-based approach was better to handle this data.
  • Most importantly, we learned the importance of acquiring the right type of data for the specific problem statement being solved.

What's next for Long Term Personalized Course Scheduler

  • More personalized recommendations and real-time updates for course information
  • Considering further features such as students' posts on course opinions for better matches

Built With

Share this project:

Updates