Inspiration
We were inspired to create this project using machine learning after hearing about popular language models like ChatGPT. However, due to the cost of using OpenAI API, we decided to build the machine learning aspect ourselves. We wanted to address the issue of not knowing what classes to take for the following and future semesters, as Testudo's Schedule of Classes is not customizable enough to provide personalized recommendations. Thus, we decided to build an app that can provide customized course recommendations.
What it does
RecommendMe is an app that asks users for their academic information such as their major(s) and courses taken. After that, users can use a text input field to ask for course recommendations based on their own criteria. For example, they can ask the app "Recommend me a course that teaches me artificial intelligence", and it will provide recommended courses based on this prompt.
How we built it
There were two main components to building this app: the frontend using React and the backend using Fast API to run the machine learning model. We used many Material-UI components to build the UI and primarily focused on the backend. We used Python and Tensorflow to process a search passed from our API, and trained a Deep Neural Network to classify a search request to the best department that fits the search. We then filtered the courses provided by Testudo and UMD.io based on the best-fit departments. After filtration, we calculated the similarity of the search and each course to determine which courses best represent the user's search.
Challenges we ran into
The most challenging aspect of this project was training the model to give reasonable course recommendations based on a given prompt. Another technical issue that we faced was connecting the frontend and backend together so that we could do a POST request to the backend and run our prompt through the machine learning model to get back recommended courses. We found that the data we wanted to send was not properly formatted, which caused a cascade of issues.
Accomplishments that we're proud of
We're proud of debugging all the tiny bugs we had connecting the frontend to the backend, as well as minimizing our scope while still leaving the possibility to expand in the future. Additionally, we were conscious of the user workflow throughout the whole process and implemented small details such as disabling the next button and autocomplete based on whether data was provided or not.
What we learned
We learned a lot about how APIs work, transfer learning, and sentence embedding within machine learning. We also gained knowledge about various design cues for websites and how to make the UX more intuitive.
What's next for RecommendMe
What next for RecommendMe is possibly connecting it to some database for authentication and to store what searches a particular user has made in the past. Additionally, it would be more robust and support things like recommending professors for a particular recommended class or recommending a class given the input specified by a specific professor. Beyond that, it can hopefully generate a 4-year plan given all the text constraints provided.
Log in or sign up for Devpost to join the conversation.