Inspiration

We've all been there: standing on a city street, phone in hand, endlessly scrolling through maps and review apps, only to end up at the same familiar coffee shop. The inspiration for LocalVibe came directly from this feeling of "analysis paralysis." We realized that modern discovery apps are just directories—they give you lists, not experiences. We wanted to build something that felt less like a search engine and more like a recommendation from a friend who knows the city's hidden gems.

What it does

LocalVibe is an intelligent experience generator that transforms how people explore their cities. Instead of showing a generic list of restaurants or shops, a user simply selects a "vibe" that matches their mood—like "Cozy & Quiet," "Artsy," or "Hidden Gems." Our AI then instantly curates a personalized, themed "Vibe Trail," which is a walkable route of 3-4 unique local spots. To make the experience truly special, each trail comes with a compelling, AI-generated narrative that turns a simple outing into a memorable story.

How we built it

LocalVibe is a full-stack application built on a modern, scalable architecture.

Frontend: We used Next.js 14 with TypeScript and React to build a fast, responsive, and type-safe user interface. Styling was handled with Tailwind CSS for rapid development, and the interactive maps were brought to life using the Mapbox GL API.

Backend: The core of our application is a high-performance FastAPI (Python) server. This server orchestrates our dual-AI system.

Dual-AI System:

The Architect (In-house Model): A custom scoring algorithm built in Python analyzes data from the Google Places API to find relevant points of interest. It scores them based on vibe match, quality, and walkability to create the logical route.

The Storyteller (Gemini API): The curated list of spots is then passed to the Google Gemini API, which generates the creative trail name and engaging narrative that gives each trail its unique personality.

Database & Auth: We used Supabase for user authentication and its underlying PostgreSQL database to store user data and saved trails.

Challenges we ran into

We faced two primary challenges. First, the integration of Mapbox was more complex than anticipated. Moving beyond simple markers to dynamically rendering and fitting optimized walking routes between multiple, AI-selected points required careful handling of geospatial data and asynchronous API calls on the frontend.

Our second major hurdle was data accuracy. Sourcing reliable data to match abstract concepts like a "cozy" or "artsy" vibe to physical locations is inherently difficult. We had to develop a multi-factor scoring algorithm that balanced Google's place categories with user ratings and review counts to ensure the recommendations were not only relevant but also high-quality.

Accomplishments that we're proud of

We are incredibly proud of our dual-AI system. It's one thing to call an API, but it's another to architect a system where one model handles the analytical, logistical task of route planning while another handles the creative, narrative task. Seeing this system work in harmony to produce a result that is both logical and delightful was a huge accomplishment. We're also proud of the clean, intuitive, and genuinely user-friendly interface that makes the complex backend feel simple and magical to the user.

What we learned

This project was a deep dive into the practicalities of building AI-powered, location-based services. We learned that the quality of an AI product is fundamentally tied to the quality of its input data; garbage in, garbage out. This reinforced the need for robust data validation and clever heuristics. We also learned a tremendous amount about prompt engineering for the Gemini API. A slight change in the prompt's structure could be the difference between a generic description and a captivating story.

What's next for LocalVibe

The future of LocalVibe is focused on creating an even richer and more reliable discovery engine. Our immediate next step is to expand our data sources by integrating with the TripAdvisor and Yelp APIs. This will allow us to cross-reference data, improve the accuracy of our vibe-matching algorithm, and provide users with a more comprehensive view of each location. We also plan to build a feedback loop where users can rate their trails, providing valuable data to train a true machine learning model for even more personalized recommendations.

Built With

Share this project:

Updates