
Planning a Holiday with Databricks and Mosaic AI
Let’s face it. We all want the perfect summer break. But planning one? That’s a whole other story. Searching for destinations, comparing accommodations, scrolling endlessly through reviews… it’s enough to make you need a holiday from planning your holiday.
Wouldn’t it be great if AI could cut through the noise and help us out? Good news: with Databricks and Mosaic AI, it can.
The Use Case: Smarter, Simpler Holiday Planning
We want to design an assistant that can do three things:
- Understand a natural language description of what kind of holiday you’re looking for
- Search for destinations and accommodations that match those preferences
- Summarise reviews, ratings, and local attractions to help you make a fast decision
In short: you tell the system, “I want a quiet beach holiday with family-friendly resorts and great seafood,” and it returns a list of highly rated options, backed by real review insights and local recommendations. All in one place.
It’s like having your own AI travel agent with way more patience.
The Platform: Databricks + Mosaic AI
If you’ve been around the data world, you already know Databricks as a unified platform for data engineering, analytics, and machine learning. But with the rise of GenAI, it’s also become a powerful toolkit for building production-grade AI applications.
That’s where Mosaic AI comes in. It’s a comprehensive framework within Databricks designed to support everything from prompt engineering to vector search to LLM fine-tuning. Here’s a quick look at what it brings to the table:
- AI Playground – for testing models and prompts
- Model Serving – deploy and scale models in a few clicks
- Vector Search – to power semantic search and retrieval
- AI/BI Genie – a conversational assistant for your data
- RAG Toolkit – for Retrieval-Augmented Generation use cases like this one
Even better, with the launch of the Databricks Free tier, you can build and experiment with these capabilities without needing a full enterprise license. Perfect for prototyping creative ideas like our travel planner.
The Approach: RAG to the Rescue
So how do we make this idea real?
This use case is a classic example of a RAG application, which pairs large language models with a vector search backend. That allows the model to retrieve relevant, up-to-date context before generating a response
Here’s the high-level workflow:
- Ingest structured and unstructured data (property info, reviews, etc.)
- Embed the data into vector format using an embedding model
- Search the most relevant data in response to a user query
- Generate a tailored response using a language model and the retrieved context
The result is a response that’s both intelligent and informed—far beyond what a basic chatbot or rules-based search could offer.
The Data: Sourced from Marketplace
Now, let’s talk about data. For this proof of concept, we use a publicly available dataset called the Wanderbricks Dataset from Databricks Marketplace, which is a synthetic dataset containing:
- Structured data like property names, locations, amenities, and prices
- Unstructured text in the form of user reviews
As it’s already published to the Marketplace, we can load it straight into our Databricks environment with minimal setup. No scraping, no ETL headaches—just plug and play. Here’s a small sample of the dataset:
The Pipeline: Quality In, Quality Out
To get high quality AI responses, we need high-quality data – so before we can generate anything useful, we need to clean and prep our inputs. We use the Medallion architecture to do just that:
This layered architecture helps bring our source data into the form required for our RAG use case:
- Bronze Layer: Raw ingestion of the Wanderbricks data
- Silver Layer: Data cleansing, filtering, and transformation
- Gold Layer: Ready-for-analysis tables, tailored for the use case
In this example, we filter out properties that have very few reviews (since we can’t extract much insight from them) and map property descriptions to embeddings – all of this is done in Databricks notebooks using standard Python, PySpark, orchestrated via a Databricks job.
Embeddings: Turning Text into Vectors
To search through property descriptions, we first need to convert them into something machines can understand: embeddings.
Embeddings are numerical representations of text that capture the meaning behind the words. Once converted, we can use them to:
- Compare user input (like “family-friendly beach holiday”) with stored text
- Identify properties that are similar in meaning, not just keywords
- Power fast and intelligent vector similarity search using Databricks Vector Search Index
In our example, we are using Cohere, a leading LLM provider that offers free trial API access and provides robust models for both chat and embeddings. Databricks’ Model Serving makes it easy to plug in Cohere (or models from OpenAI, Gemini, Hugging Face, etc.) and get real-time responses.
Putting It All Together
So how does this all come together for the end user?
Let’s walk through a simple interaction:
- The user enters a request like:
1. Property: Villa in Krabi, Thailand (Rating: 3.7; Property ID: 3454)
Location: Peaceful spot near the Andaman Sea, close to attractions like Tiger Cave Temple and Krabi Weekend Market.
Description: Private villa with garden, infinity pool, and direct beach access for a relaxing stay.
Reviews: Guests love the scenery and cleanliness, but some mention slow host response and missing amenities.
2. Property: Bungalow in Mykonos, Greece (Rating: 4.1; Property ID: 24557)
Location: Secluded yet within reach of Mykonos’ charming villages and scenic trails.
Description: Features private beach access, hammock, and outdoor dining—ideal for a tranquil holiday.
Reviews: Mostly positive—quiet setting, clean rooms, helpful host. This would be my top recommendation.
Both options fit your request, but Mykonos stands out with a higher rating and more consistent positive reviews. I recommend the Bungalow in Mykonos, Greece, for its serene beaches, scenic views, and authentic local cuisine. Would you like me to share more details or suggest additional options?
Alternatively, let’s see what we get if we ask about a bustling city getaway:
Certainly! Based on the provided information, I would recommend the following property for your city getaway:
Apartment in Osaka, Japan (Rating: 4.8)
Location: Central Osaka, close to Osaka Castle and Dotonbori.
Description: Spacious, family-friendly apartment with modern amenities.
Reviews: Excellent overall with minor cleanliness issues; guests love the location and comfort.
I hope this suggestion aligns with your expectations for a bustling city getaway. If you would like more information or have specific requirements in mind, please let me know, and I will be glad to assist you further in finding the perfect accommodation for your trip.
Just like that—you’ve got the top picks, summarised reviews, and even a few suggestions for what to do once you’re there.
What's Next?
From here, the possibilities are endless. You could:
- Add filters for budget, travel time, or accessibility
- Personalise results based on past trips or preferences
- Build a chatbot frontend using tools like Streamlit or LangChain
- Extend the model to plan entire itineraries, not just accommodations
For now, though, we’ve gone from raw data to intelligent recommendations—and proved that GenAI can be more than just a buzzword. It can make life genuinely easier.
Time to check those flights and enjoy that espresso tonic. You’ve earned it!
Other popular related blogposts:

Author of the post:
Daniel Percze - Engagement Manager / Senior Business Analyst at Abylon Consulting.
Linkedin Profile
Other Popular Posts
- The system transforms the query to a vector using the embedding model
- It then searches the Vector Search Index for matching properties and retrieves the reviews for the properties
- It constructs a prompt that includes the properties details as well as the reviews and sends it to the LLM to generate a summary
- The LLM responds with a curated list of top picks, along with review highlights and nearby things to do
Here’s an example output:
Sure, here is a recommendation for the quiet seaside destination trip you are looking for. I have narrowed down your options to two possible properties based on the criteria you have provided:

