Inspiration
Planning group trips is a coordination nightmare, juggling everyone's budgets, vibes, dietary needs, and dealbreakers in a messy group chat. We wanted to build an AI-powered solution that turns that chaos into a single, conflict-free itinerary everyone can agree on.
What it does TripSync is a group travel planning app where each member submits their preferences (budget range, vacation vibes, dietary restrictions, dealbreakers) through a sleek multi-step form or a conversational voice assistant powered by Web Speech API and ElevenLabs TTS. A trip leader triggers Gemini AI to synthesize the group's preferences, finding common ground, calculating the tightest budget overlap, and flagging conflicts. It then scores and recommends real destinations, and generates a detailed day-by-day itinerary with strict budget enforcement and cost validation. The final itinerary can even be narrated aloud in an enthusiastic radio-style segment via ElevenLabs.
How we built it We used Next.js 16 (App Router) with React 19 and Tailwind CSS 4 for a responsive, dark-mode-ready frontend featuring glassmorphism and gradient aesthetics. Supabase handles authentication and our Postgres database (users, trips, preferences, syntheses, recommendations, itineraries). On the AI side, Google Gemini powers preference synthesis, destination scoring, itinerary generation, and voice transcript extraction via structured JSON prompts. ElevenLabs provides streaming text-to-speech for both the voice assistant and itinerary narration. We containerized the app with Docker for easy deployment.
Challenges we faced Getting the voice assistant loop right, handling mic capture, silence detection, AI response generation, and TTS playback in a seamless conversational flow without stale React closures was tricky. Enforcing strict budget constraints across AI-generated itineraries required careful prompt engineering and post-generation validation to ensure real-world cost estimates stayed within the group's tightest budget overlap. Extracting structured data from casual speech (e.g., "I'm vegetarian but I eat fish" → ["pescatarian"]) demanded a highly tolerant NLP prompt design. What we learned We deepened our understanding of prompt engineering for structured JSON extraction, streaming audio APIs, and building real-time collaborative features with Supabase. We also learned how to orchestrate multiple AI services (Gemini + ElevenLabs) into a cohesive user experience.
Built With
- ai
- api
- auth
- css
- docker
- elevenlabs
- gemini
- next.js
- postgresql
- react
- recharts
- speech
- supabase
- tailwind
- typescript
- web
Log in or sign up for Devpost to join the conversation.