When I first was diagnosed with Celiac's disease (severe gluten intolerance) almost 10 years ago, a dietician sat down with my mom and I and explained that gluten is a very sneaky ingredient - it can be found in over 100 different forms, from malted barley to couscous to bulgur. She gave my mom a little dictionary and told her that if she had any doubts about an ingredient, she should look it up and double check to make sure it was okay. Instantly, grocery shopping became a very tedious process of carefully reading lists upon lists upon lists of ingredients. And when I went to a friends' house, it was not uncommon for my mom to send me with gluten-free pasta in order to avoid the panicked phone call that inevitably came when their parents realized they had to figure out whether they had something gluten-free lying around. So, this weekend we set out to find a solution for people who are in the process of transitioning to a gluten-free lifestyle, as well as an easy way for people unfamiliar with the disease to be able to easily find a safe dinner solution.
What it does
The app allows the user to take a picture of the list of ingredients on the packaging of any food item they wish. Then, it sends this image out to an OCR API to detect and extract the text in the image. This raw data gets sent to our custom Classification API, where first we use express.js to receive the data and communicate it with node.js. Then, we send the data out to an autocorrect API to catch any errors that the OCR might've made. At this point the app pulls data regarding the 'safety' of different ingredients from a Redis database. Finally, it parses the ingredients data, determining which one are 'safe', which are 'unsafe', and which are 'risky', before sending all this data back to the app to be displayed to the user.
How we built it
We built the back end using Node.js, express.js and Redis; the front end was built using Swift and Xcode. We also used the Google Cloud Vision API for its OCR capabilities, as well as using Microsoft Cognitive Services Bing Spellcheck API.
Challenges we ran into
On the back end, the biggest issue we ran into was trying to implement the use of a spellcheck API because the way our code was structured involved trying to deal with return values from Promises; we had to restructure our whole code in order to get around this issue. In terms of design, the biggest challenge was figuring out what was useful and what was not, as well as the best way to represent the data gathered and how to communicate it with the audience. Finally, on the mobile end the biggest challenge was trying to figure out how to integrate API's into the project.
Accomplishments that we're proud of
This project was everyone's first time building and deploying a mobile app, so we were all super stoked that we were able to bring our vision to life as effectively as we did.
What we learned
Having a well-balanced team is an incredible asset when working on such a comprehensive project. Having a designer, a mobile developer, and two back end developers ensured that we had all our bases covered and that there wasn't one aspect of our product that was weaker than the rest.
What's next for NutriFence
We want to expand our app to include support for other allergies (i.e. lactose intolerance, peanut allergies, etc). As well, we wanted to build an Android version of the app.