Inspiration
We all have had issues with Boston University dining in the past, especially with the varied quality of food. While there were items we liked, there were also many we didn't, but we also disliked the current format of the BU dining hall menu website and wanted a system that could build recommendations on our preferences. We saw that the dining section on MyFitnessTerrier had been discontinued and wanted functionality like that to be easily accessible.
What it does
Our website takes user input in a variety of features (the specific keywords, dietary restrictions, and order of importance are taken into account) and uses it to generate a list of the items which most fit their desires. It also provides an option for user rating and is capable of showing meals for a given day of the week. Our website requires users to make an account under bu.edu and saves preferences as well as meals that users liked allowing for better suggestions later on. We also have an extra functionality for people who want to track the nutritional value of the foods they eat in a week as well as a user profile that saves favorite meals.
How we built it
We used the Lattice Public Services API on BU Dining Halls to acquire our dataset which we then filtered and used for our website. To create our user sorting system we categorized our features into hard and soft preferences so the model would know what was more important. We then started development on the actual website using Vue and hosted with Vercel. To store user data we created a log in profile for users and to maximize user friendliness we added both the ability to rate the model's predictions to be used as data in the future to adjust the predictions as well as a way to customize model importance.
Challenges we ran into
When we initially made our website, we did not know how to get our website up and running properly outside of a local host. We initially attempted to make use of Github Pages but pivoted to Vercel once we realized we didn't have access to premium and that caused a huge amount of issues due to the Vercel website struggling to communicate with the Cloudflare, as they were setup by different people and we had a lot of coding conflicts as a result. We also ran into problems with our preference system as we initially struggled to find a balance on how the model should choose priority between conflicting settings where we eventually settled on having the user make their own decisions instead of making assumptions about user preference.
Accomplishments that we're proud of
As DS students we are proud of the adaptive rating system as well as the self inputted weighting system that modifies how the model generates meals for users, ensuring no miscommunication between the website and the user. To maximize user functionality we made user profiles, advanced weights, and a favoriting system. Lastly we included a basic nutrition tracker for each week.
What we learned
This was the first hackathon for all of us and before this we had never tried to collaborate on a project with so many people so quickly so we had to learn fast how to divide tasks and work effectively as a group on Github. We were all relatively green on website development so it took time for us to learn the API deployment, how to use Vue, and how to host our server outside of local environments. We also learned how to keep important information like API keys private, how to problem solve with incomplete data, and how to make a nonlinear model that better reflects what a user intends more than what they actually input.
What's next for Meal BUilder
At present one of our features is a rating system that is intended to use data in real time to modify the predictions for future users. However we have no data since the website was just created and is a prototype, but with more use the website could have full fledged machine learning instead of relying entirely on just user weights which may often not be exactly as the user intended. As meal items do not specify whether they are desserts, main courses, or sides our model can not currently make complete meal plans, but with user data and future testing we could easily implement this feature in full.
Built With
- cloudflare
- javascript
- python
- vercel
- vue
Log in or sign up for Devpost to join the conversation.