CJP - Personalized Product Affinities - Reorder & Discover

Introduction

The purchase history should clearly play a role to define what other products a customer might be interested to buy (or what products he might want to buy again).

However, a customer who bought a type of product twice or three times doesn’t have the same affinity towards these products if he bought twice or three times in total, or if he bought already 20 times or more. The first gives (so far) a clear indication of a strong affinity while the second might have stronger affinities to other products.

To make the matter more complicated, some types of products have very difference purchase frequencies than others. For example, chewing toys are typically bought much less often than dog food. Therefore, simply using order frequency doesn’t suffice either.

It’s not because you already bought a product that you have a strong affinity for it or its category

The goal of calculating what we call Product Segment Affinities is to identify products individually for each of your customers where a reorder is really likely or which they buy often enough that they might be interested in other best-selling products in the same product segment.

Boxalino as developed two types of affinities:

  • Local Affinities for Reorder - where the individual purchase frequency is compared to other customers who also bought products in the same segment

  • Global Affinities for Discover - where the individual purchase frequency is compared to all other customers regardless if they already bought products in the same segment or not

What is it?

The Personalized Product Affinities [Reorder | Discover] identifies what products each customer is most likely to [Buy again | Buy for the first time]. It generates a small quantity (typically between 5 and10) product recommendations which are generated for each customer individually based on their purchase history.

The best practice compares the purchase frequency of each customer on product segments and compares these frequency with the average purchase frequency of other customers. In each segment the algorithm either select [the most relevant products the customer could buy again | the best-selling products the customer didn’t buy yet, but is likely to buy due to the high affinity to their product segment].

These recommendations can be used to be put on top of any widget. One of the most common cases are WELCOME: Product suggestions on start pages, RE-BUY: Product Suggestions on My Account Page and INDIVIDUALIZE: Product Suggestions in E-Mails, but we have seen very positive results also to put such products on top of SEARCH/NAVI: In-site Search and Product Listings when such product match with the search term or category/brand context.

This is a great way to personalize your entire E-shop.

Best Practice Strategy

Neural Collaborative Filtering for personalized recommendations leveraging the patterns in the purchase behaviors of other customers.

WPOS

Use Cases

Mode

Requirements

WPOS

Use Cases

Mode

Requirements

ALL

Customer Correlation-based Promoter

RANKER

You need to confirm with Boxalino that this Collaborative Filtering has been computed for your account

Variables

  • Reorder products already bought: “boxalino_std_affinities-rebuy-customer”

  • Discover products not bought yet: “boxalino_std_affinities-discover-customer”

Cases to consider

There is only one standard case

How to configure it?

You can import the JSON below directly in the Admin (use the Import button on the top right), as in this screen-shot.

Typically, you don’t need to configure any parameter and can use it as is.

 

[ { "useCaseModelSource": "library", "useCaseModelId": 188, "useCaseModelVersion": 1, "useCaseModelSubVersion": 1, "name": "Collaborative Filtering Purchases", "order": "1", "orGroup": null, "fromIndex": -1, "toIndex": -1, "maxWeight": null, "variant": "", "scope": "local", "overwriteLevel": 1, "overwriteLabel": [ null ], "globalTargetTags": [ null ], "active": true, "parameters": [ { "name": "type", "value": { "format": "StringParameterValue", "value": "boxalino_std_affinities-rebuy-customer" }, "scope": "global", "startval": {}, "schema": "" }, { "name": "source", "value": { "format": "StringParameterValue", "value": "" }, "scope": "global", "startval": {}, "schema": "" }, { "name": "valuesConditionMapKey", "value": { "format": "StringParameterValue", "value": null }, "scope": "global", "startval": {}, "schema": "" }, { "name": "targetAsValue", "value": { "format": "BooleanParameterValue", "value": true }, "scope": "global" }, { "name": "valuesConditionValueIndex", "value": { "format": "StringParameterValue", "value": "0" }, "scope": "global", "startval": {}, "schema": "" }, { "name": "factor", "value": { "format": "NumberParameterValue", "value": null }, "scope": "global" }, { "name": "targetSeparator", "value": { "format": "StringParameterValue", "value": "\\\\|" }, "scope": "global", "startval": {}, "schema": "" }, { "name": "field", "value": { "format": "FieldParameterValue", "value": "id" }, "scope": "global" }, { "name": "boostFilter", "value": { "format": "BooleanParameterValue", "value": true }, "scope": "global" }, { "name": "boostWeight", "value": { "format": "StringParameterValue", "value": "1000000" }, "scope": "global", "startval": {}, "schema": "" }, { "name": "orCondition", "value": { "format": "BooleanParameterValue", "value": true }, "scope": "global" }, { "name": "required", "value": { "format": "BooleanParameterValue", "value": false }, "scope": "global" }, { "name": "topWeightNbValuesMaxThreshold", "value": { "format": "StringParameterValue", "value": "0" }, "scope": "global", "startval": {}, "schema": "" }, { "name": "topWeightMinThreshold", "value": { "format": "StringParameterValue", "value": "0" }, "scope": "global", "startval": {}, "schema": "" }, { "name": "limitFieldValues", "value": { "format": "StringParameterValues", "values": [ "*" ] }, "scope": "global" } ], "segmentationIds": null, "segmentationUniqueKeys": [], "CPOInitiativeId": null, "notes": null, "options": { "status": null, "includeWidgets": null, "excludeWidgets": null, "allWidgets": null, "conditionalSegments": null, "conditionalProductSelections": null, "ordering": null, "parameters": [ { "name": "system", "values": [ "false" ] } ], "allLinkedAccounts": null, "accounts": null }, "icons": { "strategy": { "value": "cpo_journey.png", "tooltip": "JOURNEY OPTIMIZATION" }, "level": { "value": "L1", "tooltip": "LEVEL 1 - ENGAGEMENT JOURNEYS (4+1+4)" }, "initiative": { "value": "fa-folder", "tooltip": "RETURNING CUSTOMERS" }, "character": { "value": "", "tooltip": "" }, "mode": { "label": "", "value": "", "tooltip": "" } }, "sections": [ { "id": "main", "label": "Values", "active": true }, { "id": "advanced", "label": "Advanced", "active": false } ], "isSelected": true, "status": true } ]