Mens sana in corpore sano
Ideally, we would live in a world where everyone is perfectly knowledgeable about the best way to approach health maintenance and awareness, but sometimes everyone needs a little nudge. People also visit a lot of websites and applications but will lazily go for the first accessible option. So why not make that first option the best option for them, according to each user's personal dietary requirements and fitness level.
What it does
NutriBot is a chatbot application for iOS phones that interacts with the user in a personalized way, keeping track of meal history and dietary requirements. This way, it can come up with the best solutions for any quick questions the user might throw at is, such as "So what should I eat this morning?" or "Can you find me a recipe for pancakes?". What makes our chatbot special is that, for instance, in the latter case, the user no longer has to keep repeating his needs because the bot will already know after sign up that the user is gluten intolerant, so it will immediately return the most appealing gluten-free pancake recipe.
How we built it
We combined our knowledge into making an UI in Swift, using Api.ai to facilitate the user input processing and basically the interaction with the chatbot and the server-side was written using Python and SQLite combined with Flask and hosted with the aid of Microsoft Azure.
Challenges we ran into
There are several factors to take into consideration when making a chatbot, including what APIs to use, what to fit into the short 24-hour run that a hackathon allows you, as we would have liked to have much more functionality, and we might have aimed too high, unrealistically.
Accomplishments that we're proud of
We are very happy that the interaction with the chatbot works smoothly and it provides coherent answers as well as the login process being quite secure.
What we learned
It makes no sense to set unrealistic goals in order to just be disappointed towards the end and frustrated when some extra functionality you added in does not behave the way you expected it to.
Someone else doing your code debugging may be a life saver, so don't hesitate to ask for help when stuck, especially when in a hackathon. Understandably, stack overflow is a trusty friend, but in a room full of talented and knowledgeable people is may be better to call on human interaction in such situations of time constraints.
It is perfectly reasonable and in fact encouraged to meet new people and work with them on a project, because the process of brainstorming for an idea as well as collaborating will prepare you for the real thing out there, you will not be 100% compatible with anyone.
What's next for NutriBot
Naturally, a chatbot to help you with your health and nutrition can come in handy in so many ways, and much more functionality could be added to chatbot, including scraping recipes off food/nutrition websites you frequently visit (alternatively, that are well-reviewed), push notifications and integrate with your fitness applications, such that it knows when you worked out so it can immediately recommend your post-workout meal according to your dietary needs.
Integrated with your calendar, it could also see where you're planning to go and if it is a restaurant it can offer you suggestions of what to eat before even leaving your house, by accessing the restaurants' menu and checking it against your specific data.
Finally, a community might also be built and users can exchange NutriBot learnings if they find their dietary requirements and preferences match withing a certain range.
Loads of other functionality can be added, as we are thinking about the great IoT(we would have liked to integrate NutriBot with household appliances such as Alexa) hence such a simple project can be transformed in something massive, time permitting and necessary skills developed.