TravelBetter
1. About the Project
Inspiration
Every traveler knows the struggle—you're scrolling through Instagram, watching YouTube travel vlogs, saving TikTok recommendations, and screenshotting "hidden gems" from Reddit threads. But when it's time to actually plan your trip, all those saved places are scattered across apps, half-forgotten in camera rolls, or buried in browser bookmarks.
We asked ourselves: What if your travel planning assistant could understand the way you actually discover places? What if it could look at your messy screenshot of a travel blog and intelligently extract the destinations? What if it learned your preferences and suggested places that match YOUR travel style—not generic top-10 lists?
That's how TravelBetter was born: an AI-powered travel companion that bridges the gap between discovery and planning.
What it does
TravelBetter transforms chaotic travel inspiration into organized, personalized itineraries:
- Personalized AI Suggestions — Tell us your travel style (solo/couple/family), budget (budget/moderate/luxury), pace (relaxed/packed), and interests (food/culture/nature/nightlife), and receive tailored recommendations with confidence scores and personalized reasoning.
- Drag-and-Drop Itinerary Builder — Organize places across days with intuitive drag-and-drop, automatic commute calculations, and timing controls.
- Living Map View — Visualize your entire trip on an interactive map with route deep-links to Google Maps.
How we built it
Frontend: React 18 + TypeScript + Vite for fast, type-safe development. TanStack Query for server state. shadcn/ui + Tailwind CSS for a modern interface. dnd-kit for drag-and-drop. MapLibre GL for mapping.
AI Pipeline: Google Gemini API (gemini-3-flash-preview) as our multimodal backbone. We built a two-pass filtering system for image OCR—first pass does visual validation and cross-references landmarks with text, second pass applies semantic reasoning to filter out UI elements and noise.
Backend: Vercel serverless functions with a single catch-all router for cost efficiency. Supabase for PostgreSQL database, auth, and row-level security.
Location Intelligence: Google Places/Geocoding APIs for coordinate resolution and enriched place details.
Challenges we ran into
AI Hallucination Prevention — We implemented strict prompt engineering with category constraints and geographic validation to ensure all suggestions are real places. Cross-Day Drag-and-Drop — Moving places between days while maintaining timing integrity and triggering commute recalculations required a sophisticated state management architecture.
Accomplishments that we're proud of
- Personalization engine that builds contextual prompts from user preferences, turning "I'm a foodie couple on a budget" into tailored suggestions.
- Confidence scoring with reasoning — every AI suggestion explains why it matches your preferences, building user trust.
- Cost-efficient architecture — 12+ APIs running through a single serverless function.
What we learned
Personalization requires nuance — Different types of travelers need completely different recommendations for the same destination. User trust comes from transparency — Explaining the "why" behind AI suggestions is critical for user engagement.
What's next for TravelBetter
- Real-time collaboration — Plan trips together with friends and family with live shared editing.
- Offline mode — Download itineraries for use in areas with poor connectivity.
- Flight & accommodation integration — Connect with booking APIs to show price estimates and availability.
- Voice input — Describe your dream trip naturally and let AI build the itinerary.
2. Technical Stack
| Category | Technologies |
|---|---|
| Languages | TypeScript, TypeScript |
| Frontend | React 18, React Router v6, Vite |
| Platforms | Vercel, Supabase |
| Services | Vercel Serverless Functions |
| Databases | Vercel |
| AI/ML | Google Gemini API (Multimodal LLM) |
| APIs | Google Places API, Google Geocoding API |
| Styling | Tailwind CSS, shadcn/ui |
| State/Data | TanStack Query, dnd-kit, Zod |
Built With
- gemini
- sql
- supabase
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.