Company
About
olga@epoch8.co
Contacts
Portfolio

Tour recommendation system for YouTravel

YouTravel.me is a marketplace of tours from travel experts and private independent guides. The site offers almost 40,000 unique offers. Here you can easily and safely choose a tour and go on an unforgettable journey anywhere in the world.

Problem

Today, personalisation in ecommerce is mostly blocks like ‘You might also like’, ‘Customer who bought this item also bought’ or upsell-recommendations in the shopping cart. Yes, such solutions are easier and cheaper to implement, but their effectiveness leaves much to be desired. The user does not see the whole selection that could interest him, does not find what he needs and simply leaves. And so does the business’ potential profit.

Task

Our task is to develop a recommendation system that integrates into all site listings and maximises the interests of users.

We plan to build such advanced personalisation on the basis of machine learning and data analysis, areas in which Epoch8 specialises.

Solution

We developed a personalisation strategy that easily integrates at the level of re-sorting any listings with their own shaping logic.

Instead of simply issuing a list of recommended items via API, we implemented:

  • collecting data on lazy browsing and other behavioural factors;
  • re-sorting any list of products to suit each customer.

This is the strategy we implemented on the YouTravel website.

Data Gathering

For personalisation to work, it's important to collect data about the user's actions.

Together with YouTravel, we have made a system to collect information about:

  • what the user saw on the page;
  • what he clicked on;
  • where the user went afterwards.

The YouTravel team focused on frontend refinement, while we handled server-side development and ensured seamless regular data processing.
«A key aspect of our data collection is accounting for passive views. In typical tracking, information about views without interaction is not collected. However, it is crucial for us to know that the user saw these 20 products but did not select or take any action. This information is essential for statistics and training the ML model».
– Andrey Tatarinov, CEO of Epoch8.

HOW IT WORKS

We have improved the data collection system on both the customer's side and ours. It now captures:

  • lazy browsing,
  • deep browsing (e.g. opening a product card),
  • purchases.

DATA PROCESSING

We retrieve data from the frontend and store it in two places:

  • Long-term storage - for retraining the model and calculating statistics.
  • Online profile - it provides information about the user's current preferences and behaviour in real time.

There's another branch of data coming from the online profile. This involves a stream of events from the frontend, enabling real-time updates of the user's profile.
Our recommendation API, built on an ML model, performs a key function—re-sorting the list of products.

The API accesses the online profile to retrieve user attributes needed for re-sorting and utilizes an in-memory personalization model.

This online processing cycle takes only half a second and operates in real-time as users interact with the website.

There is also a long-term cycle. Every hour, we process accumulated statistics, recalculate recommendation matrices, and update the model in the API. This ensures that precomputed recommendations for each user remain up-to-date with an interval of approximately one hour.

The general solution looks like this:

RECOMMENDATION STRATEGIES

We use three strategies for generating recommendations, all of which work simultaneously:

  1. Long-term user:
  2. If a user has been on the site for more than 30 minutes, they are already included in the hourly retraining cycle. In this case, we use a well-calculated vector of the user's attributes to make recommendations, ensuring the highest quality results.
  3. Recent user:
  4. When a user has just started interacting with the site, their behavioral data has not yet been factored into the feature calculations. However, if they have already shown interest, such as clicking on a product, we base recommendations on the attributes of that product.
  5. New user:
  6. For users who have just entered the site and about whom nothing is yet known, we generate recommendations based on static data such as the selected language, region, device, and other general characteristics.

Each of these strategies helps to provide relevant recommendations in different scenarios of user interaction with the site.

RESULTS

Currently, our strategy is integrated into a portion of the listings on the YouTravel website, and the results are as follows:

  • The average conversion rate from view to click without recommendations is between 3% and 4.5%.
  • For personalized recommendations, the conversion rate ranges from 6% to 9%.

In just two months, we achieved a twofold increase in target actions—and this is just the beginning!

WHAT’S NEXT?

We continue to develop the project, focusing on improving recommendations for new users, who make up a significant portion of the audience.

To make cold recommendations more accurate, we are incorporating more static information. For example, we are starting to consider:

  • The advertising campaign that brought the user to the site.
  • The text of the ad, analyzing it and integrating the data into recommendations.

Additionally, we are expanding the consideration of the following factors:

  • The landing page the user arrived on.
  • The model of the device used to access the site.
  • The language of the site or browser set by the user.
  • The user's geolocation.

STACK

  • REST/GRPC
  • Kafka/PG/HTTP push
  • Prometheus Grafana
  • Python/FastAPI
  • GPU
  • Python Airflow/Prefect
  • Redis
  • MLflow/S3/HDFS/Hive
  • Pytorch/XGB
  • Metabase/Superset/Tableau
  • Jupiter
Recommendations