Inspiration

Finding the right vehicle in an online marketplace is often frustrating. Users might not know exactly what they want, and may describe their needs vaguely, or may already have constraints in mind and end up with limited results. At the same time, marketplaces need to prioritize their inventory while still delivering relevant, catered results to customers.

What it does

HolyShift connects buyers and sellers through a shared vehicle marketplace. Sellers list vehicles with structured attributes, and buyers search this inventory using natural language or specific constraints. The system evaluates buyer queries against available listings and returns relevant vehicles, ensuring that seller inventory is surfaced and buyer searches always produce results, even when exact matches are not available.

How we built it

We built the backend using Python and FastAPI to support rapid API development and reliable data validation. User queries are processed by a Gemini LLM (via OpenRouter) and converted into structured JSON that extracts explicit search attributes. For semantic search, we use the sentence-transformers library to generate vector embeddings for both user queries and vehicle listings, enabling semantic matching beyond exact keyword filters. A deterministic rule-based evaluation layer then applies structured constraints such as inventory ownership and vehicle attributes to ensure consistent and explainable results. Authentication is handled using Auth0, allowing users to securely sign in as buyers or sellers. Supabase is used as the primary data store for vehicle listings and user-associated records, with Supabase Storage buckets used to manage vehicle images. The frontend is built in React, providing a seamless experience where sellers can create and manage vehicle listings, and buyers can search for vehicles, favorite listings, and view key vehicle attributes and features.

Challenges we ran into

One of the main challenges was deciding where to rely on AI-driven semantic matching versus deterministic rule-based scoring. While semantic search was effective at understanding user intent and identifying comparable vehicles, it was not suitable for evaluating structured attributes such as ownership, mileage, or drivetrain. We addressed this by clearly separating semantic matching from rule-based evaluation to keep results consistent and explainable. Ensuring high-quality semantic matching was another challenge. Vehicle data needed to be carefully normalized and converted into consistent textual representations so that embeddings accurately reflected meaningful differences between listings. We also faced challenges integrating multiple services and coordinating development across the team. Syncing changes across the backend, frontend, and database schema required careful coordination and communication to ensure the team was all on the same page.

Accomplishments that we're proud of

We built a complete, end-to-end recommendation system that combines semantic search with deterministic rule-based evaluation to ensure every search returns meaningful results. The system successfully handles queries, strict constraints, and limited inventory without producing empty result sets. We also integrated authentication, data storage, and image management into a cohesive platform. Sellers can create and manage vehicle listings, while buyers can search, favorite, and explore vehicles through a unified frontend experience.

What we learned

We learned that semantic search is most effective when it is used for intent understanding rather than decision-making. Embeddings are powerful but structured attributes such as ownership, mileage, and drivetrain are better handled through deterministic rules. We also learned the importance of collecting high quality data. Building this project reinforced the value of data consistency. High-quality semantic matching depends heavily on consistent data representations and schemas across the entire system. Finally, we learned that clear system boundaries and well-defined responsibilities lead to more reliable systems, especially when working under tight time constraints and integrating multiple services.

What's next for HolyShift

Next, we plan to expand personalization by incorporating user preferences, saved searches, and interaction history into the recommendation pipeline. This would allow the system to adapt results over time while preserving deterministic ranking behavior. On the search side, we plan to refine semantic matching by incorporating richer vehicle descriptions and improving constraint relaxation strategies to ensure that users queries were met with more precise substitutions. We would also improve this platform with stronger seller tools such as incorporating an analytics dashboard, allowing vehicle owners to view how well their listings are performing.

Built With

Share this project:

Updates