FoodWatch is a platform that allows users to track and manage their groceries. Users can create, edit, and access their inventory, and receive SMS updates when expiry dates approach.


According to The Atlantic, about $160 billion of produce is thrown away annually in the US, often as a result of expiry. The idea for FoodWatch was inspired by a desire to reduce this amount of waste through creating a convenient way of reminding users of expiry dates, while also making grocery shopping easier by allowing users to access a catalog of what they already have back home.

What it does

FoodWatch operates via SMS messages between the user and the platform. To add items to their inventory (the groceries they currently have), the user provides a description and expiry date. To view their inventory, the user may send a message to FoodWatch, and is returned with a full list of items and their expiry dates. In addition, the user may also view their list online. The user may also remove items upon consumption; a user guide can be found below.

At time points of one week, three days, and one day before an item’s expiry date, as well as the expiry date itself, the user will also receive messages informing them of the upcoming expiry. The usage of SMS as a means of communication means that an internet connection is not required for checking or updating lists, and the list can be accessed via users’ mobile devices.

How we built it

We used the following technologies:

  • User interaction via Programmable SMS on Twilio
  • Database hosting on Firebase
  • Frontend deployment on Flask micro-framework

The majority of the project was handled in Python. We used a Python Flask micro-framework to run the backend of our app. The Flask app is used to access and edit the Firebase database and send and receive SMS from a phone via Twilio.

User actions:

  • Add item to inventory: “add (quantity) (commodity name) (expiry date)”
  • Viewing inventory: “pantry”
  • Remove item from inventory: “remove (quantity) (commodity name) (expiry date)”

Challenges we ran into

Figuring out how to properly communicate to users via SMS messages was perhaps the largest challenge for us. None of us had experience with this. Coupled with the fact that none of us had used Firebase or Twilio for an app before either, just getting to familiarize ourselves with the different interfaces used to make our project.

Accomplishments that we're proud of

Our platform actually works!

What we learned

A lot. Most notably, however, we found that we learned the most about using Twilio's functions and the Firebase platform for supporting apps.

What's next for FoodWatch

Our main goal for improving FoodWatch would be improving accessibility. Mainly, we want to add compatibility with Google Home and Alexa, so that user inventory can also be edited through voice commands (e.g. using the Google Assistant API for Google Home).

Currently, we also have a way for users to access their inventory online, where all their items are listed via the Flask microframework. Aside from the task of finding web hosting and a domain name, in the future, we would like to set up an authentication system to ensure users access their own lists. This feature would add an extra level of convenience to checking groceries and upcoming expiry dates.

Share this project: