We started off the hackathon weekend by taking a look at NCR's APIs available. We were particularly interested in NCR's Site APIs and Silver POS APIs, which is able to give us data such as nearby restaurants, restaurant items, etc. We also came to this hackathon with the intent of incorporating some aspect of Machine Learning into our project.
What it does
I'm Hungry is an app which primarily recommends suitable restaurants for users in their proximity. We trained a model using collaborative filtering built with neural networks that allowed us to make predictions of ratings based on all users' past reviews. Using this model, we can make accurate predictions about the user's preferences for restaurants. After receiving a recommendation, a user is then able to easily make reservations at the specified restaurant in his/her proximity.
How we built it
The web frontend was built using ReactJS. It is hosted on Google Cloud App Engine with a custom domain.com domain. Collaborative filtering models were built with Fast.ai. We decided to host our model on an online RESTful API hosted on Microsoft Azure running on Flask using Python.
Challenges we ran into
We wanted to base our model on features obtained from user written reviews for the various restaurants. However, NCR's Site APIs only gave us a small sample of these restaurants, we thought that it would not be as interesting to run our model just on those few samples. Upon consulting one of the NCR staff, we were told that we could base our data on what would be obtained from NCR's APIs, and not necessarily have to use them. With this, we decided to use data from yelp.com which had tons of restaurant and review data for us to work on.
Another challenge was the fact that all of us were not familiar with collaborative filtering (one reason why we wanted to involve Machine Learning in our project was to learn more about it!). We spent many hours just reading articles and trying to figure out how it works before we were even able to start coding.
Accomplishments that we're proud of
Training and implementing the model was not an easy task for us. We spent many hours just trying to configure the code and getting it to run and train properly. Furthermore with the large dataset, it took some time to clean and process the data before we can even start training the model. However, we were still able to complete it in the end and we are proud that we were able to learn about a new technology and apply it to our very own
What's next for I'm Hungry!!
I'm Hungry is very extensible. Instead of just a recommender, we can add more features such as allowing users to make a reservation directly from the app, or even as far as to order food and make payment when at the restaurant with NCR's APIs.