🎯 Yelp AI Vibe Matcher - Hackathon Submission

💡 Inspiration

We were inspired by the challenge of finding the right place, not just any place. Traditional search focuses on what you're looking for, but often what matters most is how you want to feel. Whether you're a student seeking a quiet study spot, a remote worker needing focus-friendly wifi, or someone looking for a cozy date night venue, the atmosphere matters as much as the category. We wanted to create a search experience that understands and prioritizes vibe, making local discovery more intuitive and emotionally aware.

✨ What it does

Yelp AI Vibe Matcher transforms local business search from keyword-based to atmosphere-based discovery. Users adjust three intuitive sliders—Noise level (quiet to lively), Cozy factor (minimal to ultra-cozy), and Focus level (casual to work-friendly)—to express their desired vibe. The app converts these preferences into natural language queries, leverages Yelp's AI API to find matching businesses, and scores each result using intelligent analysis of reviews, business attributes, and categories. Every business card displays a personalized "vibe match" percentage showing how well it aligns with your atmospheric preferences, with breakdowns for each dimension.

🛠️ How we built it

We built this with Next.js, React, and TypeScript. The core innovation is our vibe scoring engine in lib/yelp.ts, which:

  1. Converts slider values to natural language using buildVibeQuery(), preserving user intent while augmenting with vibe keywords
  2. Calls Yelp's AI Chat API to retrieve contextually relevant businesses with review snippets and summaries
  3. Analyzes each business using calculateVibeScores(), combining keyword-weighted text analysis (40%) with structured attribute data (60%) for precision
  4. Matches against preferences using inverse distance scoring, where perfect alignment = 100%

We used Tailwind CSS for Yelp brand-consistent styling and implemented geolocation for automatic nearby search. The entire data pipeline runs through Yelp's AI API—no other data sources needed.

🚧 Challenges we ran into

Nested API responses: Yelp AI's response structure (entities[].businesses[]) required careful extraction, and image URLs appeared in multiple possible locations (image_url vs contextual_info.photos[0].original_url).

Scoring algorithm calibration: Balancing text analysis vs. structured attributes was tricky. Pure keyword matching was noisy; pure attributes were sparse. We settled on a 40/60 blend after testing with diverse business types (bars, libraries, cafes).

Semantic ambiguity: "Quiet" has inverted meaning—low noise is quiet, but we needed 0-100 scores. We maintained internal consistency by treating higher scores as "more lively" while displaying user-friendly labels.

Review snippet cleanup: AI responses included [[HIGHLIGHT]] markers that needed stripping before display, which we discovered during UI testing.

🏆 Accomplishments that we're proud of

  • Novel search paradigm: We created something genuinely different—emotional/atmospheric search doesn't exist in current Yelp or competitor offerings
  • Sophisticated scoring: Our multi-factor vibe analysis combines NLP, structured data, and weighted blending for accurate matches
  • Production-ready UI: Clean, accessible, Yelp brand-consistent design with smooth interactions and responsive layout
  • Real AI integration: We didn't just call an API—we built intelligent query construction and post-processing that makes the AI contextually aware
  • Solving real problems: This addresses accessibility needs for students, remote workers, neurodivergent users, and anyone who values atmosphere over category

📚 What we learned

  • Natural language is powerful: Converting slider values to contextual queries (e.g., "quiet, cozy, warm ambiance") yields far better AI results than rigid parameters
  • Structured + unstructured = better: Combining review text analysis with business attributes gives more reliable scoring than either alone
  • User intent preservation: Augmenting rather than replacing user queries maintains search relevance while adding vibe intelligence
  • Next.js App Router patterns: Working with server components, API routes, and the React Compiler taught us modern full-stack architecture
  • API design matters: Yelp's AI API structure (entities, contextual info, chat continuity) enabled conversational search patterns we hadn't initially considered

🚀 What's next for Yelp AI Vibe Matcher

Short-term enhancements:

  • Saved vibe profiles: Let users save preferred atmosphere settings ("Work Mode," "Date Night," "Social Hour")
  • Time-aware scoring: Factor in time of day—cafes are quieter in mornings, bars get louder at night
  • More dimensions: Add "lighting" (bright/dim), "music style," "crowd density"
  • Vibe filters: Allow users to set minimum thresholds ("Only show 70%+ focus matches")

Long-term vision:

  • Community vibe tagging: Let users vote on vibe accuracy to crowdsource better data
  • Predictive vibe: Use historical check-ins to predict "right now" atmosphere vs. general scores
  • Accessibility features: Screen reader optimization, sensory sensitivity profiles for neurodivergent users
  • Business insights: Show business owners how their vibe profile attracts specific customer segments
  • Integration: Partner with Yelp to A/B test as an experimental search mode, gathering usage data to refine the algorithm

This could fundamentally change how people discover local businesses—not by what they serve, but by how they make you feel. 💙

Built With

Share this project:

Updates