E X P Y
Expy is a food expiry tracking app to fight food waste I built for Android. It grew out of an AP CS class final project ("design software to solve a problem in your community") that I did with two other students.
​
Purpose: Most food items we purchase have a "use by" date. Most people, once the food has "expired", simply throw it away. This leads to lots of food waste, as well as environmental destruction (greenhouse gas emissions as well as wasted energy, water, and other resources). What if an app could help us by tracking food items about to expire so that we consume them before.
​
Beginnings: I was playing around with a computer vision library that could do text recognition. Plus, I also have a phobia about expired dairy products. I once consumed some expired milk and the results were....not good.
​
Development: I had to learn about Android apps, and teach the other two students I worked with. I setup a github repository, taught them how to use it, scoped out the project, and came up with a "minimum viable product" that would be useful. I divided up the tasks, and we had a working prototype to present to the class, and get a good grade.
​
However, the app developed for the class was far from usable by the general public. I spent a lot of time (the other two students were too busy with other things to continue with me) over the summer refining the app in order to make it usable by the public, so that I could release it on the Google Play store, and get my friends and others in the community to at least be beta-testers.
​
Technical Challenges:
​
-
The main text that you have to recognize, the use-by date, has no standard format. It can be "Best by 092821" or "BB Sep 2021" or "USE BY 09/28/2021" or many other such permutations.
-
I came up with a nifty algorithm to handle as many of these cases as possible in a logical way.​
-
-
Automating the recognition of the product name by using the UPC code. What database to use? What API service to use? Build your own database? Store it locally? Store it remotely? Etc...
-
I came up with an approach to use Amazon's search API to find the name. It works for most products. There are other API services for UPC lookup, but these cost money, and are rate limited. My current approach using Amazon is free, and not subject to rate limits as far as I know.​
-
-
Making the app provide notifications even when it's not being actively used.
-
This has proven to be somewhat challenging and I will add it in later versions​
-
-
Being able to recognize the date from multiple blocks of text that may be returned by the vision system.
-
I devised an approach for handling this as well.​
-
-
Making the app user friendly and intuitive with good feedback so that even if the automated recognition systems failed, the date and product info could be entered manually.
-
I added GUI features that show the user progress in recognizing the various fields, as well as intuitive text entry boxes. Expiring items are ​sorted and color coded.
-
​
Anyway, here is the app's web page where you can try it out!
​
Future work:
​
-
Improve notifications
-
Recognize produce and use statistical estimates for expiry date
-
Create recipes that incorporate expiring items as suggestions to inspire usage
-
Work with grocers to streamline information about use by dates so that one code on receipt could encode all of it
-
Open source
​
​