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:
- Welcome screen
- Split-panel chat with live preference extraction and validation
- 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.
- Relaxed: 2–3 activities per day with long buffers
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.
Log in or sign up for Devpost to join the conversation.