Overview:
HolidayPlanner is a modular, agentic AI system that automates the entire travel-planning workflow from user preferences to itinerary creation by using LangGraph-based orchestration, FastAPI, and a Streamlit UI.
This publication represents the Production-Ready System (Module 3), integrating agents, logging, observability, containerization, and deployment on Railway.
Travel planning is tedious users juggle weather checks, cost estimates, activities, and hotel searches. Existing tools are either generic or static.
Goal: Build a fully automated, intelligent planner that adapts to user goals, budgets, and recommended places to visit in real-time through a network of autonomous agents.
HolidayPlanner is built as a multi-agent system using LangGraph for orchestration. Each agent performs a specialized task and passes data downstream.
Core Components:
Agents:
π§ββοΈ UserInputAgent: Gathers user preferences such as budget, duration, and interests.
π DestinationAgent: Suggests travel destinations based on user input and external APIs (Yelp/OpenWeather).
βοΈ WeatherAgent: Retrieves real-time weather forecasts using the OpenWeather API.
π
ItineraryAgent: Builds a detailed itinerary from destination and weather data.
π° BudgetAgent: Calculates expected travel costs and ensures they stay within the userβs budget.
π§Ύ ResultAggregator: Combines all outputs into a final summary report.
Orchestration Layer:
The agents are connected in a LangGraph workflow (orchestration/langgraph_flow.py).
Data flows sequentially across agents.
Execution is logged and monitored using MetricsTracker.
Architecture Diagram

Workflow Orchestration:
Implemented via LangGraph, connecting agents as nodes in a directed flow.
Data and decisions propagate forward automatically.
Execution metadata logged through a centralized MetricsTracker.
Visualization is stored by flow diagram in data/graphs/holiday_planner_flow.png using NetworkX + Matplotlib.
Technical Stack:
Backend uses FastAPI, LangGraph
UI uses Streamlit
Deployment by Railway
Monitoring & Logging performed by Python logging, custom metrics_tool.py
APIs are monitored by OpenWeather, Yelp (via MCPClient)
Production-Ready Enhancements:
Dockerized setup with Dockerfile.
Modular directory structure for agents, tools, and orchestration
Metrics & Logs stored in /data/metrics and /logs
Custom error handling in each agent
Secure API key management via .env
FastAPI backend with /plan endpoint for programmatic access
Streamlit UI for user-friendly interaction
Railway deployment-ready configuration
HolidayPlanner includes multiple layers of guardrails to ensure stability, security, and ethical data usage.
Test Setup:
Executed multiple travel scenarios (Tokyo, Jeddah, Paris) under varied budgets and durations.
Metric Description Result
All core components of the HolidayPlanner β Production Ready System were tested using pytest under Python 3.12.7. The goal was to ensure robustness, correctness, fairness, and consistent orchestration across agents, APIs, and tools.
End-to-End Tests:
Command: pytest tests/test_end_to_end.py
Result: test_api_plan_endpoint β PASSED in 2.81s
Confirms that the full itinerary pipeline executes successfully from user input β API β itinerary generation β output storage.
API Layer Tests:
Command: pytest tests/test_api.py
Results: test_health_check β PASSED
test_plan_route β PASSED
Ensures that the FastAPI backend endpoints respond correctly and return valid structured JSON.
Execution Time: 3.64s
Tool Utility Tests:
Command: pytest tests/test_tools.py
Results: test_mcp_client_call β PASSED
test_metrics_tracker β PASSED
Validates that internal utilities (MetricsTracker, MCP client, etc.) are logging, saving, and returning values as expected.
Execution Time: 0.12s
Integration Tests:
Command: pytest tests/test_integration.py
Result: test_integration_agent_metrics β PASSED in 3.09s
Confirms seamless interaction between agents, ensuring that metrics tracking and LangGraph orchestration work end-to-end.
Fairness and Diversity Tests:
Command: pytest tests/test_fairness.py
Results: test_budget_fairness[1000-budget] β PASSED
test_budget_fairness[5000-mixed] β PASSED
test_budget_fairness[10000-luxury] β PASSED
test_destination_diversity β PASSED
Confirms the AI agents produce balanced, unbiased itineraries across varying budgets and locations.
Execution Time: 15.38s
Agent Workflow Tests:
Command: pytest tests/test_agents.py -v
Results: test_run_holiday_planner_valid β PASSED
test_run_holiday_planner_invalid_budget β PASSED
test_run_holiday_planner_zero_budget β PASSED
Confirms that agent logic gracefully handles both valid and invalid input scenarios without breaking orchestration.
Execution Time: 3.01s
Outcome:
All 13 tests passed successfully with zero critical issues.
The project demonstrates:
Full API and orchestration stability
Reliable metrics logging and fairness evaluation
Agent-level fault tolerance
End-to-end reproducibility
The syatem runs locally:
uvicorn api.main_api
The system runs in a containerized environment:
docker build -t holidayplanner
For cloud deployment, push the repo to GitHub and connect it to Railway.app.
For railway deployment follow thses simp
Push the repo to GitHub
Go to Railway.app
β βNew Projectβ β βDeploy from GitHubβ
Add environment variables from .env
Railway auto-builds your Docker image
Access UI via Railway-generated URL
Streamlit UI features:
Input fields for destination, budget, and duration
Displays itinerary, weather, and cost summary
Integrated metrics summary and logs viewer
Component Status:
β
Agents pipeline execution Complete
β
Graph visualization Generated
β
Logs & metrics Stored
β
Docker containerization Successful
β
Railway deployment Ready
π Overall system stability 100 % verified
HolidayPlanner is a production-grade AI system demonstrating:
1.Modular agent-based design
2.Real-time data integration
3.Robust guardrails
4.Seamless observability
5.Fully containerized deployment
This project illustrates how LangGraph, FastAPI, and Streamlit can collaborate to create scalable, transparent, and safe AI automation systems for real-world use.