A person’s health is their most valuable asset and a big part of that is determined by what they consume. However, it is often a hassle and confusing to look up the nutritional facts of every grocery you buy. As young adults, cognizant of our health, we wanted to find an easy way to get relevant nutritional facts about our grocery shopping trips, without having to look everything up individually. That is why we designed NutritionIQ, to use machine learning to extract and present in a simple fashion, the nutritional data of every grocery item you buy from a single snapshot of your receipt.
What it does
NutritionIQ uses Google Cloud Platform tools to get smart-data about items on a grocery receipt. No matter how long the grocery list, precise nutritional details are displayed for every food item in a clean and simple order to help us make smart, conscious decisions about our daily nutrition.
How I built it
To build it, we used Expo.io (React-Native) to offer cross-platform mobile support. We used the Google Cloud Platform tools for our machine learning and part of our backend, and used Heroku with Node.js for the rest of our backend. NutritionIX API was used for up-to-date nutritional info.
Challenges I ran into
Some challenges we faced included:
- Grocery receipts were not standardized among grocery stores so we needed a way to parse the receipts in a way so that results were still consistent among different sellers. Also, a lot of items are abbreviated in grocery receipts so searching up each exact item proved to be a difficult challenge.
- Not everyone on the team was familiar with the stack we used, so it was difficult learning a new language/framework while trying to work with it to use the APIs.
- The data we received from the API's we used were not always consistent due to the nature of our product. We had to come up with algorithms and implementations that were robust enough to handle errors due to inconsistencies from certain API calls. In addition, our NutritionIX API only allowed for 50 calls per API code and we needed to refresh and enter a new code into our program after every 50 calls.
- We had to account for edge cases where shoppers buy both edible and nonedible items, looking up and returning nutritional data of only the edible items.
- Last but not least, we also faced many problems with the asynchronous nature of Node.js. Although this allowed us to reduce our runtime, it also caused many problems when we were calling functions that were dependent on the results of previous functions. Because of this, we needed to use recursion instead of loops to solve many of our problems.
Accomplishments that I'm proud of
We are proud that we integrated every part of what we worked on into one big, working product. This is the first time any of us designed and created a fully functional mobile application. We worked with technologies that were not familiar to us and faced many hurdles, but through teamwork and reading through docs and examples, we were able to learn what we needed to succeed.
What I learned
We learned many new skills from using the Google Cloud Platform to designing and developing a mobile application. In addition, we were also all unfamiliar or new to Node.js and its asynchronous nature and learning to code in it for our program was a very challenging but rewarding experience.
What's next for NutritionIQ
With stored information of every grocery products bought by the user, we want to implement a smart recipe recommendation for healthy dishes that can be made with the ingredients the user has. We also hope to extend our app to be a health-tracker with users' food and nutritional data stored on the server. We could also recommend what foods to buy in order to meet the user’s nutritional requirements. We also want to scale up to our accessibility to return nutritional data for the receipts of every grocery store. We hope to further improve our smart text recognition technology to improve the accuracy of our results. With more users, and a larger database, we can also determine the most popular grocery products at certain stores and locations and also the most common dish made with that product, allowing us to make even smarter recommendations.