TravelSmith is an AI-powered group travel planning platform where multiple users collaborate through real-time chat with an intelligent agent that learns individual preferences and searches across travel APIs to provide personalized recommendations. The AI maintains conversation context, suggests options satisfying the group's collective constraints, and facilitates decision-making through integrated polling and expense tracking.
Build a real-time collaborative travel planning application where an AI agent assists groups in organizing trips by providing context-aware recommendations based on individual preferences, live chat conversations, and historical context.
- Conversational Interface: Natural language interaction with @ai_agent mentions
- Context-Aware Intelligence: Recommendations based on user preferences, recent chat, and conversation history
- Multi-API Integration: Google Maps, Booking.com, Foursquare, Ticketmaster
- Tool-Based Search: Executes real searches for flights, hotels, restaurants, and activities
- Powered by: Gpt via Dedalus SDK
- Real-time Chat: Live group conversations with Supabase synchronization
- Preference Onboarding: Individual travel profiles (budget, dates, interests, dietary restrictions)s
- Expense Tracking: Shared cost management and budget recommendations
- Flight Search: Real-time availability and pricing via Kiwi.com API
- Hotel Discovery: Location-based search with Google Maps integration
- Restaurant Recommendations: Dietary-aware suggestions
- Activity Planning: Event discovery via Ticketmaster
- Budget Management: Expense tracking and recommendations
- Parallel API Processing: 7-8x speedup with ThreadPoolExecutor
- Type-Safe APIs: Pydantic schemas for validation
- Real-time Updates: Live synchronization across all group members
TravelProject/
βββ backend/ # FastAPI Backend
β βββ agent/ # AI Agent Core
β β βββ dedalus_client.py # Dedalus SDK wrapper
β β βββ runner.py # Agent orchestration
β β βββ prompts/ # Domain-specific prompts
β β β βββ system_claude.txt
β β β βββ domain_flights.txt
β β β βββ domain_hotels.txt
β β β βββ domain_restaurants.txt
β β β βββ examples.json
β β βββ tools/ # Agent tool implementations
β β βββ google_maps.py # Places, directions, geocoding
β β βββ kiwi_flights.py # Flight search
β β βββ rapidapi_search.py # Hotel search
β β βββ preferences.py # User preference management
β β βββ polls.py # Voting system
β βββ routes/ # API Endpoints
β β βββ agent.py # AI chat endpoint
β β βββ groups.py # Group management
β β βββ messages.py # Chat messages
β β βββ preferences.py # Preference CRUD
β β βββ polls.py # Poll operations
β β βββ expenses.py # Expense tracking
β βββ models/ # Data Models
β β βββ schemas.py # Pydantic schemas
β β βββ db_models.py # Database models
β βββ core/ # Configuration
β β βββ config.py # Environment settings
β β βββ database.py # Supabase client
β βββ utils/ # Utilities
β β βββ supabase_client.py
β β βββ message_utils.py
β βββ test/ # Test Suite
β βββ main.py # FastAPI app entry point
β
βββ frontend/ # Next.js Frontend (in progress)
βββ app/
β βββ components/ # React components
β βββ lib/ # Frontend utilities
β βββ page.tsx # Main page
βββ ...
- Python 3.8+
- Node.js 18+ (for frontend)
- Supabase account and project
- API Keys:
- Dedalus API key (for Claude/Grok)
- Google Maps API key
- RapidAPI key (Booking.com)
- Kiwi.com API key (optional)
- Navigate to backend directory:
cd backend- Install dependencies:
pip install -r requirements.txt- Configure environment (create
.envfile):
# Supabase
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_KEY=your_service_key
# AI Agent
DEDALUS_API_BASE=https://api.dedalus.ai
DEDALUS_API_KEY=your_dedalus_key
# Travel APIs
GOOGLE_MAPS_API_KEY=your_google_maps_key
RAPIDAPI_KEY=your_rapidapi_key
KIWI_API_KEY=your_kiwi_key- Run the server:
uvicorn main:app --reloadAPI will be available at http://localhost:8000
- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install- Configure environment (create
.env.local):
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
NEXT_PUBLIC_API_URL=http://localhost:8000- Run development server:
npm run devFrontend will be available at http://localhost:3000
Group Management
POST /api/groups- Create new groupGET /api/groups/{group_id}- Get group detailsGET /api/groups- List all groupsDELETE /api/groups/{group_id}- Delete group
User & Preferences
POST /api/preferences- Save user preferencesGET /api/preferences/{group_id}- Get all group preferencesGET /api/preferences/{group_id}/{user_id}- Get user preferences
Chat & AI Agent
POST /api/messages- Send message to groupGET /api/messages/{group_id}- Get chat historyPOST /api/agent/chat- Interact with AI agent
Collaboration Tools
POST /api/polls- Create pollPOST /api/polls/{poll_id}/vote- Vote on optionGET /api/polls/{group_id}- Get group pollsPOST /api/expenses- Track expenseGET /api/expenses/{group_id}- Get group expenses
The agent has access to 10+ specialized tools:
search_flights- Find flights matching budget and datesfind_stays- Search hotels near destinationsearch_restaurants- Get dining recommendations with dietary filtersfind_attractions- Discover activities and tourist spotsfind_events- Search concerts, sports, theater via Ticketmasterget_directions- Calculate routes and travel timeget_user_preferences- Access individual travel preferencesget_group_preferences- Analyze group consensuscreate_poll- Generate decision polls
Stored in Supabase database:
- Budget constraints and spending limits
- Available travel dates (start/end)
- Interests (museums, nightlife, nature, etc.)
- Dietary restrictions (vegetarian, gluten-free, allergies)
- Preferred travel pace (fast-paced, moderate, relaxed)
- Departure city and destination preferences
Supabase integration enables:
- Live message synchronization: See messages instantly across all devices
- Instant preference changes: Updates reflect immediately for the AI
- Collaborative expense tracking: Shared visibility of all group spending
# Navigate to backend
cd backend
# Run all tests
python -m pytest test/
# Test specific components
python -m pytest test/test_agent.py # AI agent functionality
python -m pytest test/test_preferences.py # Preference system
python -m pytest test/test_google_maps.py # Google Maps integration
python -m pytest test/test_kiwi_flights.py # Flight search
python -m pytest test/test_polls.py # Voting system- Framework: FastAPI
- AI Orchestration: Dedalus SDK
- LLM: Openai GPT 4.1
- Database: Supabase (PostgreSQL with real-time subscriptions)
- APIs: Google Maps, RapidAPI, Ticketmaster, Booking.com
- Validation: Pydantic v2
- Concurrency: Python concurrent.futures (ThreadPoolExecutor)
- Framework: Next.js 14
- Language: TypeScript
- Styling: Tailwind CSS
- Real-time: Supabase subscriptions
- Dedalus SDK for AI orchestration and tool calling
- OpenAI for natural language understanding
- Supabase for real-time database and authentication
- Google Maps API for location services
- RapidAPI for travel data aggregation
- HackPrinceton 2025 for the opportunity to build this project