Why is delivering an ad so complicated? It’s a combination of timely response and personalization. For any given ad, Criteo has less than 50 milliseconds to determine the optimal combination of factors that will induce the consumer to click, create the ad and then deliver it to the correct location; this time bound is due to the fact that most RTB platforms only take into account bids that they receive within 100ms or less, and we need to take into account the network latency as well. The result is a personalized ad delivered for the right price, to the right consumer at the right time. The power behind this process is the Criteo Engine.

Since Criteo is paid based on the number of clicks its ads receive, but purchases inventory in bulk from publishers, precision is absolutely essential – if the ads don’t generate clicks, Criteo doesn’t make money. The Criteo Engine is therefore managing a major risk every day, but near-constant work on the predictive algorithm keeps that risk limited.

Ensuring the right price and the right recommendation is the main job of Nicolas Le Roux, graduate engineer from École Centrale. He fine-tuned his algorithms in the laboratories of Yoshua Bengio in Montreal, Microsoft Research in Cambridge, and Francis Bach at INRIA.

Purchasing inventory correctly means calculating the anticipated gain of an ad using mathematical formulas and sophisticated probability computations. Put simply, it means evaluating what the merchant pays Criteo for each click multiplied by the probability of a click taking place. To do so, Nicolas analyzes numerous variables including the user’s past behavior, the nature of the publisher site and the user’s relation to the merchant.

In this sequence, the margin for error is very small. If Nicolas “overpredicts” the click probability, Criteo will overpay on the inventory. If he “underpredicts,” Criteo will likely lose the bid to a competitor and not display an ad at all – losing out on a potentially valuable opportunity. What’s Nicolas’ key to success? “Math, math and more math,” he says.

In addition to making the right purchases, the algorithm also has to operate within a severe time constraint. Its mission is to make a purchase decision within 5 to 10 milliseconds. Once the bid is won, there is less than 90 milliseconds remaining to display the right product via a customized ad and to send the response back to an RTB platform. Once again, Nicolas and the machine learning team must juggle millions of variables to determine the right product to display. If their algorithm chooses correctly, the ad will generate a click. Criteo goes even further: they do not want to simply generate a click but also a conversion. The ad must lead the user to buy after the click on the banner. To do this efficiently, Criteo must predict how much the user will spend on the website. As there are fewer sales than clicks, this is an even more challenging problem.

Every day, Nicolas’ team works to answer difficult questions such as: Should the last product seen be displayed in the ad? Should we display an adjacent or complementary product to one that’s been purchased? How do we even determine what constitutes an adjacent or complementary product?

While the Criteo Engine is constantly dealing in uncertainty, one thing is certain: it constantly improves thanks to Nicolas and the entire Engine team. 

Categories: Inside Criteo