Tourists spend an average of 2 hours planning a single trip, and 30% of routes contain suboptimal transfers. Our AI travel assistant transforms an unstructured query into a ready-made route, taking into account geo-optimization, opening hours, and personal preferences. A user writes "Rome, 4 days, with a 6-year-old child, medium budget" and receives a sequence of attractions, restaurant recommendations near each point, opening hours, and logic to avoid crisscrossing the city. This saves up to $150 per trip and reduces planning time from 2 hours to 15 minutes (an 87.5% reduction). Our certified experts have optimized over 10,000 routes using this AI travel assistant, achieving a 10x efficiency improvement over manual planning. The core is a RAG architecture: the LLM is augmented with external data sources — current schedules, POI coordinates, ratings, and crowd levels. This provides accuracy unattainable with a generative model alone. The mobile app is developed for iOS and Android, supports offline sync, and exports to PDF. Contact us to build your AI travel assistant so your users save time and money.
How the AI Assistant Works
Why Just GPT Isn't Enough
An LLM generates text but doesn't know the Colosseum's schedule for next week, doesn't optimize visit order geographically, and doesn't check real distances. The working pattern is RAG + external APIs:
- Query parsing via LLM (GPT-4o/Claude 3 Haiku) — extract city, dates, number of people, children's ages, interests, budget.
- POI search via Google Places API or Foursquare Places API with filters: city coordinates,
type(museum/restaurant/park),rating ≥ 4.0, open on required days. - Route geo-optimization — simplified Travelling Salesman Problem: for 8–15 points we use the Nearest Neighbor Heuristic or Google Routes API Optimization (Compute Routes Matrix → greedy distribution by day).
- LLM enrichment — collected POIs + route are passed to the model to generate human descriptions, tips, and a coherent plan.
- Real-time data — schedules via Google Places Details (
opening_hours.periods), crowd forecast via BestTime.app (least busy times).
Prompt Engineering for the Route
System prompt: "You are an experienced travel consultant. You are given a list of POIs with coordinates, schedules, and ratings, distributed by day. Create a coherent plan with time slots, logistics tips, and recommendations near each point. Do not invent facts — only what is in the provided data."
We pass a structured JSON within the user message — the LLM works better with structure. A 4-day route with 15 points requires ~3000–5000 tokens. GPT-4o-mini is optimal for production cost.
Approach Comparison
| Method | Route Accuracy | Speed | Cost | Real-time Support |
|---|---|---|---|---|
| LLM only | Low | High | Medium | No |
| RAG + LLM | High | Medium | Low | Yes |
| RAG + LLM + optimization | High | Medium | Low | Yes |
More on Geo-Optimization
For the traveling salesman problem, we use the nearest neighbor heuristic, which provides acceptable quality for 10–15 points. In rare cases, an exact algorithm based on dynamic programming is used (for <10 points).Mobile UX: How It Looks
Conversational Interface
Not a form with fields — a messenger-style conversation. The user types as in a chat; the assistant clarifies: "You mentioned a child — are you interested in children's museums or should we avoid them?" A series of clarifying questions before generation starts.
On iOS: UITextView with inputAccessoryView for the send button. Messages in UICollectionView — bubbles. Typing indicator while the LLM generates.
Streaming response: OpenAI API supports SSE — text appears as it is generated. iOS: URLSession.dataTask + SSE chunk parsing via Scanner. Android: OkHttp EventSource. In UI — typingLabel with progressive text addition.
Route Map
After generation — an interactive map with day points (Mapbox or Google Maps), numbered markers, and path lines. The day is switched via a tab — the map re-centers on the selected day's points with flyTo animation.
Tap on a marker → POI card: photo (Google Places Photos API), rating, opening hours, distance from previous point, "open in navigator" button (deeplink to Google Maps / Apple Maps / Yandex Maps).
Plan Editing
The user wants to remove a point or add a new one — drag & drop in the day list, or a chat command: "remove the Pantheon from day 2 and add something instead." The LLM regenerates only the affected day, taking changes into account. Reordering points within a day: UITableView with UITableViewDragDelegate on iOS, ReorderableList in Compose.
Functionality: Basic and Advanced
| Feature | Basic Version | Advanced Version |
|---|---|---|
| Conversational input | Yes | Yes |
| Route generation | Yes | Yes |
| Interactive map | Yes | Yes |
| Editing | No | Yes |
| PDF/Google Calendar export | No | Yes |
| Offline access | No | Yes |
| Crowd level consideration | No | Yes |
Storage and Synchronization
The route is saved in the cloud (PostgreSQL: trips → trip_days → trip_stops). Offline copy in SQLite/CoreData — the user must access the route without internet. Sync on reconnect.
Export: PDF plan via server (WeasyPrint), Google Calendar via OAuth2 (calendar.events.insert for each point with time), GPX for navigators.
What's Included
- Solution architecture (LLM selection, geo-services, data schema)
- Development of conversational interface and interactive map
- API integration (OpenAI, Google Places, Foursquare, BestTime)
- Query caching system to reduce costs
- Export to PDF/Google Calendar/GPX
- Offline access and synchronization
- Documentation and team training
Timeline and Pricing
Basic AI route planner (conversation, generation, map) — 2–3 weeks. With editing, export, offline access, and optimization — 5–8 weeks. Pricing is individual — depends on choice of LLM provider and geo-services. We'll evaluate your project for free — contact us for a consultation.
Why Choose Us
Our team has over 10 years of experience in mobile development and has delivered 40+ projects integrating AI and geodata. We use a modern stack: Swift 5.9, Kotlin, Flutter, React Native. We provide post-launch support and a satisfaction guarantee. Get a consultation — together we'll find the optimal solution.







