Back to Projects
TripWeave - Multi-Agent Travel Planner

TripWeave - Multi-Agent Travel Planner

By Dheeraj Kumar Bhaskar • October 3, 2026

TripWeave is an AI-powered travel planning application that turns natural-language travel requests into focused research, a constraint-aware itinerary draft, and a reviewable final response.

It is built as a Python modular monolith using FastAPI, LangGraph, Groq, Model Context Protocol (MCP) integrations, and PostgreSQL-backed workflow checkpoints.

Methodology

TripWeave uses a request-aware multi-agent workflow rather than sending every request through the same fixed prompt.

User request
     │
     ▼
FastAPI API
     │
     ▼
LangGraph workflow
     │
     ▼
Supervisor and travel guardrail
     │
     ├── Flight agent ──► AviationStack MCP
     ├── Hotel agent  ──► Tavily MCP
     ├── Weather agent ─► OpenWeather MCP
     ├── Budget agent ──► Groq LLM
     └── Itinerary agent ─► Groq LLM
                                  │
                                  ▼
                         Human approval interrupt
                                  │
                                  ▼
                            Final response

Agent Responsibilities

  • Supervisor: Determines whether the request is travel-related and selects the required agents.
  • Flight Agent: Searches live flight and route information.
  • Hotel Agent: Researches accommodation and relevant travel information.
  • Weather Agent: Retrieves current weather and short-term forecast information.
  • Budget Agent: Analyzes estimated costs, feasibility, and trade-offs.
  • Itinerary Agent: Creates a day-by-day itinerary draft.
  • Human Approval: Allows the user to approve the itinerary or request changes.
  • Final Agent: Produces the final response within the requested scope.

Description

TripWeave accepts natural-language requests such as:

Plan five days in Goa from Delhi under ₹40,000 with beaches, local food, and a relaxed pace.

The workflow extracts the requested scope and constraints, then invokes only the relevant specialist capabilities.

For example, a focused question such as:

What will the weather be like in Tokyo next week?

does not automatically trigger hotel research or itinerary generation.

For a complete itinerary request, TripWeave:

  1. Extracts the destination, origin, duration, budget, and preferences.
  2. Retrieves relevant flight, accommodation, and weather information.
  3. Generates a draft itinerary.
  4. Pauses for human approval.
  5. Revises the draft when feedback is provided.
  6. Returns the final response after the workflow resumes.

MCP Integration

TripWeave uses Model Context Protocol (MCP) to connect specialist agents with external tools and data providers.

Agent
  │
  ▼
mcp_client.py
  ├── Tavily hosted MCP
  ├── AviationStack local MCP server
  └── Weather local MCP server
        │
        ▼
   External provider APIs

Local MCP adapters include:

  • flight_mcp_server.py
  • weather_mcp_server.py

The workflow state is checkpointed in PostgreSQL, allowing approval requests to be resumed using the same thread_id.

Technologies

  • Backend: FastAPI, Uvicorn
  • Agent Orchestration: LangGraph
  • Language Model: Groq through LangChain
  • Tool Integration: Model Context Protocol (MCP)
  • Flight Data: AviationStack
  • Web Research: Tavily
  • Weather Data: OpenWeather
  • Persistence: PostgreSQL, LangGraph Checkpointing
  • Frontend: HTML, Vanilla JavaScript, CSS

Input / Output

TripWeave accepts natural-language travel requests through the web interface or API.

Example input:

{
  "message": "Plan 5 days in Goa from Delhi under ₹40,000 with beaches and local food"
}

It also supports approval and revision requests for an existing workflow:

{
  "thread_id": "user_<thread-id>",
  "approved": false,
  "feedback": "Make day two slower and add more local food."
}

The API returns structured information including the generated response, workflow state, selected agents, extracted trip constraints, and any constraint warnings.

Example:

{
  "success": true,
  "thread_id": "user_<thread-id>",
  "answer": "Your final travel response...",
  "requires_approval": true,
  "approval_request": "Approve this itinerary or provide feedback.",
  "selected_agents": [
    "flight_agent",
    "hotel_agent",
    "weather_agent",
    "budget_agent",
    "itinerary_agent"
  ],
  "trip_constraints": {
    "destination": "Goa",
    "origin": "Delhi",
    "duration": "5 days",
    "budget": "₹40,000"
  },
  "constraint_warnings": []
}

Architecture

View the TripWeave architecture diagram

Live Demo

https://tripweave.dheerajbhaskar.dev

Current Limitations

  • Flight lookup provides live/status information, but not reliable ticket-fare comparison.
  • Flight, hotel, and weather retrieval currently follow the configured graph sequence instead of running concurrently.
  • Provider results are primarily passed between agents as text.
  • Deterministic checks for schedule overlap, opening hours, transfer time, and total budget are planned but are not yet implemented as a separate validation layer.
  • The repository currently has no automated test suite.

Repository

GitHub Repository