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
- next.js
- openai
- postgresql
- react
- shadcn/ui
- supabase
- typescript
- vercel-ai-sdk
- yelp-ai-api
Log in or sign up for Devpost to join the conversation.