retail-demo-store icon indicating copy to clipboard operation
retail-demo-store copied to clipboard

Cold item recommendations

Open james-jory opened this issue 4 years ago • 2 comments

The current user-personalization implementation in the project (i.e. "Inspired by your shopping trends" on the homepage) does not demonstrate the cold item (exploration) capabilities of the aws-user-personalization recipe. One way to add this to the project would be to tag a small number of products across various categories as "cold" in the products.yaml file and then carry this tag/field through to the products service so that the historical interactions generator can skip generating interactions for these products, the Personalize schema (CREATION_TIMESTAMP in the items dataset) and campaign settings can be initialized accordingly, and the storefront can visually denote a product as being "cold" or "new".

james-jory avatar Jan 21 '21 13:01 james-jory

There is another way: create a several new products as a separate set + script to inject them into running shop. It will looks like real life situation: new SKUs -> push into service -> recommend them.

patrick-239 avatar Feb 02 '21 10:02 patrick-239

There is another way: create a several new products as a separate set + script to inject them into running shop. It will looks like real life situation: new SKUs -> push into service -> recommend them.

That's similar to what I was thinking but my suggestion was to have the new products already in the catalog and dataset rather than having to inject them. This shortens the wait time for new item recommendations to appear, which is especially important in the demo scenario. Also, not all people delivering demos are capable of running a script of have the time with a customer to run a script and wait for results.

However, I do like the idea of making the addition of products more realistic, particularly for workshops. How about a combination of both approaches? Some "new" products already in the catalog and dataset (newer creation timestamp and no historical interactions) and some other products from products.yaml held out from the DDB data load at deployment time. These held out products could be added via a script or ideally an admin UI to demonstrate PutItems and item cold start end-to-end. Another benefit to using held out products for this is that we already have product images in place.

For the PutItems part, it would be great to implement that through #9. The products service already supports adding/updating products so the API is in place. Using DDB streams to keep the Personalize items dataset in sync would be a nice best practice to wrap this enhancement within.

james-jory avatar Feb 06 '21 13:02 james-jory