We recently learned from a college course how much excess food waste contributes to the environment: the excess food waste in the US is almost as much as 37 million cars worth of greenhouse gases. We realized that food banks need this excess food, and rather than restaurant waste going to the trash bin, we realized we could connect the restaurants to the food banks to put that extra food into the mouths of people.
What it does
The Nutrinect web application seamlessly connects businesses such as stores or restaurants with food banks or charities to reduce food waste.
As a non profit organization, a volunteer would register the organization and submit a “dream” food inventory as a CSV to the application. Once they register they can create Donation Requests, in which the charity has to simply upload their organization's current food inventory. The algorithm processes their inventory and then calculates what food they need according to the four basic food groups: protein, dairy, vegetables, and grain, and then it matches the charities to restaurants who have indicated that they can supply food of the needed group.
As a store/restaurant, an employee would register an account as an donor organization and immediately be welcomed to our main portal, where donors can easily share their excess inventory which will be parsed and optimized through our algorithm to pair the excess that goods that a business has with the demands of a charity, all while minimizing environmental waste.
The store/restaurant then gets the matchings that the app made and can deliver the specified amount to the address of the specified charity.
How we built it
We built the frontend using the React.js framework along with the TailwindCSS library. We build the backend using Node.js/Express with the data. We utilized Google Cloud Functions to host a portion of our project on a serverless instance, as we didn’t want to clog up compute power on our backend server. In doing so, we learned how to connect our React App, Express/Node.js backend, and computationally intensive statistical analysis code in different locations, using technologies like Axios, Express, and other HTTP request libraries. For the optimization algorithm, we used Python with its Scipy library and communicated to the backend with Google Cloud server. In order to make sure that restaurants are matched to food banks optimally, we came up with a method that uses a constrained, trust-region based optimization procedure that matches restaurants and food banks based on factors including the nutritional needs of the food bank and the distance from the restaurant to the food bank.
Challenges we ran into
The biggest challenge we ran into was not being able to be in person with each other. In other hackathons we’ve been to, we were often right next to each other, so if one of us had a problem, we could tap someone else’s shoulder and get immediate help. Online, we often had to direct message everyone and wait some time, which elongated the time we spent on problems.
Another challenge we ran into was in integrating the different sections of the project that we had split off into to work on. We split between front end, backend, and algorithm, and once we had finished our parts it was hard to combine them all, with lots of problems popping up.
Accomplishments that we’re proud of
We’re proud that we were able to relatively quickly learn how to use MongoDB as well as Scipy for Python, and build a good looking website that was functional
What we learned
The biggest lesson we learned was about project management -> often a project starts off with an overarching goal, a vision, which we are very excited about. But execution is also extremely important, as ideas themselves don’t change the world. We learned that the biggest challenge in project execution is integrating the different parts that people worked on together in a succinct way. We had split between front end, back end, and the optimization algorithm, and for a lot of our time we had to solve issues in integrating these different parts.
Another lesson we learned is that it is often best to start simple and build a good product that may not have many features at first, but still works, and then build up from there and add more advanced features. We tried creating a more complicated product from the start and that led to a lot of issues when we tried to get a full product working.
What's next for Nutrinect
We are going to expand to all locations in the US and improve our optimization algorithm to be able to handle more restaurants and charities. We hope that eventually we can deploy this app and start contacting restaurants and food banks to get them interested.