Dimitris Ganotis
dganotis.dev
Published on

Introducing Commerce Intelligence Engine: A WooCommerce Recommendations Plugin

Authors
  • avatar
    Name
    Dimitris Ganotis
    Twitter

Last semester I was taking a class on machine learning, and one of the topics we covered was association rules — the kind of thing that powers “frequently bought together” and market-basket analysis. It got me thinking about WooCommerce.

Out of the box, WooCommerce’s “recommendations” are pretty limited. They mostly rely on products in the same category, cross-sells you set by hand, or generic bestsellers. There’s no real use of your actual order history to discover what people actually buy together. So I started playing with the idea: what if we could mine co-purchase patterns from completed orders and serve those as recommendations, with metrics you can actually understand and tune?

That’s how Commerce Intelligence Engine came about. It’s a WooCommerce plugin that builds explainable product recommendations from your own order data. The heavy work — mining pairwise associations, scoring them with support, confidence, lift, and a few other factors — runs offline during scheduled or manual rebuilds. At request time the storefront just reads from precomputed tables, so you get useful recommendations without turning every page load into a data-science job.

I did a fair amount of research on association rules and recommendation systems, and used AI as a practical pair-programming tool to get through the trickier bits: scoring models, incremental rebuilds, fallback chains when data is sparse, and the usual edge cases. The result is something I’d actually want to run on a real store: transparent metrics, operator controls (rebuilds, logs, per-product pin/exclude), shortcode and REST API for custom placement, and a clear fallback path to cross-sells, category bestsellers, and global bestsellers when mined data isn’t enough yet.

If you run a WooCommerce store and want recommendations that come from your own baskets instead of a black box, you can find it here: