NomadAgent
An AI-powered travel research agent that generates verified itineraries from natural-language trip descriptions.
Overview
What it does
NomadAgent converts natural-language trip descriptions into verified travel itineraries. Users describe their destination, interests, and trip duration, while the agent researches the web, extracts venue information, verifies results, and produces a structured itinerary with citations.
The application consists of a Flutter mobile frontend and a Python FastAPI backend. An agent pipeline powered by LangGraph and Google Gemini coordinates planning, web research, structured data extraction, and itinerary compilation.
The mobile application provides real-time streaming of the agent's progress, an interactive map displaying verified venues, day-by-day itinerary views, and PDF export functionality for sharing completed travel plans.
Problem and solution
Problem
Raw web search results are not sufficient for producing accurate travel itineraries because they require structured venue information, verification, and organization into practical travel plans.
Solution
NomadAgent uses a multi-step agent pipeline to plan research tasks, search the web, extract structured venue data with Gemini, verify venues, and compile day-by-day itineraries with maps, coordinates, opening hours, and source citations.
Highlights
- 01 Natural language trip input
- 02 Multi-step agent pipeline
- 03 Real-time streaming with Server-Sent Events
- 04 Intelligent web research
- 05 LLM-powered venue data extraction
- 06 Venue verification
- 07 Interactive map view
- 08 Day-by-day itinerary generation
- 09 PDF export and sharing
Features
Natural Language Trip Input
Accepts trip descriptions in plain English and automatically identifies the destination, duration, and interests.
Multi-Step Agent Pipeline
Uses a planner, researcher, extractor, and compiler workflow orchestrated by LangGraph with state management.
Real-Time Streaming
Streams thought logs, venue verification events, and self-corrections to the mobile app using Server-Sent Events.
Intelligent Web Research
Searches the web using Tavily with hybrid relevance scoring to filter results.
LLM-Powered Data Extraction
Extracts structured venue information including coordinates, addresses, opening hours, and descriptions from web content.
Venue Verification
Applies tiered verification scoring with type-specific weighting for different venue categories.
Interactive Map View
Displays verified venues with coordinates on an interactive OpenStreetMap layer.
Day-by-Day Itinerary
Organizes verified venues into daily travel plans with logistics and estimated timing.
PDF Export & Sharing
Generates PDF itineraries that can be shared directly from the application.
Parallel Extraction
Runs concurrent LLM extraction tasks using asyncio.gather to reduce processing time.
Bounded Event History
Maintains a rolling event buffer with a monotonic cursor for efficient streaming.
Graceful Error Handling
Continues pipeline execution by skipping failed search tasks and handling service errors without blocking generation.
Architecture
A Flutter application that provides trip input, real-time generation, itinerary viewing, map visualization, and PDF export.
A FastAPI backend exposing health and itinerary generation endpoints while streaming updates with Server-Sent Events.
A LangGraph workflow consisting of planner, researcher, extractor, and compiler stages.
Uses Tavily for web search and Google Gemini for extraction and itinerary compilation.
Screenshots
Mobile
Swipe to view