Yelp Client ID; '6V2L2db51mRgcfi_mx7iEA'

Kelp - Turn a vibe into a night out

Inspiration

You know that feeling when you're trying to plan a night out and you end up with 47 browser tabs open, three different "best restaurants" lists bookmarked, and you're still not sure where to actually go? Yeah, that was me last month trying to plan a birthday dinner in Lagos.

I realized the problem isn't finding information about places — Yelp has tons of that. The problem is that nobody wants to be a project manager for their own fun. We don't want lists, we want plans. We don't want to research, we want someone to just tell us: "Go here first, then here, then end your night here — trust me, it'll be perfect."

When I saw Yelp's AI API could handle conversational, multi-turn planning, something clicked. What if we could just describe a vibe and have AI design the whole flow for us?

What it does

Kelp turns vague moods into concrete, bookable micro-itineraries using Yelp's AI API. You tell it something like "cozy first date, not too loud, cocktails + dessert, under $60 total" and it instantly designs a 2-4 stop flow with real Yelp businesses, complete with:

  • Why each stop makes sense for your specific request
  • Timing estimates between locations
  • Full Yelp data (ratings, photos, price levels, reviews)
  • The ability to refine conversationally ("make it fancier" or "swap this stop for something with live music")

You can edit individual stops, reorder them, adjust the whole vibe with one button click, and even start restaurant reservations through Yelp's booking system. When you're done, you get a shareable link so everyone's on the same page.

How we built it

Frontend:

  • Next.js 15 with App Router for the core framework
  • TypeScript for type safety (especially important when handling AI responses)
  • TailwindCSS for styling and responsive design
  • Framer Motion for the landing page animations and smooth transitions
  • shadcn/ui for accessible UI primitives

Backend:

  • Next.js API routes as a thin proxy layer to keep API keys secure
  • Yelp AI API (v2_ai_chat) for conversational flow generation
  • Yelp Places API for fetching detailed business information
  • Structured prompt engineering to get consistent JSON responses from the AI

Infrastructure:

  • Deployed on Vercel for serverless edge functions and instant previews
  • Mock authentication using localStorage (UUIDs for guest sessions)
  • In-memory flow storage for the hackathon (would use Supabase or PlanetScale for production)

The core challenge was teaching the AI to think in "flows" rather than "lists." I spent a lot of time crafting system prompts that would make it understand the difference between suggesting random restaurants and designing a cohesive evening with natural progression.

Challenges we ran into

Getting structured data from conversational AI: This was harder than I expected. The Yelp AI API is amazing at understanding natural language, but getting it to reliably return JSON in the exact format I needed took a lot of prompt iteration. I had to be very explicit about the structure I wanted while still letting it be conversational with users.

Maintaining context across modifications: When a user says "make it cheaper," the AI needs to remember the entire previous flow, understand which parts to keep, and what to change. Managing that conversation state and making sure updates felt instant (not like starting over) required careful handling of the chat history.

Making animations feel professional, not gimmicky: The landing page animations needed to grab attention without being distracting. Finding that balance between "wow" and "I can actually focus on what this does" took multiple iterations and a lot of tweaking timing curves in Framer Motion.

Geolocation edge cases: Handling when users deny location permissions, when Yelp doesn't have enough data for a specific area, or when someone enters a vague location like "downtown" — all of these needed graceful fallbacks.

Accomplishments that we're proud of

The conversational refinement actually works. When you tell Kelp to "make it more romantic" or "I need something kid-friendly," it genuinely understands and adjusts the flow intelligently. That moment when the cards smoothly animate out and new ones slide in with better suggestions — that's the magic I was hoping for.

The UX feels effortless. Despite all the complexity under the hood (AI orchestration, multi-turn conversations, real-time Yelp data), using Kelp feels simple. You type a vibe, you get a plan. That simplicity was really hard to achieve.

It solves a real problem I've personally experienced dozens of times. This isn't a solution looking for a problem — this is something I genuinely want to use every time I'm planning to go out.

What we learned

Prompt engineering is an art form. Getting the AI to consistently understand nuanced requests like "swap this stop but keep the overall vibe" required way more iteration than I expected. Small changes in wording would completely change the output quality.

Conversational AI isn't just about single questions and answers. The real power comes from multi-turn conversations with context. Learning how to structure those conversations, when to introduce new information, and how to gracefully handle ambiguity was eye-opening.

Motion design matters more than I thought. The difference between a good animation and a great one is like 200 milliseconds and an easing curve. But that difference is what makes something feel polished vs. janky.

Real-world constraints are hard. Handling cases where Yelp doesn't have data, or a user is in a small town with limited options, or someone asks for something impossible ("5-star Michelin dining for $10") — building for edge cases taught me a lot about product thinking.

What's next for Kelp

Smarter location handling: Right now Kelp works best when you give it a specific neighborhood. I want to add intelligent "area discovery" where it can suggest different neighborhoods based on your vibe and automatically adjust search radius.

Group planning mode: Multiple people could collaborate on a flow, vote on stops, add dietary restrictions, and see live updates as the AI adjusts for everyone's preferences.

Time-based optimization: Factor in real-time data like current wait times, traffic, sunset times for rooftop bars, happy hour windows, and dynamically reorder stops to hit everything at the perfect moment.

Memory across sessions: "Plan something like that date we did in Lekki last month, but in Victoria Island this time" — letting Kelp remember past flows and learn your preferences over time.

Integration with calendars and rideshare: One-tap to add the whole flow to Google Calendar with travel time blocked out, or seamlessly hand off to Uber/Bolt between stops.

Expansion beyond nightlife: Morning routines (coffee shop + gym + breakfast spot), tourist itineraries (3 must-see spots in 4 hours), work breaks (lunch + walk + coffee run), solo exploration days.

The vision is to make Kelp the go-to tool for anyone who wants to go out but doesn't want to spend an hour planning it. Because life's too short for 47 browser tabs.

Built With

  • 15
  • ai
  • ap
  • api
  • framer
  • lovableai
  • motion*
  • next.js
  • places
  • react
  • shadon/ui
  • tailwindcss
  • typescript
  • ui
  • yelp
  • yelpaiapi
  • yelpapi
Share this project:

Updates