When looking for a restaurant, current search methods are based on filters of factors like cost, rating, cuisine, etc. and limited to those.

Natalia wants to find a zany and artistic place somewhere in the city for a raucous Friday night with her friends. But she doesn’t know how to search in google map, and it doesn’t give her a satisfying result to match her unique needs

Pedro, recently broken up with his boyfriend and feeling a bit lonely, wants to go to a low-key, chill, but friendly environment where he can pour his heart out to the bartender.

WHERE TO EAT is rather a question of mood than a question of factors.

What if restaurant searches could take into account a user’s moods
or any other specific preferences using machine learning?

MOODSAVOR is an app that can take in whatever users’ needs in mind,
helping them find the closest matching restaurants in Barcelona.


Basic concept:
-GPT as data labeler (zero-shot multi-class prediction): Bringing restaurant reviews and user moods into the same space.
-KNN as a methodology to retrieve the restaurants that best match the user’s mood.



How to utilize GPT as data labeler? Through Vibes


Ignore all previous instructions. Your task is now to help label data. You must respond with a list of -1, 0, and 1, for example [0, 1, 0, -1 …1] that is the length of the list of vibes. You will receive a restaurant name, and three reviews from Google Maps. Based on your analysis of the reviews, you must consider each vibe in the list of vibes and assign it a score, 1 if this vibe is applicable to the restaurant, 0 if it is not relevant or there is not enough information to decide, and -1 if this vibe is especially untrue of this restaurant. 

Restaurant name: [ … ]
Top 3 review previews: [ … ]
List of vibes: [ … ]
Vector of values for each vibe: [ … ]

[0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


Candy Darling

Review 1

Interesting place with good drinks. I would say a bit too much hipster for my taste, but sill good to chill if you are in good company. They even have a food, I didn’t try but it’s Spain so I believe it’s tasty 😉 …

Review 2

This is probably my favorite queer bar in the world. The vibe is very low key and welcoming, it’s beautifully lit, with interesting decoration and comfy couches/seats. The music is always on point but it’s truly the staff that makes this …

Review 3
Visited this place twice during my stay in Barcelona because I loved it so much. A safe and inclusive queer space, with friendly staff and good drinks.


While results look meaningful when analyzed in isolation,
clustering and visualizing the resulting dataset shows that GPT introduces significant biases in the data.

  • Enlarge dataset with more examples and more review text
  • Identify features that aren’t informative (such as “cozy” in the example) and either improve classification for this feature or remove it from the vectors


  • Vector accuracy  improvement

PROBLEM:  Right now “SLEEK” and “CHIC” are orthogonal, which means there is no information shared between them. If we have restaurant that is SLEEK (but not labeled as CHIC), and the user is looking for something SLEEK the CHIC label should count for something.
SOLUTION: This can be addressed by using GPT embedding vectors for each vibe

PROBLEM: Unreliable data labeling
SOLUTION: This can be addressed by nudging users to submit feedback (“was this place ‘Awesome’?”)

  • App function improvementInput: Image + test prompt