File size: 2,756 Bytes
25c9790
 
 
 
 
 
 
 
 
 
 
ca0e6d5
16281b5
 
 
 
d40c327
16281b5
3e9fcf9
16281b5
 
 
 
 
 
 
 
 
 
d40c327
16281b5
 
 
 
 
 
 
 
 
 
 
 
 
 
d40c327
 
 
 
 
 
 
16281b5
 
 
6bd637b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
---
title: VEN - AI Restaurant Matchmaker
emoji: πŸ”
colorFrom: blue
colorTo: indigo
sdk: gradio
sdk_version: 4.19.2
app_file: app.py
pinned: false
license: mit
---

# πŸ” VEN: Semantic Restaurant Discovery System

**VEN** is an AI-powered recommendation engine designed to find the perfect restaurant in Tel Aviv based on user context, vibe, and specific preferences.

Unlike traditional filters (e.g., "Italian", "Thai"), VEN uses **Semantic Search** and **Persona Matching** to understand the *intent* behind the search (e.g., "A romantic quiet place for a date" vs. "Lively place for drinks with friends").


## πŸš€ Key Features

* **Semantic Search:** Uses `Sentence-Transformers` (NLP) to convert user preferences into vector embeddings.
* **Persona Matching:** Instead of simple keyword matching, the system identifies the user's "Persona" (Reviewer Type) based on their inputs and finds restaurants loved by similar people.
* **Smart Filtering:** Filters by Budget, Diet, Company, Occasion, and Noise Level.
* **One-Click Quick Starters:** Pre-configured scenarios for instant recommendations.
* **Dark Mode UI:** A sleek, modern user interface built with Gradio.

## πŸ› οΈ Tech Stack

* **Python**
* **Gradio:** For the web interface.
* **Sentence-Transformers (`all-mpnet-base-v2`):** For generating high-quality text embeddings.
* **Scikit-Learn:** For calculating Cosine Similarity between user input and reviewer profiles.
* **Pandas & NumPy:** For data manipulation and vector operations.


## 🧠 How It Works

1.  **Input:** The user selects their preferences (Budget, Diet, Company, Occasion, Atmosphere).
2.  **Vectorization:** The system creates a textual description of the user's desire and converts it into a mathematical vector using the `all-mpnet-base-v2` model.
3.  **Persona Clustering:** The system compares the user's vector against pre-calculated "Taste Profiles" (Personas) derived from the dataset.
4.  **Similarity Search:** It calculates the **Cosine Similarity** to find the closest match.
5.  **Ranking:** The system ranks restaurants within that Persona cluster and returns the highest-rated match with a relevant review.

## πŸ–ΌοΈ More Screenshots

| Recommendation Card | Filter Settings | Search Results |
|:-------------------:|:---------------:|:--------------:|
| ![Card](WhatsApp%20Image%202026-01-19%20at%2022.28.46.jpeg) | ![Filters](WhatsApp%20Image%202026-01-19%20at%2022.28.34%20(1).jpeg) | ![Results](WhatsApp%20Image%202026-01-19%20at%2022.28.22%20(1).jpeg) | ![Main Interface](WhatsApp%20Image%202026-01-19%20at%2022.28.58.jpeg)
![Main Interface](WhatsApp%20Image%202026-01-19%20at%2022.28.58.jpeg)

## πŸ‘₯ Authors

* **Gal** - Data Scientist & Developer
* **Matan** - Data Scientist & Developer