"You ever wanna make soup and you need like only one stalk of celery, but you go to the store to buy some and end up getting like 20?? And the worst part is that they all go bad and then you gotta throw them out" 😤
On a more serious note though, in 2018 alone, America produced 81.4 BILLION lbs of food waste. That's equivalent to about 45,000 Statue of Liberties.
Celery as a concept is an attempt at making a positive impact against the scourge of food wastage. It is about fixing our habits over time; To be more conscientious about the environment around us, and about how even our most seemingly insignificant decisions can lead to great adversarial impacts to our planet. Think about it as reinforcement learning, but instead of training the computer, we're training the human~
What it does
Celery records instances where you either throw away food ingredients due to it not being used enough, or when you run out of food ingredients by virtue of it being used too much. It then tries to cater grocery shopping recommendations to you so that you stay away from either of these extremes, additionally, it tends to preferentially provide recipe recommendations that utilize these specific ingredients, so that the "habits" of the user fall more towards the middle ground (0) rather than the extremes (-1 & 1).
How we built it
The implementation of Celery is divided into three distinct parts:
(1): The PostgreSQL database, hosted on Heroku, (2): The REST API, written in Python utilizing the FastAPI, and finally, (3) The (web) App, written in Java, powered by the Vaadin framework.
The database is based in fairly standard relational database principles, and features six different tables.
Challenges we ran into
We couldn't find a necessarily accessible open source dataset for recipes. The ones we found either contained recipes in such a way that the ingredients were too complex to parse through to populate a relational database in a fair amount of time considering a Hackathon, and the ones that had accessible ingredients lacked in verbose instructions. To reconcile with this, we borrowed different elements from each of them and tried to pair them together to come up with something, that admittedly is not perfect, but should work fairly alright given a Hackathon scenario. Such challenges were compounded due to the small size of the team (1).
Accomplishments that we're proud of
To have to set up an, although bare-bones, yet (slightly) function web-application in addition to setting up a REST API and a database was fairly new to me. And having done that, I feel like I have gained much in perspective, which I feel is an accomplishment in & of itself.
What's next for Celery
We had initially planned on a Twilio integration to power scheduled grocery shopping notifications via SMS, and what we had conceptualized as "Grocery Runs" where the grocery list items would have been sorted in a way that it would reenforce better buying habits. We may still pursue these avenues, and potentially many more in the future.