Codewerk.
Get a quote
Home/Blog/AI product recommendations: what actually lifts revenue, and what just looks clever

AI product recommendations: what actually lifts revenue, and what just looks clever

Most personalisation projects fail on data volume, not on algorithms. Why 'customers also bought' on decent data beats a neural network on thin data, and when a rules engine is the honest answer.

Photo: free stock photography (Unsplash licence) — see imprint

The algorithm was never your bottleneck

Every recommendation project we have been asked to quote started with a question about the model. Which engine, which vendor, embeddings or matrix factorisation, can we use a transformer. Almost none of them started with the question that decides the outcome: how many orders per month does this shop actually have, and how many of them contain more than one line item. That number, not the model architecture, determines whether personalisation will do anything for you at all.

Recommenders are statistical machines, and statistics need repetition. A co-occurrence rule needs to see the same pair of products bought together enough times to distinguish a pattern from a coincidence. Collaborative filtering needs users who overlap in their behaviour, which means each user must have touched enough items and each item enough users. With 300 orders a month across 6,000 SKUs, the average product has been bought by nobody twice. There is no model that fixes that. It is not a modelling problem, it is an arithmetic problem.

'Customers also bought' on good data beats a neural net on thin data

This is the unglamorous finding nobody wants on a slide. If you have real order volume, a plain item-to-item co-occurrence table — the thing Amazon shipped two decades ago — will capture most of the value that is there to capture. It is trivial to compute, it runs in a nightly job, you can explain any single recommendation to a sceptical product manager in one sentence, and when it goes wrong you can see exactly why. A deep model on top of the same data might do measurably better. Might.

The gap between a simple baseline and a sophisticated model is real but modest, and it is only harvestable at volume. The gap between no recommendations and a decent baseline is large. Most shops that ask us for AI personalisation are on the wrong side of that sentence: they are comparing a fantasy of a smart system against nothing, when the honest comparison is a boring system they could have next month against a smart system they will spend a year and a six-figure budget failing to evaluate properly.

Where personalisation projects actually die

The failures we see are almost never about the recommender being stupid. They are about the surroundings. The engine recommends products that are out of stock because nobody wired availability into the filter. It recommends the item the customer just bought, forever, because a purchase is treated as an interest signal instead of a completed need. It recommends a 4-euro accessory on a 2,000-euro machine because clicks were optimised and margin was not. It recommends beautifully on the product page nobody visits.

And then there is the measurement problem, which is the quiet killer. Almost every recommendation dashboard reports revenue attributed to the widget: someone saw a recommendation, clicked it, bought it, so the engine earned that order. That number is nonsense as a business case, because a large share of those customers would have found the product anyway through search or the category tree. Without a holdout group — a slice of traffic that sees no recommendations at all — you are not measuring lift, you are measuring cannibalisation and calling it profit.

  • No stock filter — the engine happily promotes what you cannot ship.
  • No holdout group — you report attributed revenue and call it lift.
  • Optimised for clicks, not margin — more traffic to your worst products.
  • Purchase treated as interest — the customer is chased by the washing machine they already own.
  • Thin product data — no attributes means no fallback when behaviour data runs out.

When a rules engine is the right answer, and it is more often than you think

If your catalogue has genuine structure, rules will beat learning. A printer takes exactly these three toner cartridges. This pump fits those seals. That dress is offered with a matching belt because a buyer with taste decided so. Nobody needs a model to learn a fact that a product manager already knows and can write down in fifteen minutes. Learning is for patterns you do not know; it is a slow and expensive way to rediscover facts you do.

This is doubly true in B2B, where the whole premise of behavioural personalisation is shaky. Your buyer orders the same twelve articles every month against a negotiated price list. They are not browsing, they are restocking. The most valuable 'personalisation' you can give them is their own order history, a fast reorder button and correct availability — not a discovery carousel. We have watched B2B shops spend real money on a recommender when a well-built reorder list would have moved more revenue in a fortnight.

A sane order of work

Start by counting. Orders per month, share of multi-line orders, active SKUs, repeat customer rate. If the multi-line share is tiny, cross-selling has nothing to learn from and you should fix the reason people buy one thing at a time first. If the numbers support it, ship the boring baseline, put a holdout group in place on day one, and let it run for a quarter. Then, and only then, ask whether a smarter model is worth the bill — you will finally have a number to compare it against.

The genuinely useful thing generative models have brought to this problem in the last year is not a better recommender. It is a cheap way to fill the gaps that starve one: attributes extracted from supplier PDFs, categories cleaned up, similar products identified from descriptions rather than from clicks you do not have. That is a data project with an AI tool in it, and it is far more likely to pay than a recommendation engine bolted onto a catalogue nobody has ever tidied.

ApproachNeedsGood atFails when
Manual rulesA product manager who knows the catalogueAccessories, spare parts, fixed setsCatalogue is large and churns weekly
Co-occurrence ('also bought')Thousands of multi-line ordersCross-selling on real bestsellersLong tail — most pairs seen once
Content similarityClean attributes and descriptionsNew products with no historyProduct data is a filename and a price
Learned modelHigh volume plus an evaluation setupSqueezing the last points at scaleYou cannot measure lift honestly
Key takeaways
  • Count your multi-line orders before you shortlist a vendor — that number decides the project, not the model.
  • Without a holdout group you are measuring cannibalisation and reporting it as lift.
  • In B2B, a fast reorder list usually beats any recommender you can buy.
  • Optimise recommendations for margin, not clicks, or you will scale your worst products.

Frequently asked questions

There is no single threshold, but the useful test is per-product, not total: has each product you want to recommend been bought together with other products enough times to be more than coincidence? A shop with a few hundred orders a month across thousands of SKUs almost never passes that test. Behaviour-based recommendations need density, and density comes from volume divided by catalogue size.

Usually not as a purchased product. If your order volume is modest, spend the money on product data, a working search and a handful of hand-written cross-selling rules on your top sellers — those move the same numbers for a fraction of the cost. Revisit the engine question when you have enough repeat purchasing that a human can no longer keep the rules current.

With a holdout group. Hide recommendations from a random slice of traffic — five or ten percent — and compare revenue per session against the rest. It is the only way to separate genuine lift from customers who would have found the product anyway. The attribution figure in a vendor dashboard is not this measurement, and it will always look better than reality.

Not for the recommending itself — that is a ranking problem, and language models are an expensive, slow way to do ranking. Where they genuinely help is upstream: extracting attributes from supplier documents, cleaning up categories, generating the descriptions that make content-based similarity possible. Fix the data with them, then recommend with something simple and fast.

We do this for a living — Shopware, Node.js, React, ERP integration and automation for B2B.

Talk to an engineer

// Keep reading

Related articles

AI & Automation 9 min

AI in e-commerce: what actually works in 2026

Product descriptions, search, support triage, forecasting. Three of those pay for themselves. We separate the working from the pitching.

25 Mar 2026 Codewerk Team