# Vibe Match: Building AI-Powered Vibe-Based Search

While many platforms allow you to filter profiles by structured attributes - like hair style, eye color, or hair color - I noticed a big opportunity: what if we could also search by *vibe*? Things like *“loves dancing”*, *“who loves dogs”*, or *“bookworm who travels”*.

Traditional filter systems aren’t built for this. So I built a concept demo called **Vibe Match**, designed to showcase how AI and vector search can make profile discovery more human and intuitive.

In this post, I’ll walk you through how it works.

%[https://youtu.be/rP8v59olGQA] 

## **The Great Wall of Filters**

Most platforms rely on rigid filters. The more filters you add, the more complex the UI and query logic becomes. You quickly end up with a **Great Wall of Filters**, and even then, you can’t search for intangible, unstructured traits like personal interests or personality quirks.

That’s where vibe-based search comes in.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1747502994948/2a63399e-67f3-4e92-b3bd-a07d6fbb6786.png align="center")

## High-Level Solution

The idea is simple:

* Keep structured filters for things like eye color or hair style.
    
* Handle unstructured vibe preferences using **vector search**.
    
* Use an AI model to intelligently parse the user’s query and split it into structured filters and vibe-based search terms.
    

## How Vibe Match Works?

#### 1\. Data Preparation

* Donor profiles have both structured attributes (e.g. hair color) and unstructured bios/interests.
    
* I preprocess the unstructured text (bios, hobbies, passions, goals, strengths) and convert them into **vector embeddings**.
    
* These embeddings are stored in a **vector database**. For this demo, I used **Datastax Astra**, but this would work with Pinecone, Weaviate, or others.
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1747503518182/c6a19773-8079-4508-b116-33dfa8b84126.png align="center")
    

#### 2\. User Query Handling

When a user enters a query like:

> *“donors who love dancing and have brown hair”*

* ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1747504437597/9a9f7044-bee2-4602-91cf-3674d4900286.png align="center")
    
    The query is sent to the backend server.
    
* It’s processed by an **LLM (via OpenAI’s API) using structured output parsing**.
    

I defined a **Zod schema** to tell the model what structured fields to extract (like eye color, hair type etc.).  
Currently, I’ve provided support for the following filters, we can extend it to support more.

| hair\_type | hair\_color | hair\_texture | eye\_color |
| --- | --- | --- | --- |
| dimples | siblings | dominant\_hand | freckles |
| marital\_status | complexion | education\_level | jewish\_ancestory |
| logical\_creative | serious\_silly | introvert\_extrovert | allergies |
| dental\_work | egg\_retrieval | vision\_quality | diet |
| mathematical\_ability | scientific\_ability | singing\_ability |  |

* The LLM returns a structured JSON with:
    
    * Detected filters.
        

**Example Response:**

```json
{
  "filters": {
    "hair_color": "brown"
  },
  "vibeQuery": "donors who love dancing"
}
```

#### 2\. Vector Search + Filtered Results

* The `vibeQuery` is converted into a vector embedding.
    
* I run a **Vector search**:
    
    * Apply the structured filters to narrow down profiles.
        
    * Use the vibe query embedding to find the most similar donor profiles based on vibe.
        

This combo delivers results that are both relevant and intuitive with a confidence score.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1747504499172/63b75d20-9a4b-485d-816f-f0cf9f04b8b4.png align="center")

We can see that these profiles do match our vibe search! She is a dancer and has brown hair.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1747504875127/07501120-c5f8-4fde-af77-93c0f651f65d.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1747504899826/a71a14a6-ae76-423d-9e0c-847d243b6111.png align="center")

#### Similar Donor Suggestions

Each donor profile already has its own vector embedding.  
When a user views a donor profile:

* I run a **similarity search using that profile’s embedding**.
    
* The system suggests other donors with a similar vibe, not just those matching filters.
    

This enhances discoverability and creates a more organic, exploratory experience.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1747504991400/2caac6bb-2086-4478-9d6f-b7963b3da45d.png align="center")

### **Final Thoughts**

This was a fun concept build to explore how AI and vector search can modernize matching experiences. While this demo was built independently for **Cofertility** as a prototype, I believe this kind of vibe-based discovery can elevate many industries — from fertility tech to dating apps to talent marketplaces.  
  
👉 **Source Code:** [https://github.com/IamDushu/Cofertility-AI](https://github.com/IamDushu/Cofertility-AI)

[  
](#)💬 **I’d love to hear your experience trying it out!**  
If you have feedback, thoughts, or just want to say hi, feel free to reach out at [**hey.dushyanth@gmail.com**](mailto:hey.dushyanth@gmail.com)
