Travel Assistant
OpenClawd Operator Adaptation
Run this skill as part of the OpenClawd operator deck. Preserve the skill-specific workflow below, but frame outputs for Solana-native agents when relevant: prefer OpenClawd language, note whether the work can support autonomous agent operations, and keep financial, legal, tax, hiring, medical, or other regulated outputs informational unless the skill already requires a stricter disclaimer. Use the Llobster Legend persona only as light operator framing; do not let branding override accuracy, safety, or the user's stated domain.
Build comprehensive travel planners tailored to the user's needs. This skill ensures the agent gathers all necessary information before building, chooses the right output format, and includes essential features from the start. It also covers practical travel knowledge — flights, entry requirements, pacing, and budgeting.
When to Use
Itinerary building, flight/accommodation strategy, budget estimation
"What do I need to enter [country]?" — visa/vaccine/ETIAS checks
Building interactive trip planning web apps
When NOT to Use
- Booking (can't transact); travel insurance (insurance-optimizer)
Step 1: Ask Output Format First
Before building anything, ask the user what format they want:
Interactive website — Best for browsing, exploring options, and sharing with travel companions. Can include maps, filters, and selection tools.
PDF report — Best for offline use, printing, and taking on the trip. Clean, formatted document.
Excel/spreadsheet — Best for budget-focused planning, collaborative editing, and people who prefer tabular data.
Combination — e.g., a website with PDF export (most common for serious trip planning).
Step 2: Gather Trip Details
Collect these essentials before generating any content:
Where are you traveling from? (origin city/airport — required for flight search)
Dates and duration — When and how long (or flexible?)
Destinations / regions — Specific cities, or open to suggestions?
Group size and composition — Number of adults, children, babies, elderly. This directly affects activity recommendations, restaurant choices, and accessibility needs (stroller-friendly, wheelchair access, etc.)
Travel style — Budget, mid-range, luxury, or mixed
Priorities — Food-focused, adventure, culture, relaxation, nightlife, nature, family fun
Must-dos and must-avoids — Any specific places, activities, or experiences they want or want to skip
Pace preference — Packed schedule vs. slow and relaxed
Dietary needs — Allergies, vegetarian, etc. (affects restaurant recommendations)
Do NOT search for flights without knowing the origin city — you will get it wrong.
Step 3: Content Depth
Ask how detailed they want the plan:
High-level outline — Day-by-day overview with main activities
Detailed recommendations — Specific restaurants, activities, alternatives, prices, links, and booking info
Full concierge — Everything above plus rain plans, backup options, and curated picks
Entry Requirements — Check Before Anything Else
Getting this wrong ends the trip at the airport. webSearch every time — rules change.
| Check | Source | Notes |
|-------|--------|-------|
| Visa requirements | travel.state.gov(US citizens) or[passport country] [destination] visa requirements | |
| Schengen 90/180 (Europe) | ec.europa.eucalculator orschengenvisainfo.com/visa-calculator | 90 days in any rolling 180-day window. Does NOT reset on exit. Count days not months. Entry + exit days both count as full days. Schengen ≠ EU (UK, Ireland out; Switzerland, Norway in) |
| ETIAS (Europe) | etias.com | Pre-authorization now required even for visa-free travelers |
| Passport validity | — | Many countries require 6 months validity beyond your departure date. Check blank pages too (some need 2+) |
| Vaccines | cdc.gov/travel | Yellow fever is mandatory (with certificate) for some countries if arriving from an endemic zone |
| Onward ticket proof | — | Some countries (Thailand, Philippines, Indonesia, Costa Rica, Peru) won't let you board without proof you're leaving |
| Safety advisories | travel.state.gov/content/travel/en/traveladvisories | |
Itinerary Pacing — The #1 Mistake Is Overplanning
Hard limits
Max 1 anchor activity per half-day. One museum in the morning, one neighborhood in the afternoon. Hour-by-hour schedules fall apart by day 2.
Transit tax: every change of location costs 30-60 min more than Google Maps says (finding the entrance, ticketing, getting lost once). Budget it.
Day 1 after a long-haul flight is dead. Plan a walk and an early dinner, nothing with a timed entry.
3-night minimum per city for multi-city trips. 2 nights = 1 real day. Fewer cities, done well, beats a checklist.
One unplanned afternoon per 3 days. The best travel moments are unscheduled.
Cluster by geography — plot everything on a map first, then group by neighborhood. Never cross the city twice in a day.
Known closure patterns
Europe: many museums closed Mondays (Louvre, Prado) or Tuesdays (Italy). Always verify.
Japan: many restaurants/shops closed one weekday (often Mon or Wed). Golden Week (late Apr-early May) = everything packed.
Middle East: Friday is the weekend day; expect closures.
Siesta countries (Spain, Greece, parts of Italy): 2-5pm dead zone outside tourist cores.
Step 4: Build with These Standards
Flights
Search for flights using webSearchwith queries like"Google Flights [origin] to [destination] [dates]","Skyscanner [origin] to [destination] [month]".
Present options with direct links to booking/search pages:
**Option 1: [Airline] — $XXX roundtrip**
- Outbound: [date], [time] [origin] → [time] [dest] (Xh Xm, nonstop/1 stop)
- Return: [date], [time] [dest] → [time] [origin] (Xh Xm, nonstop/1 stop)
- [Google Flights link](URL) | [Book direct with airline](URL)
**Option 2: [Airline] — $XXX roundtrip**
...
Include at least 3 options when possible: cheapest, best schedule, best airline. Note open-jaw options if doing a multi-city trip.
Flight search tools — use multiple, they surface different fares
| Tool | What it's best at |
|------|-------------------|
| Google Flights | Speed; calendar price grid; search up to 7 origin + 7 destination airports at once; price-history graph shows if "now" is cheap |
| Skyscanner | "Everywhere" destination (cheapest places from your airport, sorted by price); "Whole month" date view; surfaces budget carriers Google misses |
| Skiplagged | Hidden-city fares — flight A→C with layover at B is cheaper than A→B, so you get off at B. Savings up to 60%. Constraints: carry-on only (checked bags go to C), one-way only (skipping a leg cancels the rest), don't do it repeatedly on the same airline (they ban accounts) |
| Going.com / Secret Flying | Error fares, mistake prices — time-sensitive |
Booking rules
Find the fare on an aggregator → book direct with the airline. OTAs (Expedia etc.) are useless when flights get cancelled — airline agents will say "call Expedia"
Domestic sweet spot: 1-3 months out. International: 2-6 months. Last-minute is almost always worse except on empty routes
Tuesday/Wednesday/Saturday departures are typically cheapest
Open-jaw (fly into city A, out of city B) via multi-city search — often cheaper than round-trip + ground transport
Hotels / Accommodations
Search using webSearchfor hotels in the destination area with queries like"best hotels [neighborhood] [city] [budget level]","[city] hotels [dates] site:booking.com","[city] airbnb [neighborhood]".
Present options with direct links:
**[Hotel Name]** — $XXX/night | [neighborhood] | [rating] stars
- [Key feature 1], [key feature 2] (e.g., rooftop pool, walkable to old town, free breakfast)
- [Booking.com link](URL) | [Hotel website](URL)
**[Hotel/Airbnb Name]** — $XXX/night | [neighborhood] | [rating]
...
Include 3-5 options spanning the user's budget range. Note the neighborhood and why it's a good base. For multi-city trips, list accommodations per city.
| Platform | Best for |
|----------|----------|
| Booking.com | Widest hotel inventory, free cancellation options, price match |
| Airbnb | Apartments, longer stays, groups, kitchens |
| Hostelworld | Budget/social travelers |
| Hotel direct sites | Loyalty perks, best-rate guarantees |
Day-by-Day Itinerary
Structure each day with anchor activities and restaurant recommendations with links:
## Day X — [Neighborhood/Theme]
**Anchor (AM):** [Activity] — book ahead? y/n — ~$XX — nearest metro: [station]
**Lunch:** [Restaurant name](URL) — [cuisine, 1-line description] — ~$XX/person
**Anchor (PM):** [Activity]
**Dinner:** [Restaurant name](URL) — [cuisine, 1-line description] — ~$XX/person
**Alt dinner:** [Restaurant name](URL) — [backup option]
**Transit:** [A→B method, ~time, ~cost]
**If it rains / you're tired:** [one swap]
**Day est:** $XX
For restaurant links, search with webSearchfor"best [cuisine] restaurant [neighborhood] [city]"or"[city] [neighborhood] restaurants site:google.com/maps". Link to Google Maps, Yelp, or the restaurant's website.
Always Include from the Start
- Links for every venue — Every restaurant, activity, and accommodation must have:
A Google Maps link (mapLink)
A website URL (websiteLink) — use the venue's official site when possible
These should be in the data model from day one, not added later
- PDF/Excel export — If building a website, always include export functionality. Users will want to take their itinerary offline while traveling. Use
jspdf for PDF generation on the client side.
- Booking and availability context — The app should connect to travel platforms for live data where possible, and fall back to deep links when direct integration isn't available:
Target platforms and their capabilities
Accommodations: Booking.com, Airbnb, Expedia, Hotels.com — search availability by dates/location/group size, show prices, ratings, reviews, photos, amenities, cancellation policies
Restaurants: OpenTable, TheFork, Resy — search availability by date/time/party size, show ratings, reviews, cuisine type, price tier, reservation slots
Activities/Experiences: GetYourGuide, Viator, Fever, Klook — search by destination/dates, show availability, prices, ratings, reviews, duration, cancellation policy
Transportation: Trainline, Rome2Rio, FlixBus, local transit APIs — search routes, schedules, prices, duration between destinations
Car Rental: Rentalcars.com, AutoEurope — search by pickup/dropoff location and dates, show vehicle options, prices, insurance
Integration approach (in priority order)
Replit integrations — Check if a Replit integration exists for any of these platforms. If so, use it for direct API access (availability search, reviews, pricing). This is the preferred method.
Direct APIs — If no Replit integration exists but the platform offers a public or partner API (e.g., Booking.com Affiliate API, GetYourGuide Partner API), use it with appropriate API keys stored as secrets.
Web search enrichment — Use web search to find current reviews, ratings, prices, and availability for venues. Parse and display relevant data.
Deep links as fallback — When no API access is available, generate deep links that pre-fill search parameters on the platform:
Booking.com: https://www.booking.com/searchresults.html?ss={destination}&checkin={date}&checkout={date}&group_adults={n}&group_children={n}
Airbnb: https://www.airbnb.com/s/{destination}/homes?checkin={date}&checkout={date}&adults={n}&children={n}&infants={n}
OpenTable: https://www.opentable.com/s?term={restaurant}&covers={n}&dateTime={datetime}
GetYourGuide: https://www.getyourguide.com/s/?q={activity}&date_from={date}&date_to={date}
Expedia: https://www.expedia.com/Hotel-Search?destination={destination}&startDate={date}&endDate={date}&rooms=1&adults={n}
Data to surface from these platforms when available
Availability status (available / sold out / limited)
Price range and specific pricing
User ratings and review count
Photos
Cancellation/refund policy
Key amenities or highlights
Booking confirmation status
Important: Always check for new Replit integrations before falling back to deep links. The integration landscape evolves — what isn't available today may be available tomorrow.
Persistent state — Selection state (which items the user picks) should survive page refresh. Use localStorage at minimum, or a lightweight backend for sharing.
Mobile-first design — Trip planners are most useful on phones while traveling. Design mobile-first with responsive breakpoints. Consider PWA features for offline access.
Collaborative features — For group trips, consider:
Shareable links
Voting/favoriting on options
Comments on activities
At minimum, make the plan easy to share (PDF export, copy link)
Web App — Map + Itinerary
Always build a web app that combines two views the user can switch between:
- Map view — all locations plotted on an interactive map with color-coded markers by type (airports, hotels, activities, restaurants). Each marker has a popup with name, time, and links. Connect same-day stops with route lines so the user can see the flow.
- Itinerary view — a beautiful, card-based day-by-day layout. Each day is a card with the day number, neighborhood/theme, and a timeline of activities, meals, and transit. Include photos or icons for each stop, estimated costs, and direct links to book or learn more.
Use the Nominatim API (OpenStreetMap) for geocoding addresses to lat/lng — no API key required.
The user should be able to toggle between map and itinerary views. Clicking a day in the itinerary should highlight that day's markers on the map.
AI-Powered Recommendations
Use AI integrations to generate smarter, personalized content rather than relying solely on hardcoded data:
Destination research — Use an AI model to research destinations based on the user's preferences (travel style, group composition, interests) and generate tailored restaurant, activity, and accommodation suggestions.
Seasonality awareness — Factor in the time of year when recommending activities. Suggest outdoor markets and harvest festivals in fall, ski resorts in winter, beaches and hiking in summer, cherry blossoms in spring. Flag activities that may be closed or less enjoyable in the chosen season.
Personalization — Adjust recommendations based on group composition. A trip with babies should emphasize stroller-friendly paths, early dinner reservations, and nap-friendly schedules. A trip with adventurous adults should prioritize hikes, wine tours, and late-night dining.
Local events — Research festivals, concerts, exhibitions, and seasonal markets happening during the travel dates and suggest them as bonus activities.
Real-Time Data Integration
Where possible, enrich the planner with live information:
Weather forecasts — Pull weather data for the travel dates and destination. Show expected conditions on each day card. Use this to inform rain plan recommendations.
Exchange rates — For international trips, show current exchange rates and convert budget estimates to the traveler's home currency.
Event calendars — Check for local holidays, festivals, and closures that affect the itinerary.
Venue hours and closures — Verify opening hours and seasonal closures. Flag restaurants closed on specific days (e.g., many Italian restaurants close Mondays). Alert if a suggested venue is likely to be closed on the planned visit day.
Implementation — Use web search or external APIs to fetch this data. Cache results to avoid repeated lookups. Display weather/events as supplementary info on day cards, not as blocking requirements.
Transportation Planning
Include travel logistics between stops:
Driving/transit times — Show estimated travel time between each day's activities. This helps users judge whether a day plan is realistic. Use Google Maps distance estimates or similar.
Optimal routing — If a day has multiple stops, suggest the best order to minimize driving. Group nearby activities together.
Transfer days — For multi-region trips, explicitly plan transfer days with:
Departure and arrival times
Recommended routes (scenic vs. fastest)
Luggage logistics (hotel checkout times, car rental pickups/dropoffs)
Suggested stops along the way (rest stops, scenic viewpoints, lunch spots)
Transport modes — Note whether each leg is best done by car, train, bus, ferry, cable car, or walking. Include ticket booking links where applicable.
Data model — Add transport-related fields to the day itinerary:
interface TransportLeg {
from: string;
to: string;
mode: 'car' | 'train' | 'bus' | 'ferry' | 'cable-car' | 'walking' | 'flight';
durationMinutes: number;
distance?: string;
notes?: string;
bookingLink?: string;
}
interface DayItinerary {
// ...existing fields...
transport?: TransportLeg[];
}
Packing List Generator
Based on trip parameters, generate a suggested packing list:
Weather-based — Pull expected weather for the destinations and dates. Suggest layers for variable weather, rain gear if rain is likely, sun protection for warm destinations.
Activity-based — Add items based on planned activities (hiking boots for mountain trails, swimsuit for lake/beach, smart casual for fine dining, comfortable shoes for city walking).
Baby/child-specific — If traveling with babies or young children, suggest: portable high chair, stroller rain cover, baby carrier for trails, snacks, entertainment for transit, travel crib if not provided by accommodation.
Destination-specific — Note cultural requirements (modest dress for religious sites, specific adapter types for power outlets, local SIM card recommendations).
Duration-based — Scale quantities to trip length. Suggest laundry considerations for trips over a week.
Categorize the list — Group items by: Clothing, Toiletries, Electronics, Documents, Baby/Kids, Activity Gear, Miscellaneous.
Cost Estimation and Budget Tracking
Go beyond static price estimates:
Currency conversion — For international trips, detect the traveler's home currency and show prices in both local and home currency. Use current exchange rates.
Dynamic pricing — Where possible, link to actual pricing sources rather than static estimates. Note that prices vary by season and should be verified.
Budget categories — Break costs down by: Accommodation, Dining, Activities, Transportation, Shopping/Souvenirs, Miscellaneous.
Daily budget view — Show estimated spend per day alongside the itinerary, so users can see which days are expensive and where to cut back.
Running total — Show cumulative spend as the user assigns restaurants and activities to days, so they can track against their overall budget.
Group cost splitting — For group trips, show per-person costs alongside total costs. Account for different pricing (e.g., children free, adult tickets).
Budget estimation reference (per person)
| Category | Budget | Mid | High | Notes |
|----------|--------|-----|------|-------|
| Sleep /night | $25-50 | $80-180 | $250+ | Hostels/guesthouses → 3-star → boutique |
| Food /day | $15-30 | $40-80 | $120+ | Street + one sit-down → restaurants → tasting menus |
| Local transit /day | $5-15 | $15-30 | $50+ | Metro pass → occasional taxi → car+driver |
| Activities /day | $0-20 | $30-60 | $100+ | Free walking tours → paid entries → private guides |
Southeast Asia / Central America / Eastern Europe: use the low end. Western Europe / Japan / Australia: mid-to-high. Switzerland / Norway / Iceland: add 30% to whatever you estimated.
Always add: intercity transport (trains/flights between cities — often the hidden budget killer), travel insurance (4-8% of trip cost), SIM/eSIM ($20-40), visa fees, 10-15% buffer.
Budget Summary
| Category | Est. Total |
|----------|-----------|
| Flights | $XXX |
| Accommodation (X nights) | $XXX |
| Food | $XXX |
| Activities/Entries | $XXX |
| Local Transport | $XXX |
| Trip Total|$X,XXX |
Trip Templates
Save and reuse trip structures:
Save as template — Allow completed trip plans to be saved as reusable templates. Strip personal details but keep the structure, venue recommendations, and day flow.
Template library — Maintain a collection of proven itineraries that can serve as starting points. Tag templates by destination, duration, travel style, and group type.
Customizable templates — When loading a template, let users adjust dates, swap venues, and modify the pace while keeping the overall structure.
Implementation — Store templates as JSON files with the full itinerary structure. Include metadata (destination, duration, style, best season, group type) for search and filtering.
Multi-Region Trip Logic
Handle trips that span multiple destinations or regions:
Region segmentation — Clearly separate the itinerary into region blocks (e.g., "Lake Garda — Days 1-7" and "Dolomites — Days 8-14"). Use visual badges and color coding to distinguish regions.
Transfer planning — Automatically identify transfer days between regions. Suggest departure times, scenic routes, and midway lunch stops.
Region-specific recommendations — Tailor restaurant and activity suggestions to each region. Don't suggest a Lake Garda restaurant for a Dolomites day.
Luggage logistics — Note when hotel changes require packing up. Suggest leaving heavy luggage at a storage point if doing a day trip before checking into the next region's accommodation.
Suggested day allocation — Based on the number of attractions and the pace preference, suggest how many days to allocate to each region. Flag if a region is over-packed or under-utilized.
Data Architecture
Structure venue data with these fields from the start:
interface BookingInfo {
platform: string;
deepLink: string;
rating?: number;
reviewCount?: number;
price?: string;
availability?: 'available' | 'limited' | 'sold-out' | 'unknown';
cancellationPolicy?: string;
lastChecked?: string;
}
interface Restaurant {
id: string;
name: string;
city: string;
region: string;
cuisine: string;
priceRange: string;
description: string;
mustTry: string;
familyFriendly: boolean;
mapLink: string;
websiteLink?: string;
bookingInfo?: BookingInfo[];
michelinStatus?: string;
closedOn?: string[];
suggestedMeal: 'lunch' | 'dinner' | 'either';
suggestedDays?: number[];
}
interface Activity {
id: string;
name: string;
city: string;
region: string;
category: string;
duration: string;
priceRange: string;
description: string;
highlights: string[];
familyFriendly: boolean;
strollerAccessible: boolean;
mapLink: string;
websiteLink?: string;
bookingInfo?: BookingInfo[];
seasonalAvailability?: string[];
suggestedDays?: number[];
}
interface Accommodation {
id: string;
name: string;
region: string;
stars: number;
priceRange: string;
features: string[];
familyFriendly: boolean;
babyFriendly: boolean;
mapLink: string;
websiteLink: string;
bookingInfo?: BookingInfo[];
checkInTime?: string;
checkOutTime?: string;
why: string;
}
Feature Checklist
For a full-featured web-based travel planner, include:
Design Defaults
For travel planners, warm and inviting palettes work well:
Use destination-inspired colors (e.g., terracotta/olive/amber for Italy, blue/white for Greece, red/gold for Japan, sage/slate for Scandinavia)
Serif headings (Playfair Display, Cormorant) + clean sans-serif body (DM Sans, Inter)
Subtle animations for expanding sections (Framer Motion)
Card-based layouts for restaurants and activities
Cream/warm backgrounds rather than pure white
Region-specific accent colors for multi-destination trips
PDF Export Implementation
When generating PDFs with jspdf:
Paint page backgrounds only on new pages (in addPage callback), never re-paint over existing content in loops
Use a checkPageBreak helper that handles both page breaks and background painting
Include: header with trip title/dates, day sections with activities, selected picks, alternatives, rain plans, page numbers
Style consistently with the web app's color palette
Include packing list as a final section if generated
Add a budget summary page at the end
Useful Lookups (webSearch)
"[city] 3 day itinerary reddit" — real traveler pacing, not SEO content
"rome2rio [city A] to [city B]" — compares train/bus/flight/ferry with rough prices
"numbeo cost of living [city]" — meal/taxi/beer price baselines
"seat61 [country]" — train travel bible, especially Europe/Asia
"[attraction] skip the line" — whether advance booking is actually necessary
Common Pitfalls to Avoid
Don't hardcode venues without links — always include mapLink and websiteLink
Don't skip export functionality — users always want to take plans offline
Don't forget group composition affects recommendations — babies need stroller access, elderly need less walking
Don't build desktop-first — travelers use their phones
Don't lose selection state on refresh — persist with localStorage or backend
Don't try to build booking into the app — link to booking platforms instead
Don't ignore travel times — a day with 4 activities spread across a region may not be realistic
Don't recommend venues without checking seasonal availability — a summer beach activity shouldn't appear in a winter itinerary
Don't show prices only in local currency — international travelers need conversion
Don't treat multi-region trips as a flat list — segment by region with clear transfer days
Don't forget packing needs change with activities — hiking gear, swimming gear, and fine dining outfits are all different
Don't search for flights without knowing the origin city
Limitations
1---2name: travel-assistant3description: Plan trips, build itineraries, find flights and hotels, and estimate travel budgets.4---56# Travel Assistant78## OpenClawd Operator Adaptation910Run this skill as part of the OpenClawd operator deck. Preserve the skill-specific workflow below, but frame outputs for Solana-native agents when relevant: prefer OpenClawd language, note whether the work can support autonomous agent operations, and keep financial, legal, tax, hiring, medical, or other regulated outputs informational unless the skill already requires a stricter disclaimer. Use the Llobster Legend persona only as light operator framing; do not let branding override accuracy, safety, or the user's stated domain.111213Build comprehensive travel planners tailored to the user's needs. This skill ensures the agent gathers all necessary information before building, chooses the right output format, and includes essential features from the start. It also covers practical travel knowledge — flights, entry requirements, pacing, and budgeting.1415## When to Use1617- Itinerary building, flight/accommodation strategy, budget estimation18- "What do I need to enter [country]?" — visa/vaccine/ETIAS checks1920- Building interactive trip planning web apps2122## When NOT to Use2324- Booking (can't transact); travel insurance (insurance-optimizer)2526## Step 1: Ask Output Format First2728Before building anything, ask the user what format they want:2930- **Interactive website** — Best for browsing, exploring options, and sharing with travel companions. Can include maps, filters, and selection tools.31- **PDF report** — Best for offline use, printing, and taking on the trip. Clean, formatted document.3233- **Excel/spreadsheet** — Best for budget-focused planning, collaborative editing, and people who prefer tabular data.34- **Combination** — e.g., a website with PDF export (most common for serious trip planning).3536## Step 2: Gather Trip Details3738Collect these essentials before generating any content:3940- **Where are you traveling from?** (origin city/airport — required for flight search)41- **Dates and duration** — When and how long (or flexible?)4243- **Destinations / regions** — Specific cities, or open to suggestions?44- **Group size and composition** — Number of adults, children, babies, elderly. This directly affects activity recommendations, restaurant choices, and accessibility needs (stroller-friendly, wheelchair access, etc.)4546- **Travel style** — Budget, mid-range, luxury, or mixed47- **Priorities** — Food-focused, adventure, culture, relaxation, nightlife, nature, family fun4849- **Must-dos and must-avoids** — Any specific places, activities, or experiences they want or want to skip50- **Pace preference** — Packed schedule vs. slow and relaxed5152- **Dietary needs** — Allergies, vegetarian, etc. (affects restaurant recommendations)5354Do NOT search for flights without knowing the origin city — you will get it wrong.5556## Step 3: Content Depth5758Ask how detailed they want the plan:5960- **High-level outline** — Day-by-day overview with main activities61- **Detailed recommendations** — Specific restaurants, activities, alternatives, prices, links, and booking info6263- **Full concierge** — Everything above plus rain plans, backup options, and curated picks6465## Entry Requirements — Check Before Anything Else6667Getting this wrong ends the trip at the airport. webSearch every time — rules change.6869| Check | Source | Notes |7071|-------|--------|-------|7273| Visa requirements | `travel.state.gov`(US citizens) or`[passport country] [destination] visa requirements` | |7475| Schengen 90/180 (Europe) | `ec.europa.eu`calculator or`schengenvisainfo.com/visa-calculator` | 90 days in any rolling 180-day window. Does NOT reset on exit. Count days not months. Entry + exit days both count as full days. Schengen ≠ EU (UK, Ireland out; Switzerland, Norway in) |7677| ETIAS (Europe) | `etias.com` | Pre-authorization now required even for visa-free travelers |7879| Passport validity | — | Many countries require 6 months validity beyond your departure date. Check blank pages too (some need 2+) |8081| Vaccines | `cdc.gov/travel` | Yellow fever is mandatory (with certificate) for some countries if arriving from an endemic zone |8283| Onward ticket proof | — | Some countries (Thailand, Philippines, Indonesia, Costa Rica, Peru) won't let you board without proof you're leaving |8485| Safety advisories | `travel.state.gov/content/travel/en/traveladvisories` | |8687## Itinerary Pacing — The \#1 Mistake Is Overplanning8889### Hard limits9091- **Max 1 anchor activity per half-day.** One museum in the morning, one neighborhood in the afternoon. Hour-by-hour schedules fall apart by day 2.92- **Transit tax:** every change of location costs 30-60 min more than Google Maps says (finding the entrance, ticketing, getting lost once). Budget it.9394- **Day 1 after a long-haul flight is dead.** Plan a walk and an early dinner, nothing with a timed entry.95- **3-night minimum per city** for multi-city trips. 2 nights = 1 real day. Fewer cities, done well, beats a checklist.9697- **One unplanned afternoon per 3 days.** The best travel moments are unscheduled.98- **Cluster by geography** — plot everything on a map first, then group by neighborhood. Never cross the city twice in a day.99100#### Known closure patterns101102- Europe: many museums closed Mondays (Louvre, Prado) or Tuesdays (Italy). Always verify.103- Japan: many restaurants/shops closed one weekday (often Mon or Wed). Golden Week (late Apr-early May) = everything packed.104105- Middle East: Friday is the weekend day; expect closures.106- Siesta countries (Spain, Greece, parts of Italy): 2-5pm dead zone outside tourist cores.107108## Step 4: Build with These Standards109110### Flights111112Search for flights using `webSearch`with queries like`"Google Flights [origin] to [destination] [dates]"`,`"Skyscanner [origin] to [destination] [month]"`.113114Present options with **direct links** to booking/search pages:115116```text117118**Option 1: [Airline] — $XXX roundtrip**119120- Outbound: [date], [time] [origin] → [time] [dest] (Xh Xm, nonstop/1 stop)121- Return: [date], [time] [dest] → [time] [origin] (Xh Xm, nonstop/1 stop)122123- [Google Flights link](URL) | [Book direct with airline](URL)124125**Option 2: [Airline] — $XXX roundtrip**126127...128129```130131Include at least 3 options when possible: cheapest, best schedule, best airline. Note open-jaw options if doing a multi-city trip.132133#### Flight search tools — use multiple, they surface different fares134135| Tool | What it's best at |136137|------|-------------------|138139| Google Flights | Speed; calendar price grid; search up to 7 origin + 7 destination airports at once; price-history graph shows if "now" is cheap |140141| Skyscanner | "Everywhere" destination (cheapest places from your airport, sorted by price); "Whole month" date view; surfaces budget carriers Google misses |142143| Skiplagged | Hidden-city fares — flight A→C with layover at B is cheaper than A→B, so you get off at B. Savings up to 60%. **Constraints:** carry-on only (checked bags go to C), one-way only (skipping a leg cancels the rest), don't do it repeatedly on the same airline (they ban accounts) |144145| Going.com / Secret Flying | Error fares, mistake prices — time-sensitive |146147##### Booking rules148149- Find the fare on an aggregator → **book direct with the airline.** OTAs (Expedia etc.) are useless when flights get cancelled — airline agents will say "call Expedia"150- Domestic sweet spot: 1-3 months out. International: 2-6 months. Last-minute is almost always worse except on empty routes151152- Tuesday/Wednesday/Saturday departures are typically cheapest153- Open-jaw (fly into city A, out of city B) via multi-city search — often cheaper than round-trip + ground transport154155### Hotels / Accommodations156157Search using `webSearch`for hotels in the destination area with queries like`"best hotels [neighborhood] [city] [budget level]"`,`"[city] hotels [dates] site:booking.com"`,`"[city] airbnb [neighborhood]"`.158159Present options with **direct links**:160161```text162163**[Hotel Name]** — $XXX/night | [neighborhood] | [rating] stars164165- [Key feature 1], [key feature 2] (e.g., rooftop pool, walkable to old town, free breakfast)166- [Booking.com link](URL) | [Hotel website](URL)167168**[Hotel/Airbnb Name]** — $XXX/night | [neighborhood] | [rating]169170...171172```173174Include 3-5 options spanning the user's budget range. Note the neighborhood and why it's a good base. For multi-city trips, list accommodations per city.175176| Platform | Best for |177178|----------|----------|179180| Booking.com | Widest hotel inventory, free cancellation options, price match |181182| Airbnb | Apartments, longer stays, groups, kitchens |183184| Hostelworld | Budget/social travelers |185186| Hotel direct sites | Loyalty perks, best-rate guarantees |187188### Day-by-Day Itinerary189190Structure each day with anchor activities and restaurant recommendations with links:191192```text193194## Day X — [Neighborhood/Theme]195196**Anchor (AM):** [Activity] — book ahead? y/n — ~$XX — nearest metro: [station]197198**Lunch:** [Restaurant name](URL) — [cuisine, 1-line description] — ~$XX/person199200**Anchor (PM):** [Activity]201202**Dinner:** [Restaurant name](URL) — [cuisine, 1-line description] — ~$XX/person203204**Alt dinner:** [Restaurant name](URL) — [backup option]205206**Transit:** [A→B method, ~time, ~cost]207208**If it rains / you're tired:** [one swap]209210**Day est:** $XX211212```213214For restaurant links, search with `webSearch`for`"best [cuisine] restaurant [neighborhood] [city]"`or`"[city] [neighborhood] restaurants site:google.com/maps"`. Link to Google Maps, Yelp, or the restaurant's website.215216### Always Include from the Start2172181. **Links for every venue** — Every restaurant, activity, and accommodation must have:219220- A Google Maps link (`mapLink`)221- A website URL (`websiteLink`) — use the venue's official site when possible222223- These should be in the data model from day one, not added later2242251. **PDF/Excel export** — If building a website, always include export functionality. Users will want to take their itinerary offline while traveling. Use `jspdf` for PDF generation on the client side.2262. **Booking and availability context** — The app should connect to travel platforms for live data where possible, and fall back to deep links when direct integration isn't available:227228#### Target platforms and their capabilities229230- **Accommodations**: Booking.com, Airbnb, Expedia, Hotels.com — search availability by dates/location/group size, show prices, ratings, reviews, photos, amenities, cancellation policies231- **Restaurants**: OpenTable, TheFork, Resy — search availability by date/time/party size, show ratings, reviews, cuisine type, price tier, reservation slots232233- **Activities/Experiences**: GetYourGuide, Viator, Fever, Klook — search by destination/dates, show availability, prices, ratings, reviews, duration, cancellation policy234- **Transportation**: Trainline, Rome2Rio, FlixBus, local transit APIs — search routes, schedules, prices, duration between destinations235236- **Car Rental**: Rentalcars.com, AutoEurope — search by pickup/dropoff location and dates, show vehicle options, prices, insurance237238##### Integration approach (in priority order)2392401. **Replit integrations** — Check if a Replit integration exists for any of these platforms. If so, use it for direct API access (availability search, reviews, pricing). This is the preferred method.2412. **Direct APIs** — If no Replit integration exists but the platform offers a public or partner API (e.g., Booking.com Affiliate API, GetYourGuide Partner API), use it with appropriate API keys stored as secrets.2422433. **Web search enrichment** — Use web search to find current reviews, ratings, prices, and availability for venues. Parse and display relevant data.2444. **Deep links as fallback** — When no API access is available, generate deep links that pre-fill search parameters on the platform:245246- Booking.com: `https://www.booking.com/searchresults.html?ss={destination}&checkin={date}&checkout={date}&group_adults={n}&group_children={n}`247- Airbnb: `https://www.airbnb.com/s/{destination}/homes?checkin={date}&checkout={date}&adults={n}&children={n}&infants={n}`248249- OpenTable: `https://www.opentable.com/s?term={restaurant}&covers={n}&dateTime={datetime}`250- GetYourGuide: `https://www.getyourguide.com/s/?q={activity}&date_from={date}&date_to={date}`251252- Expedia: `https://www.expedia.com/Hotel-Search?destination={destination}&startDate={date}&endDate={date}&rooms=1&adults={n}`253254###### Data to surface from these platforms when available255256- Availability status (available / sold out / limited)257- Price range and specific pricing258259- User ratings and review count260- Photos261262- Cancellation/refund policy263- Key amenities or highlights264265- Booking confirmation status266267**Important:** Always check for new Replit integrations before falling back to deep links. The integration landscape evolves — what isn't available today may be available tomorrow.2682691. **Persistent state** — Selection state (which items the user picks) should survive page refresh. Use localStorage at minimum, or a lightweight backend for sharing.2702. **Mobile-first design** — Trip planners are most useful on phones while traveling. Design mobile-first with responsive breakpoints. Consider PWA features for offline access.2712723. **Collaborative features** — For group trips, consider:273274- Shareable links275- Voting/favoriting on options276277- Comments on activities278- At minimum, make the plan easy to share (PDF export, copy link)279280### Web App — Map + Itinerary281282**Always build a web app** that combines two views the user can switch between:2832841. **Map view** — all locations plotted on an interactive map with color-coded markers by type (airports, hotels, activities, restaurants). Each marker has a popup with name, time, and links. Connect same-day stops with route lines so the user can see the flow.2852. **Itinerary view** — a beautiful, card-based day-by-day layout. Each day is a card with the day number, neighborhood/theme, and a timeline of activities, meals, and transit. Include photos or icons for each stop, estimated costs, and direct links to book or learn more.286287Use the **Nominatim API** (OpenStreetMap) for geocoding addresses to lat/lng — no API key required.288289The user should be able to toggle between map and itinerary views. Clicking a day in the itinerary should highlight that day's markers on the map.290291### AI-Powered Recommendations292293Use AI integrations to generate smarter, personalized content rather than relying solely on hardcoded data:294295- **Destination research** — Use an AI model to research destinations based on the user's preferences (travel style, group composition, interests) and generate tailored restaurant, activity, and accommodation suggestions.296- **Seasonality awareness** — Factor in the time of year when recommending activities. Suggest outdoor markets and harvest festivals in fall, ski resorts in winter, beaches and hiking in summer, cherry blossoms in spring. Flag activities that may be closed or less enjoyable in the chosen season.297298- **Personalization** — Adjust recommendations based on group composition. A trip with babies should emphasize stroller-friendly paths, early dinner reservations, and nap-friendly schedules. A trip with adventurous adults should prioritize hikes, wine tours, and late-night dining.299- **Local events** — Research festivals, concerts, exhibitions, and seasonal markets happening during the travel dates and suggest them as bonus activities.300301### Real-Time Data Integration302303Where possible, enrich the planner with live information:304305- **Weather forecasts** — Pull weather data for the travel dates and destination. Show expected conditions on each day card. Use this to inform rain plan recommendations.306- **Exchange rates** — For international trips, show current exchange rates and convert budget estimates to the traveler's home currency.307308- **Event calendars** — Check for local holidays, festivals, and closures that affect the itinerary.309- **Venue hours and closures** — Verify opening hours and seasonal closures. Flag restaurants closed on specific days (e.g., many Italian restaurants close Mondays). Alert if a suggested venue is likely to be closed on the planned visit day.310311- **Implementation** — Use web search or external APIs to fetch this data. Cache results to avoid repeated lookups. Display weather/events as supplementary info on day cards, not as blocking requirements.312313### Transportation Planning314315Include travel logistics between stops:316317- **Driving/transit times** — Show estimated travel time between each day's activities. This helps users judge whether a day plan is realistic. Use Google Maps distance estimates or similar.318- **Optimal routing** — If a day has multiple stops, suggest the best order to minimize driving. Group nearby activities together.319320- **Transfer days** — For multi-region trips, explicitly plan transfer days with:321- Departure and arrival times322323- Recommended routes (scenic vs. fastest)324- Luggage logistics (hotel checkout times, car rental pickups/dropoffs)325326- Suggested stops along the way (rest stops, scenic viewpoints, lunch spots)327- **Transport modes** — Note whether each leg is best done by car, train, bus, ferry, cable car, or walking. Include ticket booking links where applicable.328329- **Data model** — Add transport-related fields to the day itinerary:330331```typescript332333interface TransportLeg {334335from: string;336337to: string;338339mode: 'car' | 'train' | 'bus' | 'ferry' | 'cable-car' | 'walking' | 'flight';340341durationMinutes: number;342343distance?: string;344345notes?: string;346347bookingLink?: string;348349}350351interface DayItinerary {352353// ...existing fields...354355transport?: TransportLeg[];356357}358359```360361### Packing List Generator362363Based on trip parameters, generate a suggested packing list:364365- **Weather-based** — Pull expected weather for the destinations and dates. Suggest layers for variable weather, rain gear if rain is likely, sun protection for warm destinations.366- **Activity-based** — Add items based on planned activities (hiking boots for mountain trails, swimsuit for lake/beach, smart casual for fine dining, comfortable shoes for city walking).367368- **Baby/child-specific** — If traveling with babies or young children, suggest: portable high chair, stroller rain cover, baby carrier for trails, snacks, entertainment for transit, travel crib if not provided by accommodation.369- **Destination-specific** — Note cultural requirements (modest dress for religious sites, specific adapter types for power outlets, local SIM card recommendations).370371- **Duration-based** — Scale quantities to trip length. Suggest laundry considerations for trips over a week.372- **Categorize the list** — Group items by: Clothing, Toiletries, Electronics, Documents, Baby/Kids, Activity Gear, Miscellaneous.373374### Cost Estimation and Budget Tracking375376Go beyond static price estimates:377378- **Currency conversion** — For international trips, detect the traveler's home currency and show prices in both local and home currency. Use current exchange rates.379- **Dynamic pricing** — Where possible, link to actual pricing sources rather than static estimates. Note that prices vary by season and should be verified.380381- **Budget categories** — Break costs down by: Accommodation, Dining, Activities, Transportation, Shopping/Souvenirs, Miscellaneous.382- **Daily budget view** — Show estimated spend per day alongside the itinerary, so users can see which days are expensive and where to cut back.383384- **Running total** — Show cumulative spend as the user assigns restaurants and activities to days, so they can track against their overall budget.385- **Group cost splitting** — For group trips, show per-person costs alongside total costs. Account for different pricing (e.g., children free, adult tickets).386387#### Budget estimation reference (per person)388389| Category | Budget | Mid | High | Notes |390391|----------|--------|-----|------|-------|392393| Sleep /night | $25-50 | $80-180 | $250+ | Hostels/guesthouses → 3-star → boutique |394395| Food /day | $15-30 | $40-80 | $120+ | Street + one sit-down → restaurants → tasting menus |396397| Local transit /day | $5-15 | $15-30 | $50+ | Metro pass → occasional taxi → car+driver |398399| Activities /day | $0-20 | $30-60 | $100+ | Free walking tours → paid entries → private guides |400401Southeast Asia / Central America / Eastern Europe: use the low end. Western Europe / Japan / Australia: mid-to-high. Switzerland / Norway / Iceland: add 30% to whatever you estimated.402403**Always add:** intercity transport (trains/flights between cities — often the hidden budget killer), travel insurance (~4-8% of trip cost), SIM/eSIM (~$20-40), visa fees, 10-15% buffer.404405### Budget Summary406407| Category | Est. Total |408409|----------|-----------|410411| Flights | $XXX |412413| Accommodation (X nights) | $XXX |414415| Food | $XXX |416417| Activities/Entries | $XXX |418419| Local Transport | $XXX |420421| **Trip Total**|**$X,XXX** |422423### Trip Templates424425Save and reuse trip structures:426427- **Save as template** — Allow completed trip plans to be saved as reusable templates. Strip personal details but keep the structure, venue recommendations, and day flow.428- **Template library** — Maintain a collection of proven itineraries that can serve as starting points. Tag templates by destination, duration, travel style, and group type.429430- **Customizable templates** — When loading a template, let users adjust dates, swap venues, and modify the pace while keeping the overall structure.431- **Implementation** — Store templates as JSON files with the full itinerary structure. Include metadata (destination, duration, style, best season, group type) for search and filtering.432433### Multi-Region Trip Logic434435Handle trips that span multiple destinations or regions:436437- **Region segmentation** — Clearly separate the itinerary into region blocks (e.g., "Lake Garda — Days 1-7" and "Dolomites — Days 8-14"). Use visual badges and color coding to distinguish regions.438- **Transfer planning** — Automatically identify transfer days between regions. Suggest departure times, scenic routes, and midway lunch stops.439440- **Region-specific recommendations** — Tailor restaurant and activity suggestions to each region. Don't suggest a Lake Garda restaurant for a Dolomites day.441- **Luggage logistics** — Note when hotel changes require packing up. Suggest leaving heavy luggage at a storage point if doing a day trip before checking into the next region's accommodation.442443- **Suggested day allocation** — Based on the number of attractions and the pace preference, suggest how many days to allocate to each region. Flag if a region is over-packed or under-utilized.444445### Data Architecture446447Structure venue data with these fields from the start:448449```typescript450451interface BookingInfo {452453platform: string;454455deepLink: string;456457rating?: number;458459reviewCount?: number;460461price?: string;462463availability?: 'available' | 'limited' | 'sold-out' | 'unknown';464465cancellationPolicy?: string;466467lastChecked?: string;468469}470471interface Restaurant {472473id: string;474475name: string;476477city: string;478479region: string;480481cuisine: string;482483priceRange: string;484485description: string;486487mustTry: string;488489familyFriendly: boolean;490491mapLink: string;492493websiteLink?: string;494495bookingInfo?: BookingInfo[];496497michelinStatus?: string;498499closedOn?: string[];500501suggestedMeal: 'lunch' | 'dinner' | 'either';502503suggestedDays?: number[];504505}506507interface Activity {508509id: string;510511name: string;512513city: string;514515region: string;516517category: string;518519duration: string;520521priceRange: string;522523description: string;524525highlights: string[];526527familyFriendly: boolean;528529strollerAccessible: boolean;530531mapLink: string;532533websiteLink?: string;534535bookingInfo?: BookingInfo[];536537seasonalAvailability?: string[];538539suggestedDays?: number[];540541}542543interface Accommodation {544545id: string;546547name: string;548549region: string;550551stars: number;552553priceRange: string;554555features: string[];556557familyFriendly: boolean;558559babyFriendly: boolean;560561mapLink: string;562563websiteLink: string;564565bookingInfo?: BookingInfo[];566567checkInTime?: string;568569checkOutTime?: string;570571why: string;572573}574575```576577### Feature Checklist578579For a full-featured web-based travel planner, include:580581- [ ] Day-by-day itinerary (timeline view)582- [ ] Board/Kanban view for visual overview583584- [ ] Restaurant catalog with filters and "Add to Day" picker585- [ ] Activity catalog with category filters and "Add to Day" picker586587- [ ] Selection system (context/state) for assigning items to days588- [ ] "Your Picks" section on each day showing assigned restaurants/activities589590- [ ] Interactive map with color-coded markers591- [ ] Accommodation recommendations592593- [ ] Budget breakdown with per-day and per-person views594- [ ] PDF export of full itinerary (including picks, alternatives, rain plans)595596- [ ] Map, website, and booking links on every venue card597- [ ] Dining and activity alternatives per day598599- [ ] Rain/bad weather backup plans600- [ ] Region badges on day cards601602- [ ] Transportation time estimates between stops603- [ ] Packing list generator604605- [ ] Weather forecast integration606- [ ] Currency conversion for international trips607608- [ ] Persistent state (localStorage or backend)609- [ ] Mobile-responsive design610611### Design Defaults612613For travel planners, warm and inviting palettes work well:614615- Use destination-inspired colors (e.g., terracotta/olive/amber for Italy, blue/white for Greece, red/gold for Japan, sage/slate for Scandinavia)616- Serif headings (Playfair Display, Cormorant) + clean sans-serif body (DM Sans, Inter)617618- Subtle animations for expanding sections (Framer Motion)619- Card-based layouts for restaurants and activities620621- Cream/warm backgrounds rather than pure white622- Region-specific accent colors for multi-destination trips623624### PDF Export Implementation625626When generating PDFs with jspdf:627628- Paint page backgrounds only on new pages (in `addPage` callback), never re-paint over existing content in loops629- Use a `checkPageBreak` helper that handles both page breaks and background painting630631- Include: header with trip title/dates, day sections with activities, selected picks, alternatives, rain plans, page numbers632- Style consistently with the web app's color palette633634- Include packing list as a final section if generated635- Add a budget summary page at the end636637## Useful Lookups (webSearch)638639- `"[city] 3 day itinerary reddit"` — real traveler pacing, not SEO content640- `"rome2rio [city A] to [city B]"` — compares train/bus/flight/ferry with rough prices641642- `"numbeo cost of living [city]"` — meal/taxi/beer price baselines643- `"seat61 [country]"` — train travel bible, especially Europe/Asia644645- `"[attraction] skip the line"` — whether advance booking is actually necessary646647## Common Pitfalls to Avoid6486491. Don't hardcode venues without links — always include mapLink and websiteLink6502. Don't skip export functionality — users always want to take plans offline6516523. Don't forget group composition affects recommendations — babies need stroller access, elderly need less walking6534. Don't build desktop-first — travelers use their phones6546555. Don't lose selection state on refresh — persist with localStorage or backend6566. Don't try to build booking into the app — link to booking platforms instead6576587. Don't ignore travel times — a day with 4 activities spread across a region may not be realistic6598. Don't recommend venues without checking seasonal availability — a summer beach activity shouldn't appear in a winter itinerary6606619. Don't show prices only in local currency — international travelers need conversion66210. Don't treat multi-region trips as a flat list — segment by region with clear transfer days66366411. Don't forget packing needs change with activities — hiking gear, swimming gear, and fine dining outfits are all different66512. Don't search for flights without knowing the origin city666667## Limitations668669- Can't see live prices/availability — user must verify before booking670- Visa rules change — always confirm on official government sites671672- Can't book anything