Inspiration

Research suggests that "about one-third of all food produced for human consumption goes to waste". It deeply concerns us and we decide to act on it. Therefore, SnapTap was created. After readings, we realized that one of the biggest causes behind food waste is restaurants/individuals overbuying. SnapTap reminds people to consume the food before it expires. We hope it would be a good start to mitigate the concerning issue and help people develop more efficient lifestyles.

What it does

Overall, SnapTap reminds people to consume the food before it expires. The way to use the app is quite simple. All you need to do is to open the app and snap a pic of the receipt. SnapTap will then convert receipts into digital records consisting of the items, prices, and date. Furthermore, the collected records will be accumulated and be used for multiple purposes, including notifying users of the expirations of the food, calculating weekly groceries cost (to be developed), and analyzing spending habits of the user (to be developed).

How we built it

For the front-end, we used Android Studio to create the user interface. For the back-end, we used Tesseract as the engine for image parsing and extracting UPC (Universal Product Code) from Walmart receipts. The extracted UPC data will then be passed to a public API of Walmart to get the product information. For all the APIs, Node.js was used.

Challenges we ran into

  • The data from image parsing may be inaccurate, or won’t even be returned due to low image quality
  • Setups for TestApi take us much longer time than we expected because of some unnoticeable errors in terminal commands
  • Limitation of android itself
  • Setting up the server in the cloud and getting it connect to the client is tedious and the protocols are different. We need to modify, for example, byte arrays to make the transmission of data possible.
  • MongoDB deployment to cloud with mLab caused timeout session issues with Heroku deployment of express server

What we learned

  • How to effectively build a project as a team in a limited time
  • How to build APIs
  • How to parse Images using tesseract

What's next for SnapTap

In the demo, users can add items on receipt to it and cross off items that were used. However, the application will have three horizontal sliding pages with different functions eventually. The first page shows the data of the most recent receipt, includes items, prices, picture of items and the purchase time. The second page displays the cumulative result of all items. The third page stores all the other data.(e.g diagram that plays the change of price of bananas during different time period)

Also, our application can only read pictures of receipts from Walmart. In the future, the application is gonna work in much more chained grocery stores.

Built With

Share this project:

Updates