Built for a friend who loves travelling but hates planning. ✈️🌍
TripBuddy is a personalized AI travel planning agent that turns a simple natural-language travel request into a complete, preference-aware travel plan.
This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend.
🧳 What I Built
I built TripBuddy, a personalized AI travel planning agent for a friend who loves travelling but absolutely hates planning.
Instead of searching through dozens of tabs for flights, hotels, restaurants, attractions, and transportation, TripBuddy lets you describe your trip naturally and handles the planning process for you.
For example:
"I want to spend 5 days in Manali starting from Delhi. My budget is ₹15,000. I love photography, nature and cafes, and I hate waking up early."
TripBuddy takes those preferences and coordinates multiple specialized agents to create a personalized travel plan.
✨ What TripBuddy Can Do
- ✈️ Flight and route research
- 🏨 Accommodation recommendations
- 🗺️ Day-by-day itineraries
- 🍜 Restaurant and food suggestions
- 🚆 Local transportation options
- 💰 Budget-aware planning
- 📍 Location-based recommendations
- 💡 Personalized travel tips
The goal was simple:
Make trip planning feel less like work and more like talking to a friend who knows how you travel.
🌐 Demo
🚀 Live Demo
💻 Source Code
The project is open source and includes the complete LangGraph workflow, agent implementations, tools, Streamlit interface, configuration, and tests.
🧠 How I Built It
TripBuddy is built around an open-weight AI model accessed through OpenRouter.
The core architecture uses LangGraph to orchestrate multiple specialized agents through a shared state.
🔄 Agent Workflow
User Request
│
▼
┌─────────────────┐
│ Orchestrator │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Flight Agent │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Hotel Agent │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Itinerary Agent │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Synthesizer │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Personalized │
│ Travel Plan │
└─────────────────┘
🧠 Orchestrator
The orchestrator is the first step in the TripBuddy workflow.
It takes the user's natural-language travel request and extracts the important trip information needed by the specialist agents.
It identifies things such as:
- 📍 Destination
- 📅 Duration
- 💰 Budget
- 🛫 Origin
- 🎨 Interests
- 🧳 Travel style
- 🚫 Dislikes
- ⭐ Special preferences
For example, a request like:
"I want to spend 5 days in Manali starting from Delhi. My budget is ₹15,000. I love photography, nature and cafes, and I hate waking up early."
is converted into structured travel information that the rest of the workflow can use.
✈️ Flight Agent
The Flight Agent specializes in researching transportation options for the trip.
It uses Tavily Search to search the web for relevant travel information, including:
- ✈️ Flight options
- 🛫 Routes
- 🏷️ Airlines
- 💰 Estimated prices
- ⏱️ Flight durations
- 🔄 Return options
- 📌 Booking considerations
The goal is to provide transportation information that fits the user's destination, origin, dates, and budget.
🏨 Hotel Agent
The Hotel Agent focuses on finding accommodation that matches the user's trip requirements.
It researches accommodation options based on:
- 💰 Budget
- 📍 Location
- 🏙️ Neighborhood
- ⭐ Accommodation type
- 🛏️ Amenities
- 🚶 Distance from attractions
- 🧳 Travel preferences
The agent uses Tavily Search to gather current information from the web and provide relevant accommodation suggestions.
🗺️ Itinerary Agent
The Itinerary Agent turns the trip requirements into a practical day-by-day itinerary.
It combines web research with location information from OpenStreetMap and Nominatim to discover relevant places and organize them into a realistic route.
The itinerary can include:
- 📅 Daily activities
- 📍 Attractions
- 🍜 Restaurants
- ☕ Cafes
- 🚆 Local transportation
- 💰 Estimated costs
- ⏰ Suggested timing
- 💡 Practical travel tips
The agent also takes the user's personal preferences into account.
For example, someone who dislikes early mornings shouldn't receive an itinerary starting at 6:00 AM every day.
✨ Synthesizer
The Synthesizer is the final stage of the workflow.
It receives the information generated by the specialist agents and combines everything into one structured travel plan.
Instead of returning several disconnected agent responses, the Synthesizer produces a single Markdown-formatted plan containing sections such as:
- 🧳 Trip Overview
- ✈️ Transportation
- 🏨 Accommodation
- 🗺️ Day-by-Day Itinerary
- 🍜 Food Recommendations
- 🚆 Local Transportation
- 💰 Budget Breakdown
- 💡 Personalized Travel Tips
This creates one cohesive result that the user can actually use to plan their trip.
🛠️ Tech Stack
| Technology | Purpose |
|---|---|
| 🐍 Python | Core programming language |
| 🧠 LangGraph | Multi-agent workflow orchestration |
| 🔗 LangChain | LLM and agent framework |
| 🤖 OpenRouter | LLM routing and model experimentation |
| 🧩 Open-weight LLMs | AI reasoning and travel planning |
| 🔎 Tavily | Real-time web search |
| 🗺️ OpenStreetMap | Open geographic data |
| 📍 Nominatim | Geocoding and location search |
| 🌐 geopy | Geolocation utilities |
| 🎨 Streamlit | Web application and chat interface |
| 🧪 pytest | Automated testing |
Why Does Open Innovation Matter?
Open innovation made it possible to build TripBuddy as a modular AI system rather than locking the entire application to one model or provider.
Using open-weight models through OpenRouter means I can experiment with different models while keeping the rest of the agent architecture largely unchanged.
That flexibility is especially useful for a project like TripBuddy because travel planning involves several different tasks: extracting user preferences, searching information, reasoning about budgets, and generating structured itineraries.
The open ecosystem also makes the project easier to experiment with, modify, and contribute to.
Instead of building a black-box application around a single model, the architecture separates the LLM, agent orchestration, search tools, location services, and UI.
That means contributors can improve individual parts of the system without having to rebuild everything from scratch.
Prize Categories
- Overall Winner
- Best Use of Gemma
Top comments (0)