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

Share this project:

Updates