{"id":"283e79c5-1239-4094-8351-ef3815db1df2","entityType":"agent","slug":"crewai-huzaifasaeed-travel-planner-crewai","name":"travel-planner-crewai","canonicalUrl":"https://www.xpersona.co/agent/crewai-huzaifasaeed-travel-planner-crewai","canonicalPath":"/agent/crewai-huzaifasaeed-travel-planner-crewai","generatedAt":"2026-10-10T07:11:04.192Z","source":"GITHUB_REPOS","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T22:22:10.641Z","emptyReason":null},"description":"Multi-agent travel planner built with CrewAI + Azure OpenAI. <img width=\"1804\" height=\"678\" alt=\"Screenshot 2026-04-30 at 4 57 17 PM\" src=\"https://github.com/user-attachments/assets/b1b4e082-7edd-40d7-9c05-080e010ce81e\" /> CrewAI Travel Planner Multi-agent travel planner built with CrewAI + Azure OpenAI. This project generates a structured, mobile-ready JSON itinerary using: - **Travel Researcher** (destination intelligence, weather, flights, stays, events) - **Finance Special","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. Last updated 10/9/2026.","installCommand":null,"sourceUrl":"https://github.com/huzaifasaeed/travel-planner-crewai","homepage":null,"primaryLinks":[{"label":"View Source","url":"https://github.com/huzaifasaeed/travel-planner-crewai","kind":"source"}],"safetyScore":66,"overallRank":18,"popularityScore":0,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Multi-agent travel planner built with CrewAI + Azure OpenAI. <img width=\"1804\" height=\"678\" alt=\"Screenshot 2026-04-30 at 4 57 17 PM\" src=\"https://github.com/us"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T22:22:10.641Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[{"label":"crewai","status":"self-declared"},{"label":"multi-agent","status":"self-declared"}],"verifiedCount":0,"selfDeclaredCount":3,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"},{"key":"crewai","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"},{"key":"multi-agent","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"}},"adoption":{"evidence":{"source":"no-adoption-signals","verified":false,"confidence":"low","updatedAt":"2026-10-09T22:22:10.641Z","emptyReason":"No source adoption metrics were available."},"stars":0,"forks":0,"downloads":null,"packageName":null,"latestVersion":null,"tractionLabel":null},"release":{"evidence":{"source":"agent-index","verified":false,"confidence":"medium","updatedAt":"2026-10-09T22:22:10.636Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T22:22:10.641Z","lastCrawledAt":"2026-10-09T22:22:10.636Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-16T22:22:10.636Z","lastVerifiedAt":null,"highlights":[]},"execution":{"evidence":{"source":"GITHUB REPOS","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":null,"setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/crewai-huzaifasaeed-travel-planner-crewai/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/crewai-huzaifasaeed-travel-planner-crewai/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/crewai-huzaifasaeed-travel-planner-crewai/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/crewai-huzaifasaeed-travel-planner-crewai/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/crewai-huzaifasaeed-travel-planner-crewai/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/crewai-huzaifasaeed-travel-planner-crewai/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"GITHUB_REPOS","generatedAt":"2026-10-10T07:11:04.191Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/crewai-huzaifasaeed-travel-planner-crewai/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/crewai-huzaifasaeed-travel-planner-crewai/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/crewai-huzaifasaeed-travel-planner-crewai/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/crewai-huzaifasaeed-travel-planner-crewai/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"GITHUB REPOS","verified":false,"confidence":"high","updatedAt":"2026-10-09T22:22:10.641Z","emptyReason":null},"readme":"<img width=\"1804\" height=\"678\" alt=\"Screenshot 2026-04-30 at 4 57 17 PM\" src=\"https://github.com/user-attachments/assets/b1b4e082-7edd-40d7-9c05-080e010ce81e\" />\n\n# CrewAI Travel Planner\n\nMulti-agent travel planner built with CrewAI + Azure OpenAI.\n\nThis project generates a structured, mobile-ready JSON itinerary using:\n- **Travel Researcher** (destination intelligence, weather, flights, stays, events)\n- **Finance Specialist** (budget feasibility and cost constraints)\n- **Lead Planner** (final day-by-day itinerary JSON)\n\nIt supports both:\n- a **CLI workflow** (`main.py`)\n- a **Streamlit web UI** (`streamlit_app.py`)\n\n---\n\n## What this project does\n\nGiven destination, budget, and trip length, the planner:\n- researches attractions and practical travel context\n- adds weather outlook and map links\n- creates official search links for flights and accommodations\n- checks whether daily costs fit your total budget\n- returns validated structured JSON that can be consumed by apps\n\nThe final output conforms to a strict schema (`TravelPlan` in `tasks.py`) with:\n- `destination`\n- `total_budget`\n- `trip_days`\n- `daily_itinerary` (one item per day, consecutive day numbers)\n- `booking_links` (HTTP/HTTPS links)\n\n---\n\n## Architecture overview\n\n### Core files\n\n- `main.py`: CLI entry point, argument parsing, Crew kickoff, JSON persistence\n- `streamlit_app.py`: interactive browser form + live run logs + human-readable itinerary\n- `agents.py`: defines the 3 CrewAI agents\n- `tasks.py`: task graph + Pydantic output models and validations\n- `travel_tools.py`: CrewAI tools exposed to agents\n- `integrations/travel_clients.py`: HTTP clients and formatter logic for external services\n- `config.py`: Azure OpenAI configuration and CrewAI-compatible LLM adapter\n- `env_overlay.py`: temporary environment key overrides (used by Streamlit advanced settings)\n\n### Crew process\n\nThe crew runs in **hierarchical** mode:\n1. Travel Researcher completes research task\n2. Finance Specialist evaluates budget using research context\n3. Lead Planner produces final structured `TravelPlan` JSON\n\nThe manager LLM and all agents use Azure OpenAI via the adapter in `config.py`.\n\n### How the multi-agent model works\n\nThe system is a role-based collaboration pipeline where each agent has a narrow responsibility and shared context:\n\n1. **Input normalization**\n   - CLI/UI collects `destination`, `budget`, `days`, `origin`, and dates.\n   - `main.py` computes timeline fields (`departure`, `return`, `check_in`, `check_out`) and passes them as Crew inputs.\n\n2. **Agent and task creation**\n   - `create_agents()` builds three agents with different goals and delegation settings.\n   - `create_tasks()` builds a dependency chain where later tasks consume earlier outputs.\n\n3. **Research phase (Travel Researcher)**\n   - Runs tool calls from `travel_tools.py` (maps, weather, flights, accommodation, events, optional web search).\n   - Produces a compact research brief with practical links and destination context.\n\n4. **Budget phase (Finance Specialist)**\n   - Receives research task output as context.\n   - Estimates spending pressure and defines budget constraints for the itinerary.\n\n5. **Planning phase (Lead Planner)**\n   - Receives both research and budget outputs.\n   - Generates final JSON constrained to exact `TravelPlan` schema requirements.\n\n6. **Hierarchical orchestration**\n   - Crew runs with `Process.hierarchical`, using a manager LLM to coordinate task progression.\n   - The manager does not replace specialist roles; it controls sequencing and coherence.\n\n7. **Structured-output validation and persistence**\n   - Output is parsed into Pydantic models (`TravelPlan`, `DailyItineraryItem`, `BookingLink`).\n   - Validation checks enforce day count, day ordering, URL format, and budget cap.\n   - On success, JSON is written to disk and returned to CLI/UI.\n\n8. **Live observability (Streamlit)**\n   - `streamlit_app.py` streams verbose Crew logs, infers active agent/task labels, and displays per-task activity.\n   - This makes the multi-agent decision flow visible during execution.\n\n---\n\n## External data sources and behavior\n\n### No-key sources\n\n- **OpenStreetMap Nominatim**: destination geocoding\n- **Open-Meteo**: 7-day weather forecast\n\n### Optional-key sources\n\n- **Tavily** (`TAVILY_API_KEY`): web search for attractions/tips/events supplementation\n- **Google Custom Search JSON API** (`GOOGLE_API_KEY` + `GOOGLE_CSE_ID`): event/result snippets\n\n### Link-based integrations (official sites)\n\nThis app intentionally generates official search links (instead of scraping or unofficial APIs):\n- **Google Flights / Google Travel** links\n- **Booking.com** search links\n- **Agoda** search links\n- **Hostelworld** search links\n- **Google Maps** search links\n\nFor local events, the planner always includes a standard browser URL:\n- `https://www.google.com/search?q=...`\n\n---\n\n## Prerequisites\n\n- Python 3.10+ recommended\n- Azure OpenAI deployment already created\n- Network access to public APIs and travel portals\n\n---\n\n## Installation\n\n1. Create and activate a virtual environment:\n\n```sh\npython -m venv .venv\nsource .venv/bin/activate\n```\n\n2. Install base dependencies:\n\n```sh\npip install -r requirements.txt\n```\n\n3. Copy environment template:\n\n```sh\ncp .env.example .env\n```\n\n4. Fill in required Azure values in `.env`.\n\n---\n\n## Environment variables\n\n### Required\n\n```env\nAZURE_OPENAI_API_KEY=your-api-key\nAZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/\nAZURE_OPENAI_DEPLOYMENT=your-deployment-name\nAZURE_OPENAI_API_VERSION=2024-02-01\n```\n\n### Optional\n\n```env\n# Tavily web search\nTAVILY_API_KEY=\n\n# Google programmable search snippets\nGOOGLE_API_KEY=\nGOOGLE_CSE_ID=\n```\n\nNotes:\n- If optional keys are missing, the app still runs with graceful fallbacks.\n- In Streamlit, you can override search keys for one run via the **Advanced** section.\n\n---\n\n## CLI usage\n\n### Command\n\n```sh\npython main.py \"Tokyo\" 2500 5 --origin \"San Francisco\" --departure-date 2026-06-15 --output output/tokyo_plan.json\n```\n\n### Positional arguments\n\n- `destination`: city/region to visit\n- `budget`: total trip budget (USD, must be > 0)\n- `days`: number of trip days (must be > 0)\n\n### Optional arguments\n\n- `--origin`: departure city (default: `Karachi`)\n- `--departure-date`: outbound date in `YYYY-MM-DD` (default: today + ~45 days)\n- `--output`: output JSON file path (default: `output/travel_plan.json`)\n\n### What happens on run\n\n- The app computes return/check-out dates from departure + day count\n- CrewAI agents execute the research/budget/planning pipeline\n- Output is validated against `TravelPlan`\n- JSON is saved to your chosen output path\n- Final JSON is also printed in the terminal\n\n---\n\n## Web UI usage (Streamlit)\n\nInstall Streamlit dependency and launch:\n\n```sh\npip install -r requirements.txt -r requirements-streamlit.txt\nstreamlit run streamlit_app.py --server.address 127.0.0.1\n```\n\nIn the UI you can:\n- enter destination, budget, days, origin, departure date, output path\n- optionally override search keys for just the current run\n- watch live agent/task progress logs\n- view a readable day-by-day itinerary and booking links\n- inspect per-task agent activity captured from CrewAI output\n\n---\n\n## Output schema\n\nGenerated JSON follows the `TravelPlan` model:\n\n- `destination: str`\n- `total_budget: float`\n- `trip_days: int`\n- `daily_itinerary: list[DailyItineraryItem]`\n  - `day`, `title`, `morning`, `afternoon`, `evening`, `estimated_cost`\n- `booking_links: list[BookingLink]`\n  - `label`, `url`, `category`\n\nValidation guards include:\n- itinerary length must equal `trip_days`\n- day numbers must be consecutive starting at 1\n- sum of `estimated_cost` must not exceed `total_budget`\n- booking URLs must start with `http://` or `https://`\n\n---\n\n## Limitations and practical notes\n\n- Flight and accommodation integrations are **search-link based**, not live inventory APIs.\n- Travel portal URL formats can change; adjust dates/filters on destination site if needed.\n- Respect provider terms and rate limits (especially Nominatim for repeated requests).\n- Google Programmable Search behavior may vary depending on engine configuration and scope.\n\nHelpful docs:\n- [Google Custom Search JSON API](https://developers.google.com/custom-search/v1/introduction)\n- [Programmable Search Engine updates](https://programmablesearchengine.googleblog.com/2026/01/updates-to-our-web-search-products.html)\n\n---\n\n## Troubleshooting\n\n- **`AZURE_OPENAI_* is required`**: verify required keys in `.env`.\n- **No Tavily results**: set `TAVILY_API_KEY` or continue without Tavily.\n- **No Google snippet results**: ensure both `GOOGLE_API_KEY` and `GOOGLE_CSE_ID` are valid.\n- **TLS/certificate issues**: project uses `certifi`; ensure dependency is installed.\n- **Schema validation failure**: rerun with same inputs; model output is validated strictly.\n\n---\n\n## Dependency files\n\n- `requirements.txt`: core runtime dependencies\n- `requirements-streamlit.txt`: Streamlit UI dependency\n\n","readmeExcerpt":"<img width=\"1804\" height=\"678\" alt=\"Screenshot 2026-04-30 at 4 57 17 PM\" src=\"https://github.com/user-attachments/assets/b1b4e082-7edd-40d7-9c05-080e010ce81e\" /> CrewAI Travel Planner Multi-agent travel planner built with CrewAI + Azure OpenAI. This project generates a structured, mobile-ready JSON itinerary using: - **Travel Researcher** (destination intelligence, weather, flights, stays, events) - **Finance Special","codeSnippets":[],"executableExamples":[{"language":"sh","snippet":"python -m venv .venv\nsource .venv/bin/activate"},{"language":"sh","snippet":"pip install -r requirements.txt"},{"language":"sh","snippet":"cp .env.example .env"},{"language":"env","snippet":"AZURE_OPENAI_API_KEY=your-api-key\nAZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/\nAZURE_OPENAI_DEPLOYMENT=your-deployment-name\nAZURE_OPENAI_API_VERSION=2024-02-01"},{"language":"env","snippet":"# Tavily web search\nTAVILY_API_KEY=\n\n# Google programmable search snippets\nGOOGLE_API_KEY=\nGOOGLE_CSE_ID="},{"language":"sh","snippet":"python main.py \"Tokyo\" 2500 5 --origin \"San Francisco\" --departure-date 2026-06-15 --output output/tokyo_plan.json"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[],"languages":["python"],"docsSourceLabel":"GITHUB REPOS","editorialOverview":"Multi-agent travel planner built with CrewAI + Azure OpenAI. <img width=\"1804\" height=\"678\" alt=\"Screenshot 2026-04-30 at 4 57 17 PM\" src=\"https://github.com/user-attachments/assets/b1b4e082-7edd-40d7-9c05-080e010ce81e\" /> CrewAI Travel Planner Multi-agent travel planner built with CrewAI + Azure OpenAI. This project generates a structured, mobile-ready JSON itinerary using: - **Travel Researcher** (destination intelligence, weather, flights, stays, events) - **Finance Special","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":380,"uniquenessScore":69,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T22:22:10.641Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T22:22:10.641Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:11:04.192Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/github_repos","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}