Synapse Travel Plan
Inspiration
Our inspiration came from a shared frustration with modern travel planning. The process has become a digital chore, forcing us to juggle a dozen browser tabs—one for hotels, another for restaurant reviews, and several more for unique tours and activities. The result is often a generic, cookie-cutter vacation that doesn't truly reflect our personal tastes.
We wanted to build a tool that eliminates the chaos and creates a trip that feels less like a checklist and more like an experience designed just for you. We envisioned a single platform where a user's unique cultural vibe could be the starting point for a truly personalized, budget-aware, and seamlessly planned adventure.
What It Does
Synapse Travel Plan is an intelligent, privacy-first web application that crafts bespoke travel itineraries. Instead of just asking for a destination and dates, we start with a user's cultural DNA: their favorite music, movies, artists, and food.
Our backend then:
- Translates these abstract tastes into a concrete taste profile using Qloo's Taste AI™.
- Fetches culturally-aligned points of interest, real-time hotel availability and pricing from Amadeus, and weather forecasts from OpenWeather.
- Feeds all of this structured data to a Google Gemini model, which acts as an expert travel agent.
- The LLM synthesizes this information into a coherent, day-by-day itinerary, complete with weather-appropriate activity suggestions and a detailed rationale for every choice.
The output is a single, elegant travel plan that is:
- Deeply personalized
- Budget-aware
- Ready to go
How We Built It
Backend Stack:
- FastAPI – High-speed framework with automatic data validation and API docs
- Pydantic – Data parsing and validation
- Asyncio – For asynchronous I/O and performance
Architecture:
- Modular, service-oriented backend.
- Each external API (Qloo, Amadeus, OpenWeather) is wrapped in its own dedicated service module:
qloo_service.pytravel_data_service.pyllm_orchestrator.py
Data Pipeline & AI Flow:
- FastAPI receives request →
main.py - Asyncio makes parallel API calls to Qloo, Amadeus, and OpenWeather.
qloo_service: Converts user likes into a taste profile & finds relevant points of interest.travel_data_service: Fetches hotels and weather forecast.llm_orchestrator.py:- Constructs a dynamic, structured prompt
- Sends it to Google Gemini Pro
- Receives a structured JSON itinerary from the model
Challenges We Ran Into
1. API Authentication & Endpoints
- Encountered a
401 Invalid API Keyerror with OpenWeather. - The problem wasn’t the key but the unsupported geocoding endpoint.
- Switched to the direct forecast endpoint, simplifying the logic.
2. Graceful Failure
- Viator API key was non-functional.
- Designed
main.pyto treat Viator as optional:- Logs a warning
- Continues the flow without crashing the system
3. Prompt Engineering
- Getting Gemini to return structured JSON reliably was difficult.
- We refined
prompt.txtmultiple times:- Added explicit format rules
- Included schema definitions
- Used clear examples
Accomplishments We're Proud Of
- Asynchronous Integration: Reduced latency with parallel API calls
- Intelligent Synthesis: Transformed abstract cultural data into a tangible plan
- Weather-Aware Planning: Itinerary adapts to the forecast
- Modular, Robust Design: Easy to maintain and extend
What We Learned
- Asyncio Mastery: Learned to build fast, I/O-bound applications using
async/await. - Real-World API Integration: From debugging auth errors to handling rate limits and JSON quirks.
- Advanced Prompt Engineering: Evolved from simple prompts to multi-layered, logic-driven instruction sets.
- Modular Architecture: Reinforced the importance of decoupling logic for better resilience.
What's Next for Synapse Travel Plan
Short-Term Goals
- Replace Viator API: Integrate a working activities provider
- Constraint Solver: Final validation layer in
constraint_solver.pyto ensure budget compliance
Frontend Development
- Tech stack: Next.js + Tailwind CSS
- Features:
- Interactive map using Mapbox
- Intuitive itinerary viewer
Persistence & Iterability
- PostgreSQL Database: Save user requests & plans
- Regeneration Tools:
- One-click itinerary regenerate
- Swap activity functionality
Current Latency Issue (To Be Solved)
- Problem: Right now, the full itinerary generation process is slow and can take a very long time to complete.
- Plan: We will optimize response time in two major ways:
- Refine prompt size and processing load for the LLM to improve generation speed.
- Add caching layers and pre-fetching mechanisms for frequent data requests (e.g., hotel info and weather).
- In the future, Synapse will deliver high-quality plans within seconds, making it fast enough for real-time usage.
Built With
- amadeus-api
- amazon-web-services
- css
- html
- javascript
- mapbox
- openweather-api
- python
- qloo-api
- typescript
Log in or sign up for Devpost to join the conversation.