Our initial inspiration was the realization that we are more likely to listen to our friends' food recommendations than necessarily the review score of a restaurant on Yelp or Google. For example, if a restaurant scored a three on these platforms, but one of your friends swears by the restaurant, you are still likely to at least try it out.
What it does
This inspired us to build a social media platform that takes concepts from food blogging and this idea that a friends food recommendations matter to create an app that provides an interface to share your food experiences and influence what is recommended to your friends. We have two major features, the ability to share reviews and pictures and a customized recommender system that takes the degree of friendship and the friends review of a restaurant into account in addition to more traditional features such as how much you like a certain cuisine.
How I built it
We utilized react-native because we believe our idea makes more sense as an app and if we ever wanted to port it to a webpage, we have the option to. For authentication and data storage, we utilized firebase for features such as google login, storing post history, and storing your friends. For exploring your recommendations and finding new places, we utilized Google Maps API to create an in-app map to find restaurants by name. The back end is serviced through google cloud functions this runs the recommender which computes a 50 dimensional representing the user that is then used along with vectors representing friends to compute recommended restaurants. The recommender system is built on a Collaborative filtering model that allows us to use a feature sparse yelp dataset and still derive relevant embeddings between users and restaurants. This model runs on tensorflow and was trained on the yelp user rating dataset.
Challenges I ran into
Front End: Learning a new language for our members and finding documentation for every feature we wanted to implement were the two largest. Getting Firebase and Google Maps API working at first was difficult, but it became substantially easier after setting it up.
Back End: Deciding on a model and choosing a dataset were two key challenging decisions. The dataset was not exactly feature rich and often binary which would make it difficult to generalize well. In addition many models require retraining when a new user is added. Constraints of google functionals were also problematic as the model would become too large to fit size quota but saving and compressing weight values helped us meet the threshold. It become a very repetitive and tedious process checking editing the structure of our program to meet the requirements of the Google Cloud module.
Accomplishments that I'm proud of
What I learned
What's next for Potluck
We might potentially see this as a business idea moving forward, but at the moment we are satisfied with what we were able to accomplish in such a short period of time.