Inspiration

Swiping into a dining hall ($17 dollars) only to get an iced coffee, wasting food because it didn't taste as good as it looked, and waiting too long for a meal that you have to scarf down before class. Even though we do our dining hall research online beforehand, sometimes the menu isn't an accurate representation of the actual offerings, and at some locations, there is no online menu. To be perfectly honest, finding the right places to eat to get the most out of your dining plan requires a lot of mental energy--a satisfying meal should not be difficult or time-consuming to find. 22 million pounds of food are wasted annually at college campuses, and by picking the hall with food you actually enjoy and getting a meal you will actually finish, Munch Meter will help you enjoy your college dining experience and decrease the amount of food waste.

What it does

Munch Meter is an easy way to compare and review menu items at dining halls around campus in real time to help students make an informed decision on where to eat and what to grab. Users can submit reviews on menu items using upvotes and downvotes and also quantify wait-times with a drop-down menu, and Munch Meter's leaderboard will accordingly rank menu items and dining halls.

How we built it

Munch Meter is a website built on top of the Django framework and deployed with a UI designed in HTML, CSS, and JS. Munch Meter relies on web scraping from Columbia Dining pages for each of Columbia's Dining Halls. User authentication ensures every student, faculty, and staff on campus can contribute to Munch Meter and present an accurate, up-to-date representation of food on campus so you know what tastes great and avoid the wait!

Challenges we ran into

Webscraping the Columbia Dining page was difficult due to the dynamic nature of the website. Using BeautifulSoup and Selenium presented additional challenges since the angularJS values proved challenging to return, as well as iterating through each of the nine dining halls. Our website was initially going to be designed in Taipy, but the lack of documentation and tutorials made it a difficult framework to learn on the fly. We eventually decided to use Django due to previous experience and its speed and ease of deployability.

Accomplishments that we're proud of

We are proud to have achieved our goal of building a website that is simple and straightforward for users. A major annoyance of the current Columbia Dining website is the high number of clicks required to switch between the different dining hall menus. For our project, all the information on Munch Meter's dashboard can be viewed without additional clicks and with minimal scrolling. On the dining-hall-specific rating pages, the upvote-downvote system for each menu item makes it easy for users to quickly rate their food. In addition, utilizing a wait time dropdown menu rather than requiring users to type a number simplifies the rating process and incentivizes users to rate their meals.

What we learned

We learned about web scraping for dynamic websites and using Selenium to automate headless browsers. We also improved our web development skills while designing a website that was easy to use and simple for the user to get the information they need all in one page. Since nobody has time to research the different foods at each dining hall, we put all the essential information on the home page and made it extremely easy for users to input their feedback so that students are encouraged to both use and contribute to Munch Meter.

What's next for Munch Meter

Adding an image submission functionality. Suggesting menu items or dining halls based on a user's class schedule or taste profile (can train an AI model to predict which flavors, dining halls, or items the user would prefer). Adding a ranking purely based on distance from the dining hall. Helping the user navigate between their current location and their chosen dining hall. Scraping the description of the food (namely, potential allergens) from the menu and adding it to our platform.

Share this project:

Updates