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.py
    • travel_data_service.py
    • llm_orchestrator.py

Data Pipeline & AI Flow:

  1. FastAPI receives request → main.py
  2. Asyncio makes parallel API calls to Qloo, Amadeus, and OpenWeather.
  3. qloo_service: Converts user likes into a taste profile & finds relevant points of interest.
  4. travel_data_service: Fetches hotels and weather forecast.
  5. 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 Key error 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.py to 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.txt multiple 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.py to 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:
    1. Refine prompt size and processing load for the LLM to improve generation speed.
    2. 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

Share this project:

Updates