
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:
- Extracts the destination, origin, duration, budget, and preferences.
- Retrieves relevant flight, accommodation, and weather information.
- Generates a draft itinerary.
- Pauses for human approval.
- Revises the draft when feedback is provided.
- 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.pyweather_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.