Real-time personalisation to increase sales opportunities

A global retailer had a significant delay between customer actions on the website and tailored recommendations & increased sales with VL’s help.

case_study_real-time-min (1)
Eventing platform
Kafka | Flink
Kubernetes | Terraform | Terragrunt

Our client, a worldwide retailer, runs a big shopping e-commerce platform. They experienced a significant delay between customer actions on the website and tailored recommendations, leading to missed sales opportunities. Our Machine Learning engineering team undertook the challenge and succeeded in reducing the time required to display personalised product recommendations from a week to just 15 minutes.

The challenge: Delayed Personalised Recommendations

The website of the store offers users several actions, such as browsing items, adding or removing products from their basket, among others. The system then uses the resulting data to analyse customer preferences and offer tailored product recommendations based on their interests.

Despite this, our client encountered a challenge where the website was not promptly displaying personalised recommendations to users. It took up to a week for the system to process and reflect the customer’s actions and decisions in the recommendations, resulting in a negative impact on the customer experience and missed sales opportunities.

The client reached out to VirtusLab to optimize the process and minimize the time lag.

The solution: Enhancing Data Processing and Real-time Personalisation

The project initially used Spark batch technology to process data. However, to enhance the data processing capabilities and cater to the business’s growing demands, VirtusLab decided to switch to stream processing services and architectures. This shift allowed VL to ingest a continuous data stream to quickly filter, analyse, transform, or enhance data in real-time, combining data feeds from various sources.

The following business analysis showed an implementation of Apache Flink on Kubernetes would enable our client to provide users with personalised recommendations based on their past interactions during shopping sessions in real-time.

By leveraging Flink on Kubernetes, our client’s online store can ensure high availability and scalability while seamlessly recovering from any system failure without losing any data. Furthermore, it enables them to quickly adapt to rapidly changing situations by easily adding or removing processing units based on website traffic.

The results: Leveraging Apache Flink on Kubernetes

Flink is a technology that supports the growth and development of the online store and drives sales through personalised real-time recommendations. With its suitability for programmers and analysts, it has become an essential tool for any modern business. Our client has been able to achieve significant measurable benefits:


Efficient processing: The Flink system processes around 122 million rows of data per day (i.e. 1500 per second) about user behaviour, then filters and combines these events.


Continuous learning: 3,250,000 useful values are employed to train our machine learning models. Processing data in real-time enables our client to train machine learning models based on the latest user behaviour trends, leading to enhanced personalised recommendations.


Faster recommendations: The tailored recommendations to customers are now provided within just 15 minutes of receiving data about their behaviour, as compared to a week previously. It enhances the customer experience and positively impacts the likelihood of purchases.


Improved customer retention: Users are engaged and satisfied, which ultimately leads to increased customer retention.


Increased sales: in general, this solution translates into greater profits for the company.


Cost savings: Additionally, by running Flink on Kubernetes, we can integrate technologies to optimise processing units based on website traffic. This directly translates to lower cloud costs as the client is billed based on their reserved computing power, which is only high for periods of most intense traffic.