Inspiration

We were inspired by the growing issue of household food waste, especially after learning that over 58% of food in Canadian homes is wasted, resulting in $49 billion worth of food waste each year. We realized that many people want to reduce waste but forget what they’ve bought or don’t know how to use ingredients before they expire. This motivated us to build ShelfLife, a tool that helps people manage their groceries smarter and waste less.

What it does

ShelfLife allows users to track grocery items, get expiry alerts, and receive personalized recipe suggestions using ingredients that are about to expire. Users can scan their grocery receipts in real-time using OCR, and the app logs items automatically. A personalized food waste analysis dashboard gives users insights into what’s being wasted and how they can improve. The app even suggests local food banks for donations and plans to support leftover sharing in the future.

How we built it

We built ShelfLife using: > TypeScript and React for the front end > MongoDB for authentication and real-time database storage > Veryfi for receipt OCR and item extraction > Google Gemini to match recipes with near-expiry ingredients We also designed a responsive, color-coded dashboard for easy item management.

Challenges we ran into

One major challenge was working with OCR. Grocery receipts vary greatly in format, and parsing them reliably took significant preprocessing and regex tuning. Getting real-time results while maintaining speed and accuracy was tough. We also had to carefully design the food waste scoring system—it needed to be informative without overwhelming or discouraging users.

Accomplishments that we're proud of

Fully functional real-time receipt scanner Smooth expiry tracking and recipe suggestion flow Our unique food waste analysis system that creates user accountability Clean, responsive UI with a great user experience Building a working prototype in a short time while solving a real-world problem

What we learned

We learned how to integrate OCR into a React project, optimize for real-time user input, and structure a database to support dynamic food item tracking. We also gained experience in balancing user experience with behavioural nudges, and how to make a sustainability-focused product feel helpful—not preachy. Most importantly, we learned how to collaborate effectively under pressure and turn an idea into a working, impactful solution.

Share this project:

Updates