Caveat: I don't work on advertising systems, but I do work in ML, and I've studied recommendation systems. One way to think about these large systems is that they contain a condensed representation of you that is comprised of all the things you buy/consume on their platform (the raw data) and some derived descriptors (possibly demographic information/information from other platforms/"engineered features" like what "style" of clothing you like, etc. This representation of you (a vector) can be compared to other members of the platform (inner product), and they can give you recommendations based on your similarity.
The problem is that in this case, they've encoded into your condensed representation something about office chairs. A better system would be knowledgeable about the kind of purchase and infer if it's the kind of thing you would buy once, or multiple times.
But then you have the problem of different individuals having the propensity to buy different products at varying intervals. If I like shoes, I might buy many pairs. You might not be into shoes, and so you're not going to buy more than a couple pairs, if that. In this case, how do we train a system to know the difference between the two of us, with our different tastes? The more specific we get with the vector descriptor, the harder it is to compare us to other people (because in high dimension, random vectors are basically orthogonal).
And going through all products and trying to determine if they are the kind of thing that you would buy more or less of, given that you just bought it, is expensive, and likely difficult. The system ultimately falls on a positive correlation between history and future purchases.
Another way to think about this is with Bayesian reasoning, where your prior likelihood to buy office chairs affects the posterior. The system's prior is high (you've bought chairs in the past), which scales the posterior (that you'll buy a chair now).