Focusing on the REC-Engine: How to stop paying rent

Mihai Brașoveanu
eMAG TechLabs
Published in
4 min readJun 18, 2018


Over the last years, the recommendation system has become the most important asset in terms of engaging users on the website for some of the biggest names in the industry. From Netflix to Amazon, customized, profiled recommendations drive about 70–80% of the views the user makes once inside a platform.

For eMAG, this very important tool has been traditionally outsourced to a third party provider. And although the charts were always “the good kind”, right and to the top, in terms of all fashioned KPIs, such as clicks, we’ve decided to look closer to the foundation those charts stand upon and how the know-how hidden underneath can help us drive even better results in the future.

First of all, we’ve looked at the set-up. All of the code was in the websites, all of the requests were done by the website and mobile app directly to the 3rd party provider. Any other provider integration, any change in the logic or the scenarios being used meant extra work and release in the website code.

The first thing we did was to use our own recommendation engine as the sole provider of recommendations on eMAG. We called this app “Alfred”. The site stopped making requests to third party providers and all the products now came from Alfred.

This was only the first step in solving the problem of control. The next one was related to the fact that the website still controlled the logic of what scenario is shown where. So we invented a new concept, called “slots”, in which the site only knows the number of widgets available on a certain page. What scenario is shown there is now a decision made by Alfred. For example, if a user visits a mobile phone page while on the discovery part of his user journey, we will show him more similar phones. If he comes back to that page after buying, he should rather be shown accessories and frequently bought together products. Now every scenario is available in a user interface and any change can be done in minutes, going live asap on the website and app as well.

So, in this point of the experience, the set-up changed as following: All scenarios and products come directly from Alfred to the website and mobile app. However, a lot of the actual recommendations were still based on the “Black Box” algorithms of our provider.

In order to benchmark those performances beyond clicks and orders, we needed to look at what we can do on our own. We started to look at the internal data and how we can be able to interpret it in order to bring some automation to our own scenarios. We started by looking at orders and building “frequently bought together” relationships between categories and products. We ran algorithms on over 3,000,000 links, got some interesting results and went live with them. In a matter of days, we doubled the number of orders coming from this scenario.

So with this success story we’re now going for the biggest scenario we can work on: Similar Products. To do this, we’ve started looking at page views, add to cart actions, add to wish list actions, gaining over 100,000,000 links between products and categories. This will also be combined with all the data we have on products: from price, specs, reviews and give each of that an almost real-time weigh that should be able to provide more relevance to the user.

All of these improvements and changes meant also a lot of performance requirements, from response time to throughput that the Dev team had to solve. And on another note, this also changes the way we look at data. We’re working on several changes to our attribution model to have a better image of: the actual value we bring to the user via the Rec-Engine, how we par against any provider and what the price of such a position is for those who will want to buy it.

This was the topic that me & my colleague, Alex Bumbacea, talked about on the Product Management stage, at DevTalks Bucharest, June 8.

In conclusion, what we said at DevTalks and what I am saying now, again, as an overall result of our work so far, even though we did not yet completely stop paying rent for our Rec-Engine, we’ve managed to get just enough independence and know-how that we can consider a deposit on our own solution.