Inspiration

I was tired of the "I don't care, you pick" loop. Every time I tried to organize dinner with friends, the group chat would devolve into endless links, lost context, and decision paralysis. I realized that while local search is a solitary activity, decision-making is social. We didn't need another search bar; we needed a mediator. This inspired me to build Converge: a platform where AI doesn't just fetch data but actively facilitates the decision.

What it does

Converge is a real-time collaborative decision platform. It functions as a group chat where an AI agent named "Connie" is a first-class participant.

Active Listening: I chat naturally (e.g., "Let's get sushi near downtown"). Connie listens to the intent, not just keywords.

Generative UI: Instead of replying with a wall of text, Connie proactively renders an interactive Proposal Card directly into the chat stream.

Real-Time Voting: Everyone in the chat can vote on the proposed options instantly. The UI updates live across all screens.

Decisive Action: When I ask "Who won?", Connie checks the database, tallies the votes, and declares the winner with the address and final details.

How I built it

I architected Converge as a "Generative UI" application, ensuring the AI controls the interface, not just the text.

The Brain: I used Next.js 16 and the Vercel AI SDK to orchestrate the LLM. I defined custom tools (findLocalBusinesses, showProposalCard, getVotingResults) that allow the AI to interact with the outside world.

The Data: I integrated the Yelp AI API (v2) as the single source of truth. I leverage its advanced reasoning capabilities to extract rich summaries and "highlight snippets" (e.g., "Best vegan pizza") to populate the cards.

The Sync: I used Supabase Realtime to synchronize chat messages and voting state. When one user clicks "Vote," the database updates, and the event is broadcast to all connected clients instantly.

The Look: I styled the application with Tailwind CSS and Shadcn/UI to ensure a polished, modern aesthetic that feels like a native app.

Challenges I ran into

Yelp API Precision: The Yelp AI API v2 is powerful but sensitive to location context. Initially, it returned zero results for generic queries like "Austin." I solved this by implementing a robust coordinate fallback system in the backend to ensure the AI always has precise geospatial context.

State Synchronization: Bridging the gap between the AI's static generated message and the dynamic, real-time database state for voting was difficult. I resolved this by injecting unique session IDs into the AI's tool payload, allowing the client-side component to hydrate itself with live data.

Real-Time Jitter: When testing with multiple windows, I noticed vote counts jumping erratically. I fixed this by filtering out "echo" events in the Supabase subscription, ensuring local optimistic updates didn't conflict with incoming server events.

Accomplishments that I'm proud of

True Generative UI: I successfully moved beyond the chatbot paradigm. Seeing the AI drop a fully interactive, vote-able component into the chat for the first time felt like magic.

Yelp Integration Depth: I didn't just use Yelp for names and stars. I parsed their specific AI-generated summaries and review snippets to give users qualitative reasons to vote, satisfying the "Technological Implementation" criteria.

Latency Masking: By using streaming text for the AI's reasoning while asynchronously fetching Yelp data, I made the application feel instant and responsive.

What I learned

I learned that the future of AI isn't just about generating text; it's about orchestration. The real power of LLMs is unlocked when they can act as a router between user intent (chat) and UI execution (components). I also deepened my understanding of PostgreSQL RLS policies and real-time WebSocket architecture.

What's next for Converge

Native Mobile App: I plan to port the frontend to React Native (Expo) to take advantage of device location services and haptics.

Seamless Booking: I want to integrate Yelp's reservation endpoints so Connie can book the table once the vote is finalized.

Smart Itineraries: Expanding beyond single decisions to full multi-stop evening planning (Dinner -> Drinks -> Dessert).

Built With

Share this project:

Updates