Letmebook — AI-Powered Trip Planner

Inspiration

Travel planning means juggling a dozen tabs — maps, weather, Airbnb, Skyscanner, budget spreadsheets — just to build a trip that might not even work. We wanted one conversational interface where you can say:

"Weekend trip to Tokyo, $300 budget, love food and history"

and get back a complete, feasible itinerary with real prices, real routes, and real weather.


What It Does

Letmebook is an AI-powered trip planner that turns natural language into fully planned itineraries for any destination worldwide.

Users chat with a bot that:

  • Extracts preferences (dates, budget, interests, pace)
  • Validates them in real time on a split-panel UI
  • Generates a day-by-day schedule with timed activities, meals, and travel segments
  • Enforces pace-specific rules and stays within the user’s daily budget

Under the hood, it:

  • Pulls live weather forecasts from Open-Meteo
  • Calculates real routes via Google Maps Directions API
  • Scrapes real Airbnb nightly rates
  • Generates booking links for:
    • Flights via Skyscanner
    • Buses/trains via Busbud
  • Uses an Apache Airflow pipeline for real-time data collection and scheduling

How We Built It

Backend

  • Framework: FastAPI with a layered architecture (routes, services, clients, models)
  • LLMs:
    • Gemini 2.0-Flash as the primary LLM
    • Groq Llama 3.3-70B as automatic fallback
  • Responsibilities:
    • NLP extraction of user preferences and constraints
    • Itinerary generation and refinement

Frontend

  • Tech stack: React + Vite with Context API
  • Three-phase UI:
    1. Welcome screen
    2. Split-panel chat with live preference extraction and validation
    3. Full-page itinerary view with day-by-day breakdown

Integrations

  • Google Maps API:

    • Multi-stop routing
    • Driving/transit/walking directions
    • Turn-by-turn instructions
    • Shareable map links
  • Web Scraping:

    • Live Airbnb price scraping via HTTP + regex
    • Booking link generation for:
    • Skyscanner (50+ cities)
    • Busbud (30+ cities)
  • Weather (Open-Meteo):

    • Geocoding-based integration
    • 7-day forecasts
    • Free and no API key required
  • Budget Engine:

    • Uses real scraped Airbnb prices
    • Combines with market-based flight estimates
    • Produces cheapest/average/expensive budget scenarios
  • Apache Airflow:

    • Orchestrates real-time scraping
    • Handles data collection scheduling and retries

Challenges We Ran Into

  • LLM reliability:
    Gemini occasionally returned malformed JSON. We built dual-LLM fallback with 3 retries and exponential backoff.

  • City ambiguity:
    Locations like "Kingston" often defaulted to Jamaica in many APIs. We implemented qualifier matching to ensure correct geocoding worldwide.

  • Schedule feasibility:
    Preventing overlapping events while:

    • Keeping meals within realistic time windows
    • Respecting hours-per-day limits
      required tight constraint enforcement.
  • Scraping fragility:
    Airbnb HTML changes frequently. We designed graceful fallbacks when regex patterns stop matching.

  • Prompt engineering:
    Getting consistent, structured JSON from Gemini took more iteration than any single piece of application code.


Accomplishments We’re Proud Of

  • Dual-LLM failover:
    Gemini as primary, Groq as fallback — if one goes down or misbehaves, users never notice.

  • Live price scraping:
    Real Airbnb rates plus flight estimates yield actual budget scenarios instead of rough guesses.

  • Google Maps multi-stop routing:
    Real directions between every venue, including:

    • Distance
    • Duration
    • Transit details
  • Pace-aware scheduling:

    • Relaxed: 2–3 activities per day with long buffers
    • Packed: 6–8 activities per day with tight buffers
      All driven by config and enforced consistently throughout the schedule.
  • End-to-end booking:
    One orchestration service combines:

    • Airbnb stays
    • Skyscanner flights
    • Busbud ground transport
      into a unified response with booking links and prices.

What We Learned

  • Prompt engineering is core infrastructure:
    Small changes in system instructions caused large shifts in LLM output quality.

  • Fallback systems need explicit testing:
    Gemini and Groq format JSON differently, so parsing logic had to robustly handle both.

  • Validate at every layer:
    Catching an unrealistic budget (e.g., $30/day) early prevents cascading failures in later itinerary generation.

  • Free APIs are underrated:
    Open-Meteo turned out to be production-quality with zero billing overhead.

  • Layered architecture pays off:
    A clean separation (routes, services, clients, models) allowed three developers to work in parallel with minimal merge conflicts.


What’s Next for 937

  • Integrate MongoDB to replace file-based storage with proper collections.
  • Add real-time budget tracking that updates as users modify itineraries or prices change.
  • Support schedule adaptation to re-route on the fly when:
    • Weather changes
    • Venues close or become unavailable
  • Implement multi-modal route optimization across walking, transit, and driving.
  • Introduce user accounts to:
    • Save trips
    • Revisit and edit past itineraries
    • Share trips with others.

Built With

Share this project:

Updates