Inspiration

On campus, we kept seeing the same thing every meal: conveyor belts taking away food that never got touched. Everyone talks about food waste, but in the dining hall, it’s basically invisible data. Staff are busy, students are in and out, and no one wants to actually fill out those feedback surveys. We wanted something that would make waste visible in a simple way and give dining staff a tool they could actually use, not a spreadsheet that disappears after the hackathon.

What it does

Waste Watch helps dining teams track what is actually being eaten vs left behind.

  • Staff create a menu in the web app and set quantities for each item.
  • As trays come back, they can record how much was taken and how much was left behind vs. explicitly tossed. This gives them info on how often a food item was served, and if it was actually fully eaten, respectively.
  • The backend aggregates all of that data by item, menu, and waste through a Raspberry Pi that uses YOLO vision to detect what food items are coming through the conveyor belts.
  • An AI summary turns the raw numbers into a short report calling out the biggest waste contributors, approximate percentages, leftovers vs explicit waste, and low-waste items worth emphasizing for data points. -There’s also a report page with charts showing top wasted items, least wasteful items, and total waste over time.

How we built it

On the backend we used FastAPI with MongoDB to store each menu row (item, quantity, taken, wasted, meal period).

For AI summaries we use the Gemini API. We send a clean JSON summary of the waste stats and ask it to generate a short markdown explanation highlighting main contributors and opportunities for improvement.

The frontend is a React application using React Router and Bootstrap, including:

  • A menu builder page with searchable item selection
  • An edit page for adjusting quantities and meal periods
  • A dashboard for entering taken amounts and reading AI summaries
  • A reports page that uses chart.js for visual analytics

Challenges we ran into

We tried to work with Vultr, but it didn't work out, so we only had enough time to train on 20 epochs, which limited the accuracy of classifications since it took about 5 hours to train the model.

Accomplishments that we're proud of

Creating our own machine learning model and seeing it work so well in a short period of time!

What we learned

We learned how important clean data modeling is when you’re doing real aggregation and analysis. We also learned how to prompt AI in a way that produces consistent, short, dashboard-friendly insights. And we improved our workflow around React state, effect synchronization, and backend/AI integration.

What’s next for Waste Watch

We want to integrate staff accounts with role-based permissions, support exporting reports for dining managers. Longer term, we’d like to let dining teams compare trends across weeks and get proactive AI suggestions on portion sizing.

Built With

Share this project:

Updates