← Back to portfolio View on GitHub ↗

NomadAgent Logo

NomadAgent

Describe your trip in plain language, watch AI research it in real time, and receive a verified itinerary.

Features Tech Stack Architecture

License Python 3.10+ Flutter 3.11+ FastAPI


Overview

NomadAgent is an AI-powered travel research agent that turns natural-language trip descriptions into fully verified itineraries. You describe where you want to go, what you're interested in, and how long you're staying — then watch in real time as the agent plans research tasks, searches the web, extracts structured venue data, and compiles a day-by-day itinerary with coordinates, opening hours, and source citations.

Built with a Flutter mobile frontend and a Python FastAPI backend powered by LangGraph and Google Gemini, NomadAgent demonstrates how agentic AI pipelines can solve real-world planning problems end to end.

Features

Demo

Home Screen Home with Prompt Event Streaming Itinerary View Map View
Home Screen Home with Prompt Event Streaming Itinerary View Map View

Video Demo: Full end-to-end generation for this test prompt:

"I'm planning a weekend trip to Barcelona next month. I'm interested in food and history. I have 2 days and a budget of $500."

Generation time: ~46 seconds (edited for brevity)

Watch the demo video


Tech Stack

Layer Technology
Mobile App Flutter 3.11+ · Dart · Riverpod · GoRouter · Flutter Map
Backend API Python 3.10+ · FastAPI · Uvicorn · SSE-Starlette
Agent Pipeline LangGraph · LangChain Google GenAI (Gemini)
Web Search Tavily Python SDK
Data Validation Pydantic v2 · Pydantic Settings
Code Quality Ruff (linter + formatter) · Pytest · flutter_lints

Architecture

┌─────────────────────────────────────────────────────────┐
│                    Flutter Mobile App                    │
│         (Riverpod · GoRouter · Flutter Map)              │
│                                                         │
│  Home → Generation (SSE) → Itinerary → Map → PDF Export │
└────────────────────────┬────────────────────────────────┘
│ SSE (Server-Sent Events)
▼
┌─────────────────────────────────────────────────────────┐
│                   FastAPI Backend                        │
│              POST /api/v1/generate                       │
│              GET  /api/v1/health                         │
├─────────────────────────────────────────────────────────┤
│                 LangGraph Agent Pipeline                 │
│                                                         │
│  ┌──────────┐   ┌────────────┐   ┌───────────┐         │
│  │ Planner  │──▶│ Researcher │──▶│ Extractor │         │
│  │ (Gemini) │   │  (Tavily)  │   │  (Gemini) │         │
│  └──────────┘   └────────────┘   └─────┬─────┘         │
│                                        │               │
│                                  ┌─────▼─────┐         │
│                                  │  Compiler  │         │
│                                  │  (Gemini)  │         │
│                                  └───────────┘         │
└─────────────────────────────────────────────────────────┘

Pipeline flow:

  1. Planner — Parses the user prompt, identifies the destination, duration, and interest categories, then generates up to 3 focused research tasks
  2. Researcher — Executes Tavily web searches for each task with relevance scoring and result deduplication
  3. Extractor — Runs parallel Gemini calls to extract structured venue data (name, coordinates, address, hours, description, source URL) from raw search content
  4. Compiler — Assembles verified venues into a day-by-day itinerary with logistics and time estimates