Inspiration

The inspiration for VibeVoyage came from a simple observation: modern travel planning is broken. It's a tedious process of stitching together disconnected lists of "top 10" attractions, resulting in generic itineraries that lack a personal story. We spend hours researching what to do, but often lose the why. This project aims to fix that by transforming the abstract, emotional "vibe" of a desired experience into a tangible, narrative-driven cultural journey. We wanted to build a system for the Qloo & Google Cloud AI Hackathon that goes beyond simple recommendations and instead acts as a creative co-pilot, using AI to craft stories that people want to live and share.

What it does

VibeVoyage is an intelligent story-generation engine that creates hyper-personalized travel itineraries based on a user's cultural tastes. Translates Vibes into Actionable Plans: It takes free-form text input (e.g., "a melancholic, rainy day in Tokyo inspired by noir films and jazz") and turns it into a cohesive, step-by-step cultural itinerary. Creates Narrative Journeys: Instead of a checklist, it produces a story. Each stop connects to the next, with evocative descriptions and cultural explanations that reveal the soul of the city. Unlocks Deep Cultural Context: Leveraging Qloo's Taste AI™, it explains why a specific location was chosen, linking it to the user's initial vibe and uncovering hidden cultural connections. Enriches with Real-World Data: It grounds its creative suggestions with practical, verified data from Google Places, including addresses, ratings, and photos. Generates Beautiful, Shareable Content: The final output is a visually rich, shareable webpage that users are proud to post, turning personal experiences into community inspiration.

How we built it

VibeVoyage is built on a modern, scalable architecture designed to orchestrate multiple AI and data services seamlessly. The core components are: Core Application & Frontend (Rails 8 & Hotwire): A robust backend built on Rails 8 serves the user interface. The frontend uses Hotwire/Turbo to provide a responsive, real-time experience, showing the user the step-by-step progress of their itinerary creation without page reloads. Workflow Orchestration (rdawn Engine): At the heart of the application is our custom rdawn workflow engine. When a user submits their vibe, rdawn initiates a multi-step, asynchronous process that coordinates calls to all external services, manages data flow, and handles errors. AI & Data Layer (LLM, Qloo, Google Places): LLM Service (OpenAI): The LLM is used for three critical tasks: 1) Natural Language Understanding to parse the user's initial vibe and extract key entities (city, interests, mood). 2) Creative Synthesis to generate the "Cultural DNA" profile, narrative descriptions, and cultural explanations. 3) Data Fusion to intelligently match conceptual recommendations from Qloo with real-world venues from Google Places. Qloo Taste AI™ API: After the LLM extracts core interests, we query Qloo’s API to get culturally relevant recommendations. Qloo provides the crucial "affinity data"—the context that explains why someone who likes jazz might also appreciate a specific historic bar or a vintage bookstore. Google Places API: Recommendations are enriched with practical, up-to-date information (addresses, photos, ratings, hours) to ensure the generated itinerary is immediately usable. Asynchronous Job Processing (Solid Queue & Redis): The entire multi-step itinerary generation process runs as a background job using Rails' Solid Queue, backed by Redis. This ensures the user interface remains responsive and the heavy lifting of AI processing happens asynchronously. Data Persistence (PostgreSQL): All generated itineraries, user profiles, and subscription data are stored in a PostgreSQL database, providing a reliable and scalable foundation.

Challenges we ran into

Prompt Engineering & Consistency: Getting the LLM to reliably extract structured data (city, interests) from highly abstract user input was a major challenge. Mitigation: We developed a multi-stage prompt chain. The first prompt focuses strictly on entity extraction with strong few-shot examples. Subsequent prompts are then fed this structured data, dramatically improving consistency and reducing hallucination. Fusing Conceptual and Factual Data: Qloo provides excellent conceptual recommendations (e.g., "a bar with a bohemian vibe"), while Google Places provides factual venues. Linking the two was difficult. Mitigation: We used the LLM as a "fuzzy matching" engine. It takes the Qloo concept and the top Google Places results as input and selects the best real-world match based on a combined analysis of descriptions, reviews, and categories. Managing Latency: The multi-step AI workflow can take several seconds. A simple loading spinner would lead to a poor user experience. Mitigation: We designed an engaging, real-time UI using Action Cable. The frontend subscribes to a channel and receives updates as the rdawn workflow progresses, showing the user exactly what the AI is "thinking" at each stage (e.g., "Analyzing vibe...", "Querying cultural oracle...", "Weaving narrative..."). This turns waiting time into part of the experience. Grounding LLM Creativity: Early versions had the LLM inventing places or details. Mitigation: We implemented a strict "grounding" policy. The LLM is only allowed to be creative with the narrative and explanations; all factual data (names, addresses, etc.) must come directly from the verified API responses of Qloo or Google Places, which are injected into the final prompt

Accomplishments that we're proud of

The rdawn Workflow Engine: Building a lightweight, native Rails workflow orchestrator was a significant accomplishment. It makes our complex, multi-API logic manageable, readable, and easy to extend. The "Cultural DNA" Feature: This concept effectively showcases the power of Qloo. By analyzing affinities, we can present users with unique insights into their own tastes (e.g., "Your love for classic cinema and craft cocktails gives you a 'Nostalgic Auteur' archetype"). Engaging Real-Time UI: We successfully turned a potentially slow backend process into a captivating user experience. Watching the itinerary build itself step-by-step is a core part of the product's "magic." High-Fidelity, Shareable Output: The final shared itinerary pages are visually stunning and content-rich, providing a tangible asset that users are proud to share, creating a natural viral loop. True API Synergy: We didn't just use an LLM and Qloo in isolation. We created a feedback loop where the LLM's analysis powers the Qloo query, and Qloo's cultural context, in turn, fuels the LLM's narrative generation.

What we learned

AI/ML Integration & Prompt Engineering: We learned how to chain prompts effectively, using the output of one LLM call as structured input for the next. We also mastered the technique of "grounding" LLMs with factual API data to ensure creative yet accurate outputs. The Power of API Synergy: This project taught us that the true innovation lies in combining specialized APIs. The LLM is the creative engine, Qloo is the cultural soul, and Google Places is the connection to the physical world. Together, they create an experience that none could achieve alone. Full-Stack Modern Rails Development: We gained deep experience with Rails 8, Hotwire/Turbo for real-time UIs, Solid Queue for robust background jobs, and Action Cable backed by Redis for scalable real-time communication. Asynchronous System Architecture: We designed and implemented a fully asynchronous, event-driven system that provides an excellent user experience despite the inherent latency of complex AI tasks. UX for AI-Powered Processes: We learned how to design a user interface that makes waiting feel interactive and magical, transforming a technical limitation into a product feature.

What's next for VibeVoyage

B2B API Launch: Package the story-generation engine into a commercial API for hotels, booking platforms, and travel agencies to offer as a premium service. Integration of Booking: Allow users to book restaurant reservations or event tickets directly from their generated itinerary. User Feedback Loop: Incorporate user ratings on recommended stops to create a feedback loop that retrains and fine-tunes the recommendation models over time. Expansion of Cultural Domains: Integrate more of Qloo's data domains, allowing users to build itineraries around music, fashion, literature, and more, based on their holistic user profile.

Built With

  • backend:-ruby-on-rails-8
  • google-places-api-orchestration:-rdawn-(custom-workflow-engine)-deployment:-kamal
  • openai-api
  • redis-ai-&-data-apis:-qloo-taste-ai?
  • ruby-3.3-frontend:-hotwire-(turbo-&-stimulus)
  • sidekiq
  • tailwind-css-database:-postgresql-job-processing:-solid-queue
Share this project:

Updates