Inspiration

Every semester, thousands of campus events order catered food—from pizzas at department talks to buffet setups for student org meetings. However, standard search methods only surface a tiny fraction of these. Through our data audit of the UMich campus calendar across six key catering terms, we identified 80 unique catered sessions vs. only 3 explicit "free food" listings.

This revealed a massive 26.7x discovery gap: 96.25% of catered events are virtually invisible to students who could benefit from them. At the same time, organizers throw away unconsumed leftovers simply because there is no channel for real-time redistribution. We built CampusBite to bridge this information gap, turning event logistics into measurable sustainability impact.

Inspiration

Walk through almost any University of Michigan building after a lunch talk and you'll pass a room with trays of leftover pizza, sandwiches or catering. Minutes later, it ends up in the trash, while students on tight budgets look for a quick bite between classes.

The food isn't rare; it's hard to find. When we searched U-M's events calendar for "free food", we got 3 events for the whole school year. When we searched the words hosts actually write, like "lunch provided", "dinner" and "pizza", we found about 80. And once an event ends, there's no fast way to say "free food here, right now" before it's thrown out. We built CampusBite to close that gap.

What it does

CampusBite is a real-time food discovery and leftover rescue platform for university campuses.

  • Smart food discovery: Scans U-M's public event calendars for the words hosts actually write ("lunch provided", "dinner", "pizza", "light refreshments", "catering"), catching catered events that a plain "free food" search misses.
  • Live food map & feed: Shows active pickups on a campus map with countdown pins, plus event cards with location, food types, quantities and how many students are going.
  • 1-tap student updates: Students tap "I'm going", then report "Get Some" or "All Gone", so everyone sees whether food is still there.
  • No-login organizer controls: Hosts post leftovers without an account (a food photo is required). They get a private organizer key by email; pasting it into CampusBite unlocks a one-tap "Food has run out" button for their event only.
  • Grow your tree: Every report waters the student's personal tree, and the CO₂ saved from their pickups moves it to the next stage. A personal and campus-wide impact page tracks meals rescued, food weight and estimated CO₂ avoided.

How we built it

  • Data ingestion: A Python scraper pulls public U-M event listings and keeps events whose descriptions include food keywords, then deduplicates events that match more than one keyword.
  • Backend: Node.js stores events, reports and organizer keys, and sends organizer keys by email.
  • Frontend: A React + Tailwind CSS web app with a Leaflet map. We designed the desktop app and a mobile layout in Figma.
  • Organizer keys: Each event gets a random private key (cb_org_…). The key is masked when pasted and can only close its own event.

How we calculate impact

  • Only food that was actually picked up counts. Listings and "I'm going" registrations don't count; only "Get Some" reports with a quantity do.
  • Items to weight: each item is converted using typical unit weights (e.g., about 110 g per pizza slice). These unit weights are team estimates.
  • Meals: 1 meal = 1.2 lb (0.544 kg) of food, following USDA and Feeding America.
  • CO₂: food sent to landfill breaks down without oxygen and releases methane. Based on EPA's WARM model, keeping food out of landfill avoids about 0.6 kg CO₂e per kg of food. This is the only factor we apply; we leave out emissions from producing replacement food, so the estimate is conservative.
  • Driving equivalent: CO₂e divided by EPA's average of about 0.4 kg CO₂ per mile for a passenger car.
  • Drinks are tracked in cups only and claim no emissions.
  • Main assumption: this food would otherwise have been thrown away.

Challenges we ran into

  • Messy event language: Hosts almost never write "free food". On U-M's Sessions calendar (Oct 2026 – Apr 2027), "free food" returned 3 event listings, while "lunch provided" returned 31, "light refreshment" 23, "dinner" 15, "pizza" 9 and "catering" 2. After removing events that matched more than one keyword, about 79 remained. Some matches are false positives (e.g. "bring your own lunch").
  • Preventing ghost runs: Leftovers disappear in minutes. Countdown pins, student "All Gone" reports and the organizer's one-tap close keep the map from sending people to empty tables.
  • Trust without logins: Hosts shouldn't need an account, but posts still need to be real. A required photo, a private per-event key and student reports balance low friction with accountability.
  • Fitting it on one screen: Balancing the map, filters, alerts and event cards in one view.

Accomplishments that we're proud of

  • Measuring the gap: On U-M's own calendar, "free food" finds 3 events while six food keywords find about 79, so roughly 96% of food events are invisible to the search a student would actually type.
  • An end-to-end loop: From discovering an event, to a host posting leftovers, to students reporting and growing their tree, to the host closing the event.
  • A grounded impact estimate: U-M doesn't track event leftovers, so we combined our real calendar count with published research. Our count found 137 sessions with food this school year. Wageningen University & Research measured 575 catered events (about 12 guests each on average) and found about 127 g of food left over per guest. 137 × 12 × 127 g ≈ 209 kg of food, or about 380 meals (0.544 kg each) and 125 kg CO₂e (0.596 kg CO₂e per kg of food). That's a floor: many U-M events seat 120+ people, and student org events aren't included yet.
  • Transparent impact tracking: The in-app impact page only counts food that students actually report with "Get Some", and labels every CO₂ number as a modeled estimate.

What we learned

  • Words matter: Students search "free food"; hosts write "lunch provided". Matching real language found over 25× more events.
  • Fewer steps, more updates: People leaving a lecture won't create an account or fill out long forms, so posting and closing an event had to take only a few taps.
  • Rewards keep data fresh: We expect the tree to motivate students to report when food runs out. Measuring that is a first goal for our pilot.

What's next for CampusBite

  • Pilot with frequent hosts: Start with groups that serve food often, like WISE, Rackham and Student Life, and replace our estimate with measured leftovers, meals claimed and time from post to pickup.
  • More sources: Add student org platforms (Maize Pages), GroupMe and Slack.
  • Nearby alerts: Notify opted-in students when food is posted within 500 meters.
  • Mobile version: Build the phone layout we designed in Figma.
  • Bigger partners: Explore campus dining and local Ann Arbor restaurants.
Share this project:

Updates

Submission history