Inspiration

Course scheduling is hard. There are too many websites to keep track of (Esther, Banner, DegreeWorks, etc.) and there is just too much hassle. We have personally made so many over-cluttered Google sheets, documents, and more just to figure out what classes to take during our time at Rice. That's why we built OwlTrack. We are seeking to revolutionize course scheduling, making it seamless and easy for students to plan their academic journeys.

What it does

OwlTrack creates four-year plans, get course suggestions, meet graduation requirements, view course details and much more. It recommends courses based on your history of courses and autofills the classes you have already taken into your four year plan. OwlTrack also allows you to view your progress until graduation, along with your credits, gpa, and major. OwlTrack also has a built in LLM that allows you to get course registration and career advice based on your profile. Furthermore, OwlTrack has an AI suggestion model that gives you tailored course recommendations based on courses you have taken in the past.

How we built it

We built OwlTrack with the React, Next.js, Python, Flask, Clerk, Typescript & Javascript tech stack. We scraped Rice's course catalog with Python's BeautifulSoup library and created a transcript parser using advanced regex queries that allows us to populate a user's classes, credits, etc. from their most recent transcript.

The scheduler was built in React, calling backend Flask endpoints using python that allowed the frontend to communicate and get data from the MongoDB Atlas. Atlas served as our data-hub, making it fast, secure, and cloud-based. The scheduler allows users to search our whole database of courses and we make use of React's drag and drop library to create a user-friendly experience.

The AI suggestions tab of our product allows users to talk to an LLM chatbot, which takes as its input the user's profile to generate custom AI-based responses to the user's queries. The Explore More suggestions ML model was built upon a complex vector-distance algorithm, which allowed us to convert classes into vectors and find similar classes to the user's previously taken classes by finding the shortest vector distance between different classes. This was a powerful step towards making our application robust and effective.

Finally, we created a partial Adobe prototype to turn four year plans into PDFs, so that students can easily share them with professors and major advisors to get instant feedback and support.

Challenges we ran into

We ran into lots of challenges during this process. The initial challenge was figuring out how to store the courses data, since there are so many different components that go into different courses. Each course has pre-requisites, co-requisites, and each major has core requirements, elective requirements, distribution credits, specializations, etc. We needed to find an efficient way to classify this data and store it, so we decided to use MongoDB Atlas and create collections for majors, courses, users, four-year plans, and have dictionaries and different objects as fields within those collections.

Another common problem we had to overcome was the integration of Flask api routes that needed to communicate with the frontend. We ran into lots of CORS errors that blocked out localhost domains, and that needed tons of work to overcome. We needed to allow access to the api routes from all request points, pass in user ids as headers, and create modular API routes to ensure no duplicate code.

We also ran into some problems with transcript parsing, since transcripts could have classes with numbers in them, classes that span multiple lines, etc. We overcame this challenge by studying regex queries, and implementing an effective query to catch all edge cases.

Finally, our AI suggestion linear-algebra algorithm was quite difficult since it was complex to understand. We focused a lot of our attention on studying documentation of similar algorithms when trying to create our own vector-distance based ML algorithm for classifying courses based on course history.

Accomplishments that we're proud of

We are very proud of the product we were able to create at large. We all agreed that we would definitely use OwlTrack to create and keep track of our own four year plans since it simplifies the whole process. We took a robust, data-driven approach that allowed us to build scalable and secure technology that taught us tons of skills along the way. We are proud of figuring out complex computational algorithms on our own and using that to create a difference and solve an impactful problem that affects us and many students around the world. And most importantly, we are proud of having fun and coming together as a team to turn our collaborative vision into reality.

What we learned

We learned so much about software development and collaboration on this journey. We learned about making good design choices and using modern technologies to speed up development and create high-quality software. We learned about complex ML algorithms and how to utilize them in our own context.

What's next for OwlTrack

We hope OwlTrack can be expanded to double majors, minors, grad students, and even other schools. We also want to improve the functionality for the Adobe Express add-on, so that students can convert multiple plans into pdfs and bring them to their advisors to get feedback and find the best plan for them. We want OwlTrack to be a leader in course scheduling so that students can have easy access to class data and be stress-free when it comes to planning their academic journey. We are looking to take OwlTrack to the next level so that students all around the world can plan their lives for future success. We wanted to thank HackRice for this opportunity, and we hope to keep working on OwlTrack!

Built With

Share this project:

Updates