Project Info

Foodprint

Devpost

Inspiration

Food waste is a huge problem. College campuses in the United States generate an estimated 22 million pounds of food waste annually. Every day in dining halls, students take food they don't end up eating, and most schools have very little visibility into what those leftovers actually are. They might know how much food they purchased or how much waste was thrown away overall, but they usually don't know which specific foods students consistently leave on their plates.

What it does

Foodprint is an AI-powered dining hall waste-tracking system that analyzes leftover food on student plates. A Raspberry Pi camera monitors plates, Overshoot detects when a full plate is present, and Gemini analyzes captured images to identify leftover foods. The system combines this data with scraped dining hall menus using Browserbase and stores the results in a database. Staff can then view waste trends, meal-specific waste patterns, recent plate events, and actionable insights through a dashboard, helping them understand what foods are being wasted most frequently.

How we built it

We built Foodprint using a Raspberry Pi camera stream, Python, FastAPI, SQLite, and OpenCV. Overshoot handles full-plate detection, while Gemini generates detailed leftover descriptions from captured images. Browserbase and Stagehand automatically scrape dining hall menus and store them as structured data. The backend aggregates waste events and serves analytics through a FastAPI dashboard, allowing dining hall staff to explore trends and menu-specific waste patterns.

Challenges we ran into

One of our biggest challenges was how classifying against the entire Berkeley Dining menu was far too broad a problem, which pushed us to scope classification down to one dining hall and meal period at a time. Scraping the menu data itself was its own challenge, since the site is JS-rendered and filter-based, requiring Browserbase and Stagehand instead of a simple static scrape.

Accomplishments we're proud of

We're proud that we built a working end-to-end pipeline in a short timeframe, taking a live Pi camera feed all the way through AI-based food classification to a working dashboard. We solved the dynamic menu problem by using Browserbase to automatically scrape Berkeley Dining's daily menus, and we designed two physical deployment options, a conveyor belt mount and a trash can mount, so the system could realistically fit different dining hall layouts.

What we learned

Working on Foodprint taught us a lot about the gap between planning hardware on paper and actually wiring it up, since things like camera mounting and color format only became obvious once we had real components in hand. We also learned that scoping a problem well matters as much as the model you choose, which is why we narrowed classification down to one dining hall and meal period at a time.

What's next

Our next goal is to move beyond generic leftover descriptions and improve menu-item-level identification accuracy. We also would love to bring this to life and expand it to dining halls across the world so that we can help universities reduce food waste at scale by turning everyday dining hall activity into actionable sustainability insights.

Analysis

Compare with all teams

View

Metric

Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.

Technology

Found in codeClaimed only
  • FastAPIIn code
  • HTMLIn code
  • PythonIn code
  • Google GeminiClaimed

3 of 4 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.

AI coding agents

No AI coding agent signals were found in this repository.

Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.

Codebase size

Source size

156 KB

Source files

9

Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.

0 stars