Imagine have a foodie-friend in your pocket that knows what you like and what is good at every restaurant. Most services tell you where to eat based on overall popularity. None can make personalized recommendations about what to eat when you get there. Apna Khana can.
What it does
Think about the last time you ordered food at a restaurant. If you didn’t already know what you wanted to eat, you probably did one of two things: 1) asked the server you just met for recommendations; 2) started scouring (Yelp) reviews for hints of what you might like.
We want to add a third option to this unsatisfactory process that is faster, smarter, and more personalized. Our goal is to build a mobile app you can use on any menu at any restaurant that immediately recognizes and recommends dishes based on a database of food relationships and user preferences.
Initially, the app will use location services to confirm a restaurant’s identity, after which users can enter two modes. In interactive menu mode, users can photograph the menu and see recommendations based on their preferences. This interface will also allow users to easily input items they order to further optimize future recommendations. Quick suggestions mode will allow users to browse a restaurant’s menu overlaid with suggestions about what items best match their eating preferences. The key to our application will be an intuitive fun UI and a powerful recommendation engine. With surveyed consumer preferences, user eating behavior, and collaborative filtering, we can build a predictive engine that makes accurate suggestions and only improves with usage.
How we built it
We approached this project on two fronts. We wanted a front-end that is intuitive and fun to use and a powerful backend that can provide personalized food recommendations based on user preferences.
We built our front end mobile app using react-native and expo while leveraging Google Cloud services including the Nearby places API, Optical Character Recognition API. Our backend was built using the Firebase real-time database and a custom collaborative-filtering model trained in the R statistical programming language. Using these services we are able to predict the restaurant our user is dining at, immediately provide personalized recommendations as well as an interactive recommendation in which they can take photos of the menus for detailed information such as personal match scores and overall popularity.
Challenges we ran into
It was our first time developing a real mobile application. Learning to use API calls, async functions, and integrating statistical models with a mobile app was challenging but enjoyable.
Accomplishments that we're proud of
We worked efficiently as a team by dividing and conquering different components of the app. We divided up our tasks so that Jin focused on building the database, Alex built the backend recommendation engine, Eshin and Marissa built the application.
What we learned
We learned the beauty of working as a team and that we can be incredibly productive and efficient when we put our minds together.
What's next for ApnaKhana
We want to expand to major cities and gain a larger network of food preferences for better, personalized recommendations for everyone, anywhere.