From grape stomping to gorilla trekking: AI-driven discovery of novel interests at GetYourGuide
Learn how our team built an automated system for surfacing hidden gems and niche activities, driving better discoverability, customer satisfaction, and business growth. Explore our innovative approach, the challenges we faced when running LLMs in production and how we overcame them.

Key takeaways:

In this post, we’re diving into locally unique and niche activities. Think samurai sword‑making in Kyoto or joining a seasonal harvest event in a Tuscan vineyard. Our UX research shows that discovering new, unexpected, and unique things to do in a destination is among travelers’ top needs. However, surfacing these “hidden gems” at scale is a significant challenge for any dynamic marketplace. So, let’s explore it.
We’ll discuss how we tackled challenges in discovery by combining large language models, semantic vector embeddings, and a robust human-in-the-loop process to identify novel customer interests automatically and at scale.
{{divider}}
The challenge: scaling ‘Customer Interests’
The GetYourGuide platform is organized along two main dimensions: Locations (destinations, such as Brazil, Tuscany, or Berlin) and Customer Interests (categories, such as ‘shows & musicals’, ‘walking tours’, or ‘museums & exhibitions’ – further referred to as ‘Interests’). That means that a landing page can look something like this:

This structure matters because defining an Interest changes how that theme surfaces across the product. When we add a new Interest, it becomes a first-class discovery signal across the platform, appearing in search, category navigation, and any promotional surfaces where relevant. That means that the related activities become much easier for customers to find. It also means that if we have an activity called ‘Bossa Nova tours in Rio de Janeiro’, for example, but haven’t defined ‘Bossa Nova’ as an Interest in our database, these tours will essentially remain hidden from structured discovery.
With new activities being onboarded daily, manual categorization of our activities became impractical. We therefore needed an automated way to detect and create new Interests efficiently and at scale.
The initial approach
We began by targeting the most direct indicator of an activity’s identity: its title and description, as displayed on our platform. Our goal was simple: surface truly novel Interests that justify new landing pages and improve discoverability, so we focused on the text that best describes what each activity actually offers.
The first iteration used a large language model to extract candidate Interests from activity titles and descriptions. The flow was straightforward: an LLM generated potential Interests, we de-duplicated those candidates against our existing Interest catalogue using a combination of LLM prompts and inventory-overlap checks, and then human reviewers evaluated the filtered list. Approved suggestions were launched as new Interests.
This approach enabled us to transition quickly from signal (activity text) to candidate labels, while maintaining a safety net of deduplication and manual review to prevent the publication of noisy or redundant categories.

That baseline worked well enough to prove the concept, but the rejection rate was higher than we expected. Many candidates fell into one or several problematic buckets:
- Too vague or generic, e.g., Hands-on activities
- Overly specific, e.g Underwater art galleries or Organic farm tours
- Too similar to an existing Interest, e.g., Panoramic city views, while we already have Viewing points as an existing Interest
- False positives or misaligned concepts, e.g., Pet-friendly experiences (which could be a relevant product attribute or filter, but is not considered a customer interest according to our definition)
A key lesson was navigating the fine line between practical innovation and unwanted noise when relying on LLMs. Minor wording differences can flip a suggestion from valuable to redundant, and it’s hard to embed our product intuition about what should be a relevant, incremental Interest in an LLM prompt. For example, is “Stalagmite formations” a distinct Interest, or just a descriptor for cave tours? From a human product perspective, the latter is usually true — but an LLM may treat the phrase as novel and worthy of its own category.
In short, the LLM often struggled to internalize product rules regarding granularity and intent, so we needed a more nuanced, data-driven approach to determine what truly constituted a new Interest.
Refining the solution
After the high rejection rate in our initial pass, we iterated on four fronts: improved prompting, additional data sources, enhanced deduplication, and a tighter human-in-the-loop feedback loop. The goal was to keep truly novel, customer-relevant Interests while filtering noise and accidental duplicates.
- Prompt engineering
- We broke large prompts into focused, smaller prompts and split tasks such that each prompt has a single, narrow objective.
- We incorporated a chain-of-thought style of reasoning and utilized real reject/accept examples from human reviews to teach the LLM product intuition.

- Adding customer search signals as a data source
- Why? Activity titles and descriptions describe what a supplier offers, but they do not always reflect how customers look for things. Some ideas are rare in vendor text but show apparent demand in search logs or are phrased by customers differently than suppliers describe them (e.g., “elephant sanctuary” vs. “wildlife rehabilitation”). Relying on activity text alone missed those demand-driven signals; adding these data helped surface Interests that might be rare in our inventory but show clear search demand.
- What did we do? Add processed search queries (queries used by users to land on our pages) as a complementary signal. These are literal customer phrasing examples – e.g., “whale watching cruise near me”, “kimono rental and photoshoot” – that reveal how real users search for activities.
- We used agglomerative clustering to create clusters of search queries. Clustering groups similar queries together, allowing us to identify recurring user intents (e.g., many different queries all point to “bioluminescent kayak tours”, but all with slightly different wording). These clusters produce compact, demand‑driven labels that represent what users actually want, rather than one‑off or noisy queries.
- These processed search query clusters were combined with activity text for LLM extraction (see diagram below).
- Enhanced deduplication (hybrid approach)
- Deduplication was necessary to address two problems: removing candidates that duplicate existing Interests in our catalogue (external deduplication) and collapsing near-duplicates among newly generated suggestions (internal deduplication). To do that, we used a multi-layered approach combining clustering, semantic similarity, rule-based checks, and LLM prompts:
- Cluster first: we again ran agglomerative clustering, this time on the candidate labels as extracted by the LLM to group semantically similar ideas. This reduced noise and eliminated the most obvious internal duplicates.
- Rule-based checks and classic NLP: simple techniques (stemming, token overlap, normalized string matching) caught obvious duplicates.
- Text embeddings and semantic scores: vector embeddings and multiple similarity metrics flagged semantic overlaps that string rules miss, while tuned thresholds preserved meaningful granular variations.
- LLM deduplication: We used LLM prompts with curated positive/negative examples to filter out any remaining semantic duplicates.
- Deduplication was necessary to address two problems: removing candidates that duplicate existing Interests in our catalogue (external deduplication) and collapsing near-duplicates among newly generated suggestions (internal deduplication). To do that, we used a multi-layered approach combining clustering, semantic similarity, rule-based checks, and LLM prompts:
- Scoring and automated triage
- An LLM scoring step was added to rank candidates by confidence (based on learned examples from human reviews), such that low-quality suggestions could be auto-filtered before human review.

Results
The refined approach increased the acceptance rate of novel Interests by 10× from one iteration to the next. We launched hundreds of new Interests – more than doubling the previous number in the database – resulting in hundreds of thousands of new Location<>Interest combinations. That expansion improved discoverability on the website and produced significant, measurable uplifts in visits as well as in net revenue.
What primarily drove the improvement in acceptance rate was the reduction of duplicates (resulting from the hybrid deduplication pipeline) and improved alignment with customer intent (due to the inclusion of search signals as an input data source).
This was an incredible team effort: seven teams, spanning business, engineering, and data, collaborated to bring this initiative to success.
Here are some of the unique interests now available on GetYourGuide!
- Mochi tours & workshops in Japan – discover more about traditional Japanese sweets making.
- Gorilla encounters and treks in Rwanda – wildlife encounters up close, for true adventurers.
- Firefly experiences in Kuala Lumpur – witness the natural spectacle of thousands of fireflies lighting up the mangrove trees.
- Taylor Swift experiences in New York – a novel Interest for the Swifties among us.
- Samurai and Ninja experiences in Kyoto – join a ninja weapon-making class or dress up as a samurai to learn more about the warriors of Japan’s history.
- Grape stomping experiences in Tuscany – participate in a seasonal harvest event and get hands-on with traditional winemaking.
What’s next?
The Novel Interests work has moved from experimentation into productization. Our next focus is to formalize and standardize how Interests are defined, validated, and maintained across the platform so that future automation delivers consistent, measurable value. Our new Foundational Data Products team will lead this effort, working closely with business partners and engineering teams to expand data-driven categorization across our platform. The goal is simple: make it easier for travelers worldwide to discover unique, authentic, and locally relevant experiences.
Interested in redefining the travel experience industry with us? Discover more about our tech community here, and explore our open roles to join the journey.

.avif)


