Ecommerce ops · Production

Hurb builds travel destination similarity recommendation system using Flyte and BERTimbau

The problem

Travelers find it hard to choose their next destination, and collaborative filtering — the standard recommendation approach — was not viable because the team had no access to internal data, travel is highly seasonal making pattern extraction impractical, and the goal was to recommend atypical places Hurb does not yet serve.

First attempt

Collaborative filtering was explicitly ruled out: no internal data was available for the hackathon, seasonal travel patterns made sufficient data collection impractical, and the goal required recommending destinations outside Hurb's existing inventory.

Workflow diagram · grounded in source
1
User city query
trigger
“you specify a city and a state, and how many recommendations you want”
2
Wikimedia data extraction
integration
“we extracted the summary and the "History", "Geography", and "Climate" sections from each page. On the other hand, the English versions of Wikivoyage pages were more complete than the Portuguese ones, so we used those instead; from them,…”
3
Text preprocessing
integration
“Translate the English texts from Wikivoyage to Portuguese, this was accomplished using the Google Translate API for Python”
4
BERTimbau embedding generation
ai_action
“We used a pre-trained state-of-the-art language model based on transformers (BERTimbau, which was trained in Portuguese) to generate vector representations for the features of each city”
5
Euclidean similarity search
ai_action
“the similarity between the vector representations of each city can be computed using the Euclidean distance between an input vector query (the benchmark city) and all the other vectors of the cities available in our dataset”
6
Ranked recommendation output
output
“the system returns a list of recommendations, ordered by most similar”
Reported outcome

The team built a working end-to-end destination recommendation prototype covering about 440 Brazilian cities, orchestrated in Flyte and exposed via a Streamlit web interface, winning the MLOps Community hackathon.

Reported metrics
Brazilian cities in datasetabout 440
Reported stack
FlyteBERTimbauStreamlitWikidata Query ServiceGoogle Translate APIKubernetesDocker
Source
https://mlops.community/blog/ml-destination-similarity-project-using-flyte
Read source ↗

Frequently asked questions

What did this team achieve with this AI workflow?

The team built a working end-to-end destination recommendation prototype covering about 440 Brazilian cities, orchestrated in Flyte and exposed via a Streamlit web interface, winning the MLOps Community hackathon.

What tools did this team use?

Flyte, BERTimbau, Streamlit, Wikidata Query Service, Google Translate API, Kubernetes, Docker.

What results were reported?

Brazilian cities in dataset: about 440 (source-reported, not independently verified).

What failed first in this deployment?

Collaborative filtering was explicitly ruled out: no internal data was available for the hackathon, seasonal travel patterns made sufficient data collection impractical, and the goal required recommending destinations…

How is this ecommerce ops AI workflow structured?

User city query → Wikimedia data extraction → Text preprocessing → BERTimbau embedding generation → Euclidean similarity search → Ranked recommendation output.