diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/404.html b/404.html new file mode 100644 index 000000000..88f7aff92 --- /dev/null +++ b/404.html @@ -0,0 +1,2037 @@ + + + +
+ + + + + + + + + + + + + + +Generative AI can be used to automate the creation of marketing content, including generating personalized product descriptions. This can save marketers significant time and effort, allowing them to focus on other aspects of their strategy.
+The real power of generative AI for product descriptions is the ability to dynamically create unique, personalized content for each customer segment or individual user. Previously, marketers would need to manually generate multiple copies of product descriptions for different customer attributes. Generative AI can automate this process, providing opportunities to tailor the descriptions to each user's preferences and context.
+The Retail Demo Store integrates the product service with Amazon Bedrock to retrieve personalized product descriptions based on the logged-in user's age and interests.
+Amazon Bedrock makes Foundation Models (FMs) accessible via an API, and in this demo, Anthropic's Claude v2 is the underlying FM used for generating the personalized descriptions.
+The prompt used to generate the personalized descriptions takes the following form:
+I'd like you to rewrite the following paragraph using the following instructions:
+"{instructions}"
+
+"{original product description}"
+
+Please put your rewrite in <p></p> tags.
+
The instructions used are:
+Please generate an enhanced product description personalised for a customer aged {age range}, interested in {interests}.
+However, do not mention their age in the rewrite.
+The product is named "{product name}" and is a product of type "{product type}" in the {product category} category.
+
This allows the generative AI model to dynamically create a personalized product description based on the user's age and interests, without explicitly mentioning those details.
+The overall architecture of this demo involves the following components:
+By integrating Generative AI through Amazon Bedrock, the Retail Demo Store is able to provide personalized product descriptions that are tailored to each individual user, improving the overall shopping experience.
+ + + + + + + + + + + + + + + + +The Retail Demo Store integrates Amazon Location Services to demonstrate how businesses can leverage location data to deliver personalized experiences and increase foot traffic to physical stores.
+Imagine a customer is out shopping and approaches one of your retail locations. As they get closer, you want to be able to detect their presence, deliver a personalized offer or notification, and potentially encourage them to come into the store to redeem the offer or pick up an online order.
+ +The Retail Demo Store uses Amazon Location Services to set up a geofence around a sample physical store location. As customers approach the store, their location is detected, and personalized messages are delivered to them through Amazon Pinpoint.
+The key components are:
+When a customer enters the geofence, the following happens:
+To experience the Geofencing and Location-aware Personalization demo, deploy the Retail Demo Store and navigate to the "In Store View -> Location Geofence" section. You can then simulate a customer approaching the store and see the personalized offer delivered.
+ + + + + + + + + + + + + + + + +The Retail Demo Store integrates Amazon Pinpoint and Amazon Personalize to provide a seamless omni-channel personalization experience for the customer.
+When a new user signs up for a Retail Demo Store account, Amazon Pinpoint is used to automatically send a welcome email. The email content is personalized based on the user's profile information, such as their name, and can include personalized product recommendations generated by Amazon Personalize.
+If a user adds items to their cart but does not complete the purchase, Amazon Pinpoint is used to send an "abandoned cart" email. This email includes a coupon code to incentivize the user to return and complete their purchase. The product recommendations in the email are personalized based on the user's browsing and purchase history.
+The Retail Demo Store also integrates SMS messaging powered by Amazon Pinpoint. Users can opt-in to receive text alerts, such as notifications when they are near a physical store location. These alerts can include personalized product offers generated by Amazon Personalize.
+By connecting Amazon Pinpoint with Amazon Personalize, the Retail Demo Store is able to create a unified, omni-channel personalization experience. All customer interactions, whether on the website, in emails, or through SMS, are fed into the Personalize machine learning models. This allows the recommendations and offers to be consistently personalized across every touchpoint.
+Amazon Pinpoint enables the creation of real-time user segments based on the customer's behavior across web, mobile, email, and SMS channels. These dynamic segments can then be used to trigger personalized messaging campaigns through the channel most appropriate for each user.
+Overall, the Messaging and Engagement demo showcases how retailers can leverage the power of Amazon Pinpoint and Amazon Personalize to deliver a highly personalized, omni-channel customer experience that drives engagement and conversion.
+ + + + + + + + + + + + + + + + +The Retail Demo Store showcases several personalization capabilities powered by Amazon Personalize, a machine learning service that makes it easy to add sophisticated personalization to applications. The personalization demos in the Retail Demo Store cover the following key use cases:
+The product detail pages in the Retail Demo Store include a "Compare similar items" carousel that displays products similar to the one being viewed. This is implemented using the Similar-Items algorithm in Amazon Personalize, which recommends related items based on user behavior (co-occurrence in interactions data) and thematic similarity between products.
+The Similar-Items algorithm considers both how often products appear together in user histories, as well as the attributes of the products themselves, to identify items that are truly similar - even for long-tail or new products with limited historical data.
+Additionally, the Personalized-Ranking recipe is used to re-order the related items recommendations based on the current user's preferences, providing a personalized experience.
+The "Inspired by your shopping trends" section on the homepage displays personalized product recommendations for the current user, using the User-Personalization recipe in Amazon Personalize. This recipe balances recommending items the user is likely to engage with, based on their historical behavior, with exposing them to new and trending products.
+The User-Personalization recipe handles the "cold-start" challenge, where limited or no historical information is known about a user or an item, by incorporating user attributes and item metadata to make relevant recommendations.
+Amazon Personalize also enables advanced user segmentation, going beyond traditional rules-based approaches. The Item-Affinity and Item-Attribute-Affinity recipes can identify high-propensity user segments for specific products or product categories, without the need to maintain complex business rules.
+This allows retailers to efficiently target marketing campaigns, promotions, or merchandising strategies to the users most likely to engage.
+The Retail Demo Store showcases how Amazon Personalize can be integrated with the web user interface to deliver real-time personalized experiences. As users interact with the storefront, their clickstream data is captured and sent to Personalize's real-time event tracking. Personalize then uses this data to update the user's profile and deliver personalized recommendations in subsequent page views.
+The Retail Demo Store also includes workshops that demonstrate how to measure the impact of personalization using techniques like A/B testing, interleaving, and multi-armed bandit experiments. These allow you to rigorously evaluate the effectiveness of your personalization strategies and make data-driven decisions to optimize the customer experience.
+Overall, the personalization capabilities showcased in the Retail Demo Store illustrate how Amazon Personalize can be easily integrated to deliver sophisticated, scalable personalization for ecommerce applications - without the need for extensive machine learning expertise.
+ + + + + + + + + + + + + + + + +The Search demo in the Retail Demo Store showcases how to integrate Amazon OpenSearch Service (formerly Amazon Elasticsearch Service) to provide a powerful and customizable search experience for an ecommerce application.
+The current demo presents only type-ahead search at the moment, but the principles could be extended to support a fully fledged search solution.
+The core components of the Search demo are:
+Search Service: This is a RESTful web service that provides an API for querying the product catalog and returning search results. The service is deployed as a Docker container on Amazon ECS.
+OpenSearch Cluster: Amazon OpenSearch Service is used to host the product index and power the search functionality. When the Retail Demo Store is initially deployed, the product catalog is automatically indexed in OpenSearch.
+Web UI Integration: The Retail Demo Store's web user interface makes calls to the Search Service API when a user performs a search. The search results are then displayed to the user.
+Here's a step-by-step breakdown of how the Search demo works:
+The Search demo in the Retail Demo Store showcases how to leverage Amazon OpenSearch Service to provide a scalable, customizable, and integrated search experience for an ecommerce application. By combining the power of OpenSearch with the overall architecture of the Retail Demo Store, businesses can deliver a highly engaging and responsive search functionality to their customers.
+ + + + + + + + + + + + + + + + +In today's fast-paced world, consumers are constantly seeking new and innovative ways to personalize their living spaces. The Retail Demo Store's Room Makeover demo harnesses the power of cutting-edge AI technologies to enable an unprecedented level of personalization in interior design.
+Traditionally, the process of reimagining a room's décor has been time-consuming and labor-intensive. Homeowners often struggle to visualize how different design elements would look in their existing spaces, leading to hesitation and missed opportunities.
+The Room Makeover demo revolutionizes this experience by seamlessly integrating several AWS services to create a truly immersive and personalized interior design solution.
+User Uploads Room Image: Customers can upload a photo of their existing room through a secure and intuitive web interface powered by AWS Amplify and Amazon Cognito.
+Image Analysis: The uploaded image is then analyzed using Amazon Rekognition, which detects and identifies the key furniture and decor elements within the room.
+Product Matching: The detected objects are matched against a product catalog using Amazon Bedrock's Titan Multimodal Embeddings model, which provides a rich understanding of product attributes and similarities.
+Personalized Prompts: Combining the detected room elements with the product matches, the demo generates a personalized prompt that can be used to guide the AI-powered room redesign.
+Stable Diffusion Generation: The prompt is then passed to a custom Stable Diffusion model deployed on Amazon SageMaker, which generates a new image depicting the room in the selected design style.
+Continuous Optimization: The generated image is further analyzed to identify additional furniture and decor elements, which are matched back to the product catalog to allow customers to select and purchase straight from the generated room image.
+The Room Makeover demo offers several key benefits for businesses and consumers:
+Personalization at Scale: By leveraging the power of AI, the demo can generate personalized room designs for each customer, at scale, rather than relying on manual, labor-intensive processes.
+Increased Engagement and Conversion: The immersive, AI-powered experience helps customers visualize how their spaces could be transformed. The generated product in the image is automatically linked to the product catalog and features a direct "add to basket" functionality, driving increased engagement and ultimately, higher conversion rates.
+Streamlined Workflows: The automated product matching and prompt generation capabilities reduce the time and effort required by interior design professionals, enabling them to focus on higher-value tasks.
+The Room Makeover demo showcases the transformative potential of AI-powered personalization in the interior design industry. By seamlessly integrating cutting-edge AWS services, businesses can now offer their customers a truly innovative and engaging experience, ultimately driving growth and customer satisfaction.
+ + + + + + + + + + + + + + + + +The Retail Demo Store features several demo components that showcase different AWS services and capabilities:
+Room Makeover: NEW
+Combines Stable Diffusion, Anthropic Claude, Amazon Sagemaker, Amazon Bedrock, and Amazon Rekognition to generate re-styled rooms from user-uploaded images.
+Personalized Product Descriptions: NEW
+Uses Amazon Bedrock and Anthropic's Claude model to generate personalized product descriptions.
+Powered by Amazon Personalize, demonstrating use cases like similar item recommendations, personalized ranking, and user segmentation.
+Includes workshops on setting up and evaluating Personalize models.
+Uses Amazon Pinpoint for triggered email, SMS, and in-app messages (welcome emails, abandoned cart reminders, etc.).
+Demonstrates omni-channel personalization by integrating Personalize and Pinpoint.
+Geofencing and Location-aware Personalization:
+Uses Amazon Location Services to create geofences and trigger personalized offers/pickup notifications.
+Integrates Amazon OpenSearch Service to power a scalable and customizable search experience for an ecommerce application
+Enables businesses to deliver a highly engaging and responsive search functionality to their customers
+These demos showcase a wide range of AWS services and how they can be integrated to build compelling customer experiences for ecommerce, retail, and digital marketing use cases.
+ + + + + + + + + + + + + +++Before getting started, we advise you to use a Private Window (Firefox) or Incognito Window (Chrome) to make sure you don't mix different demo profiles in the same browser session
+
Since several of the features of the Retail Demo Store require a user/customer account to demonstrate effectively, this section will describe the process of creating a user account using the Retail Demo Store’s web user interface. This process also provides a good demonstration of how Amazon Cognito is used to implement user account and authentication.
+Click the “Sign In” button in the right side of the top navigation bar. This will take you to the Sign In page. Click the “Create account” link at the bottom of the Sign In form as shown below. These forms are provided by Cognito.
+ +Figure 3. Create Account Link.
+Complete the “Sign Up Account” form by entering appropriate values in each field. Note that your password must meet the complexity requirements configured in Amazon Cognito (upper- and lower-cased characters, numbers, and special characters). In addition, be sure to enter a valid email address since Cognito will send you a confirmation code via email once you submit the form. Otherwise, the only way to confirm your account is manually in the Cognito User Pool page in the AWS console. If you need to create multiple accounts to demonstrate behavior across users, a useful tip is to append a different mailbox name (“+” notation) to the username portion of your email address for each user account. For example, login+user5@example.com. You will still receive emails addressed using this format in your inbox.
+ +Figure 4. Create Account page.
+Within a few seconds after pressing the “Create Account” button on the “Sign Up Account” form you should receive an email on the provided email address. The email will contain a 6-digit confirmation code. Enter this code on the “Confirm Sign Up” form and press the “Confirm” button. If you don’t receive a confirmation code, you can have it resent or you can manually confirm your user account in the Amazon Cognito User Pool page in the AWS console in the AWS account where the Retail Demo Store instance has been deployed.
+ +Figure 5. Confirm New Account.
+Once your user account has been confirmed, you can sign in to your account with your username and password.
+ +Figure 6. Sign In to Account.
+You can tell if you’re signed in if the “Sign In” button in the top navigation is replaced by your username.
+ + + + + + + + + + + + + +These instructions are valid whenever you just want to demo the Retail Demo Store or if you would like to contribute enhancements or features to the Retail Demo Store, please read on for instructions on how to develop and test your changes.
+Thanks for considering working with this project.
+graph TB
+ B[Install the requirements];
+ B -->|if you want to customize the demo| C[Fork this Repo];
+ C --> D[Create a Github Personal Access Token]
+ B --> E;
+ D --> E[Create a Staging Bucket];
+ E --> F[Stage the code to this bucket];
+ F --> G[Deploy Cloudformation Template]
+Let's review the requirements before deploying the demo store (this was tested on a fresh EC2 instance for the Retail Demo Store. These install prerequisites apply to the Ubuntu AMI.)
+sudo apt update
+sudo apt upgrade
+
python3 -V
+
sudo apt install python3
+sudo apt install git
+mkdir RetailDemoStore
+cd RetailDemoStore/
+git clone https://github.com/aws-samples/retail-demo-store
+
Note
+If you plan to customize the demo, we recommend using your fork instead of the aws-samples one (see fork this repo)
+sudo apt install zip
+sudo apt install python3-pip
+sudo apt install python3.12-venv
+sudo apt install nodejs
+sudo apt install npm
+
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
+unzip awscliv2.zip
+sudo ./aws/install
+aws configure
+
We recommend to create a fork of the Retail Demo Store respository in your own GitHub account. That enables you to customize the code before deployment.
+Create a GitHub Personal Access Token in your GitHub account.
+Make sure that your token has the "repo", "repo:status", and "admin:repo_hook" permission scopes.
+Save your access token in a secure location, you will use it the CloudFormation parameters at deployment time.
+Create a dedicated S3 bucket specifically for staging/deployment.
+Warning
+Ensure that versioning is enabled for this bucket.
+Warning
+Your staging bucket must be in the region with in which you plan to deploy the Retail Demo Store.
+Setting Up Event Notifications to Amazon EventBridge on an S3 Bucket
+Follow these steps to configure your S3 bucket to send event notifications to Amazon EventBridge:
+The default stage script requires the ability to set the resources it uploads to your bucket as public read. Note that you do not need to set the bucket up to allow public listing of the resources in the bucket (this is not recommended).
+If you plan to enable the automated Personalize campaign creation process at deployment time, you must allow access for Amazon Personalize to your bucket. Add the following bucket policy to your staging bucket.
+{
+ "Version": "2012-10-17",
+ "Id": "PersonalizeS3BucketAccessPolicy",
+ "Statement": [
+ {
+ "Sid": "PersonalizeS3BucketAccessPolicy",
+ "Effect": "Allow",
+ "Principal": {
+ "Service": "personalize.amazonaws.com"
+ },
+ "Action": [
+ "s3:GetObject",
+ "s3:ListBucket"
+ ],
+ "Resource": [
+ "arn:aws:s3:::<your bucket name>",
+ "arn:aws:s3:::<your bucket name>/*"
+ ]
+ }
+ ]
+}
+
We recommend to use a Python 3 virtual environment. Current supported version of python is 3.12 (other versions may work but we haven't tested all versions)
+python3.12 -m venv .venv/
+source .venv/bin/activate
+
The stage.sh
script at the root of the repository must be used to upload the deployment resources to your staging S3 bucket if you use this option. The shell uses the local AWS credentials to build and push resources to your custom bucket.
Example on how to stage your project to a custom bucket and path (note the path is optional but, if specified, must end with '/'):
+./stage.sh MY_CUSTOM_BUCKET S3_PATH/ --skip-virtualenv
+
The stage script will output a path to your master deployment CloudFormation template. You can use this link to your S3 bucket to start a new deployment via the CloudFormation console in your AWS Console. Please read and complete any required parameters. The mandatory parameters to fill up are:
+All the others will work by default, take the time to read and decide which parameters you want to use
+Note
+You can also use the command line below. (replace REGION, MY_CUSTOM_BUCKET and S3_PATH value). +This script deploys the retail demo store with standard options, you cannot change any parameters directly
+./scripts/deploy-cloudformation-stacks.sh DEPLOYMENT_S3_BUCKET S3_PATH REGION STACK_NAME
+
Integration tests can be run on either
+The Makefile in this folder allows tests to be ran in bulk (or by service/function) without any additional setup.
+Run commands in this directory (src/run-tests
)
Example usage:
+# Run this only once to generate `.venv` folder with all dependencies in all `integ` folders
+make setup
+
+# Run integation tests of all services
+make integ
+
+# Run integration test of a specific service (default to running against local Docker container)
+make integ SERVICE=recommendations
+
+# Run integration test of a specific on a target endpoint
+make integ SERVICE=recommendations RECOMMENDATIONS_API_URL=http://retai-LoadB-xxx-yyy.us-west-2.elb.amazonaws.com
+
You can find the list in <root_project_folder>/.env.template
. All of them have default values and should work out of the box.
The important variables are the <SERVICE>_API_URL
. They are used to redirect the tests to run against different URLs.
NB: For local development you may need to set up dependencies like local dynamodb before testing. Refer to individual service test READMEs for more detailed info on local dependencies
+make
Runs default target (test
).
make test
Run all tests of all types. Currently, only integration tests are supported.
+make setup
Installs test requirements inside a virtual environment .venv
.
make venv
Create virtual environment.
+make integ SERVICE=
Depends on setup
target. Run all integration tests. (Optional: Specify SERVICE parameter to run tests for that service only).
make clean
Remove virtual environment.
+ + + + + + + + + + + + + +The Retail Demo Store's web services such as users, carts, orders, products, and others can be run locally on your development system using Docker Compose. You can choose to run them all locally or just one or two locally and the rest running in your AWS account. For example, suppose you're working on an enhancement or fix in the products service. You can run just that service locally to test your changes while all of the other services are running in your AWS account. If your changes require UI testing, you can run the web-ui in a local container as well configured to connect to your local product service instance while still having both of them connect to the other services running in your AWS account.
+Before you can run the Retail Demo Store web services locally, you must first deploy the Retail Demo Store project to your AWS account and then clone this repository to your local machine. The instructions below provide additional details on configuration and how to setup the services to run locally. The docker-compose.yml file includes the configuration used by Docker Compose. Note that there are some dependencies between services which are noted.
+Besides cloning this repository to your local system, you also need to have the AWS CLI installed and configured locally.
+Docker Compose will load the .env
file to resolve environment variables referenced in the docker-compose.yml file. You can copy the .env.template file to .env
+as a starting point. This is where you can customize variables to match your desired configuration.
You can find the common environment variables from your deployed stack in the CloudFormation output name ExportEnvVarScript
. Use this CLI to get the output in a proper format.
aws cloudformation describe-stacks --stack-name retaildemostore \
+ --region REGION \
+ --query "Stacks[0].Outputs[?OutputKey=='ExportEnvVarScript'].OutputValue" \
+ --output text
+
Then you can copy and override variables for each service in your .env file.
+Since some of the Docker images are hosted in Amazon ECR, you must authenticate your shell session before running docker-compose. Otherwise, the images will not be able to be downloaded. Run the following command to authenticate before running docker-compose. You should only have to do this once per shell session.
+aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
+
Docker compose will pick variables set in your shell when building and launching the services. Make sure you set the correct environement variables in your shell before doing the docker compose up command. You can find more information about all the different ways of setting aws credentials in this documentation
+export AWS_ACCESS_KEY_ID=xxx
+export AWS_SECRET_ACCESS_KEY=xxx
+export AWS_SESSION_TOKEN=xxx
+
The following command will build and launch all Retail Demo Store web services in your local Docker engine.
+docker compose up --build
+
You can also choose to run specific services locally by appending the service names to the above command. For example, the following command builds and launches the products and web-ui services only. Note that some configuration of the web-ui environment will likely be needed to match your configuration.
+docker compose up --build products web-ui
+
For instructions specific to each Retail Demo Store web service, view the README page in each service sub-directory.
+When deployed to AWS, the Web UI is hosted in an S3 bucket and served by CloudFront. For local development, you can deploy the Web UI in a Docker container. Since the Web UI makes REST API calls to all of the other services, you can configure the web-ui/.env
file for which there is an example at web-ui/.env.template
to point to services running either locally or deployed on AWS or a combination. Just update the appropiate environment variables to match your desired configuration.
Note
+If you are going to work on frontend updates, instead of using docker you can run: +
npm install
+npm run dev
+
There is a swagger-ui
service in the docker-compose.yml
. You can access it via localhost:8081. From there, you can select which service you want to check and send request against the service via Swagger UI.
The Dockerfile
of swagger-ui
copies OpenAPI spec from each service (located at <serviceName>/openapi/spec.yaml
). If you add a new service, please ensure that you write the OpenAPI spec and update the Dockerfile
to copy yours.
For more details, including how to deploy, see workshops/5-Conversational/5.2-AlexaHandsfree.md
.
The Carts web service provides a RESTful API for adding, changing, and deleting shopping carts. The Web UI makes calls to this service as a user adds and removes items from their cart and during checkout.
+When deployed to AWS, CodePipeline is used to build and deploy the Carts service as a Docker container to Amazon ECS behind an Application Load Balancer. The Carts service can also be run locally in a Docker container. This makes it easier to iterate on and test changes locally before commiting.
+foo@bar:~$ docker compose up --build -d carts
+
Once the container is up and running, you can access it in your browser or with a utility such as Postman at http://localhost:8003.
+To run integration tests for the carts service a Python virtual environment and local dynamodb is required. You must have Python 3.8+ installed on your system to run the commands below. The commands are written to be ran from the test directory of the carts service (src/carts/test
).
To run integration tests for the carts service a Python virtual environment is required. You must have Python 3.8+ installed on your system to run the commands below. The commands are written to be ran from the test directory of the carts service (src/carts/test
).
The following command will create a virtual environment. +
python3 -m venv .venv
+
Some environment variables are required to run the tests and need to be added to the virtual environment. The example below will work for local development. Change as required depending on environment. +
echo '
+export CARTS_API_URL="http://localhost:8003"
+export TEST_USERNAME="user1344"'>> .venv/bin/activate
+
To activate and enter the virtual environment. +
source .venv/bin/activate
+
To install requirements for the integration tests. +
pip install -r integ/requirements.txt
+
To run the tests. +
pytest integ/test_carts.py
+
You can exit the virtual environment with deactivate
.
If you want to edit the request bodies for any of the PUT
or POST
request tests you can do so in json_request_bodies.json
The location web service provides an API for retrieving store locations and +customer routes to support to Location Services demo in the Retail Demo Store. +To use the demo, see "Retail Geofencing and Location-aware Personalization" +in the in-app Demo Guide.
+This service has two APIs. Check Swagger UI for the API details.
+The location service can be built and run locally (in Docker) using Docker Compose. See the local development instructions for details. From the ../src
directory, run the following command to build and deploy the service locally.
foo@bar:~$ docker compose up --build location
+
Once the container is up and running, you can access it in your browser or with a utility such as Postman at http://localhost:8008.
+ + + + + + + + + + + + + +The Offers web service provides a RESTful API for retrieving coupons.
+To see this used, see "Retail Geofencing and Location-aware Personalization" +in the in-app Demo Guide.
+When deployed to AWS, CodePipeline is used to build and deploy the Offers service as a Docker container to Amazon ECS behind an Application Load Balancer. The Offers service can also be run locally in a Docker container. This makes it easier to iterate on and test changes locally before commiting.
+The Offers service can be built and run locally (in Docker) using Docker Compose. See the local development instructions for details. From the ../src
directory, run the following command to build and deploy the service locally.
foo@bar:~$ docker compose up --build offers
+
Once the container is up and running, you can access it in your browser or with a utility such as Postman at http://localhost:8008.
+ + + + + + + + + + + + + +The Orders web service provides a RESTful API for creating and retrieving orders. The Web UI makes calls to this service when a user goes through the checkout process or when viewing their orders.
+When deployed to AWS, CodePipeline is used to build and deploy the Orders service as a Docker container to Amazon ECS behind an Application Load Balancer. The Orders service can also be run locally in a Docker container. This makes it easier to iterate on and test changes locally before commiting.
+The Orders service can be built and run locally (in Docker) using Docker Compose. See the local development instructions for details. From the ../src
directory, run the following command to build and deploy the service locally.
foo@bar:~$ docker-compose up --build orders
+
Once the container is up and running, you can access it in your browser or with a utility such as Postman at http://localhost:8004.
+To run integration tests for the Orders service a Python virtual environment is required. You must have Python 3.8+ installed on your system to run the commands below. The commands are written to be ran from the test directory of the orders service (src/orders/test
).
The following command will create a virtual environment. +
python3 -m venv .venv
+
Some environment variables are required to run the tests and need to be added to the virtual environment. The example below will work for local development. Change as required depending on environment. +
echo '
+export ORDERS_API_URL="http://localhost:8004"
+export TEST_ORDER_ID="1"
+export TEST_USERNAME="user1344"' >> .venv/bin/activate
+
To activate and enter the virtual environment. +
source .venv/bin/activate
+
To install requirements for the integration tests. +
pip install -r integ/requirements.txt
+
To run the tests. +
pytest integ/test-orders.py
+
You can exit the virtual environment with deactivate
.
If you want to edit the request bodies for any of the PUT
or POST
request tests you can do so in json_request_bodies.json
The Products web service provides a RESTful API for retrieving product information. The Web UI makes calls to this service when a user is viewing products and categories and the Personalize workshop connects to this service to retrieve product information for building the items dataset.
+When deployed to AWS, CodePipeline is used to build and deploy the Products service as a Docker container in Amazon ECS behind an Application Load Balancer. The Products service can also be run locally in a Docker container. This makes it easier to iterate on and test changes locally before commiting.
+The Products service can be built and run locally (in Docker) using Docker Compose. See the local development instructions for details. Since the Products service has a dependency on DynamoDB as its datastore, you can either connect to DynamoDB in your AWS account or run DynamoDB locally (default). The docker-compose.yml and template .env
(.env.template) is already setup to run DynamoDB locally in Docker. If you want to connect to the real DynamoDB instead, you will need to configure your AWS credentials and comment the DDB_ENDPOINT_OVERRIDE
environment variable since it is checked first. From the ../src
directory, run the following command to build and deploy the service locally.
foo@bar:~$ docker compose up --build products
+
Once the container is up and running, you can access it in your browser or with a utility such as Postman at http://localhost:8001.
+Alternatively, you can run the Products service directly, although you will need to setup the required environment variables (See the .env.template file mentioned above) and setup DynamoDB locally or through your AWS account.
+From the (src/products/src
) directory setup a virtual env:
+
python3 -m venv .venv
+
source .venv/bin/activate
+
pip install -r requirements.txt
+
FLASK_CONFIG
env variable to Development
+export FLASK_CONFIG=Development
+
flask run
+
python3 wsgi.py
+
8001
, you can change this by setting the FLASK_RUN_PORT
environment variable, e.g:
+set FLASK_RUN_PORT=xxxx
+
The DynamoDB tables can be created and loaded with sample data by calling the init endpoint: +
POST http://localhost:8001/init
+
The following entrypoints are supported by the Products service
+Displays the service welcome page.
+Returns details on all products.
+Returns details on the product(s) identified by {productIDs}
. Multiple product IDs can be specified by separating each product ID by a comma. If a single product ID is specified, a single product will be returned. Otherwise, if multiple product IDs are specified, an array of products will be returned.
Returns details on all featured products. Featured products are those with featured attribute equal to true.
+Returns details on all products within the category with the name {categoryName}
.
Updates the product identified by {productID}
.
Deletes the product identified by {productID}
.
Creates a new product.
+Updates the current inventory value for the product identified by {productID}
.
Returns details on all categories.
+Returns details on the category identified by {categoryID}
.
To run integration tests for the Products service a Python virtual environment is required. You must have Python 3.8+ installed on your system to run the commands below. The commands are written to be ran from the test directory of the products service (src/products/test
).
The following command will create a virtual environment. +
python3 -m venv .venv
+
Some environment variables are required to run the tests and need to be added to the virtual environment. The example below will work for local development. Change as required depending on environment. +
echo '
+export PRODUCTS_API_URL="http://localhost:8001"
+export TEST_PRODUCT_ID="8bffb5fb-624f-48a8-a99f-b8e9c64bbe29"
+export TEST_CATEGORY_NAME="tools"
+export TEST_CATEGORY_ID="16"' >> .venv/bin/activate
+
To activate and enter the virtual environment. +
source .venv/bin/activate
+
To install requirements for the integration tests. +
pip install -r integ/requirements.txt
+
To run the tests. +
pytest integ/test-products.py
+
You can exit the virtual environment with deactivate
.
If you want to edit the request bodies for any of the PUT
or POST
request tests you can do so in json_request_bodies.json
The Recommendations web service provides a RESTful API for retrieving personalized product recommendations, + related products, product reranking, and suggested discounts (powered by Amazon Personalize). + The Web UI makes calls to this service when a user is viewing the home view (recommended products), product detail view (related products), or the category view (personalized ranking of products). If Amazon Personalize campaigns have been created for these use-cases (either by the deployment Lambda option or by stepping through the Personalization workshop), then those campaigns will be called by the Recommendations service. Otherwise, the service will call the Products service to provide a suitable default behavior such as displaying featured products or products from the same category as the displayed product.
+This service also provides support for running experiments for personalization approaches using techniques such as A/B testing, interleaving results testing, and multi-armed bandit testing. The Experimentation workshops are designed to walk you through how to setup, run, and evaluate experiments.
+When deployed to AWS, CodePipeline is used to build and deploy the Recommendations service as a Docker container to Amazon ECS behind an Application Load Balancer. The Recommendations service can also be run locally in a Docker container. This makes it easier to iterate on and test changes locally before commiting.
+The Recommendations service can be built and run locally (in Docker) using Docker Compose. See the local development instructions for details. From the ../src
directory, run the following command to build and deploy the service locally.
foo@bar:~$ docker compose up --build recommendations
+
Once the container is up and running, you can access it in your browser or with a utility such as Postman at http://localhost:8005.
+ + + + + + + + + + + + + +The Search web service provides a RESTful API for retrieving product information based on a search term. The Web UI makes calls to this service when a user performs a search. Internally, this service makes calls to an OpenSearch cluster for search results. When deployed on AWS, Amazon OpenSearch Service is used. When deployed locally, a local OpenSearch node is used for searches.
+When the Search service and Amazon OpenSearch are initially deployed to your AWS account, product information is not present in an index and therefore searches from the Web UI will not return results. There are two options for indexing products in OpenSearch when deploying to AWS. First, when deploying the Retail Demo Store project, the CloudFormation template has an option to index the product catalog in OpenSearch as part of the deployment process. The second option is to step through the Search workshop.
+When deployed to AWS, CodePipeline is used to build and deploy the Search service as a Docker container to Amazon ECS behind an Application Load Balancer. The Search service can also be run locally in a Docker container. This makes it easier to iterate on and test changes locally before commiting.
+The Search service can be built and run locally (in Docker) using Docker Compose. See the local development instructions for details. From the ../src
directory, run the following command to build and deploy OpenSearch and the Search service locally.
foo@bar:~$ docker compose up --build opensearch search
+
Once the container is up and running, you can access it in your browser or with a utility such as Postman at http://localhost:8006.
+As explained above, when the Search service and OpenSearch are deployed, the product information does not exist in an OpenSearch index. When deploying locally, you can use the local_index_products.py script after starting the opensearch
Docker container to create and load the products index.
The Users web service provides a RESTful API for creating, updating, and retrieving users. The Web UI makes calls to this service when a user signs up or updates their profile.
+When deployed to AWS, CodePipeline is used to build and deploy the Users service as a Docker container to Amazon ECS behind an Application Load Balancer. The Users service can also be run locally in a Docker container. This makes it easier to iterate on and test changes locally before commiting.
+The Users service comes preloaded with 5,000 fake user profiles. The generate_users_json.py script was used to create these profiles. The resulting profiles data file is bundled with the Retail Demo Store deployment. Therefore, you should not need to run the generate users script under normal conditions.
+++The reason why so many profiles are preloaded is to support the sample sizes needed to simulate experiements in the Experimentation workshops.
+
The Users service can be built and run locally (in Docker) using Docker Compose. See the local development instructions for details. From the ../src
directory, run the following command to build and deploy the service locally.
foo@bar:~$ docker compose up --build users
+
Once the container is up and running, you can access it in your browser or with a utility such as Postman at http://localhost:8002.
+To run integration tests for the Users service a Python virtual environment is required. You must have Python 3.8+ installed on your system to run the commands below. The commands are written to be ran from the test directory of the Users service (src/users/test
).
The following command will create a virtual environment. +
python3 -m venv .venv
+
Some environment variables are required to run the tests and need to be added to the virtual environment. The example below will work for local development. Change as required depending on environment. +
echo '
+export USERS_API_URL="http://localhost:8002"
+export TEST_USER_ID="1"
+export TEST_USERNAME="user1"
+export TEST_IDENTITY_ID="eu-west-1:12345678-1234-1234-1234-c777c9720775"
+export TEST_PRIMARY_PERSONA="tools"
+export TEST_AGE_RANGE="18-24"' >> .venv/bin/activate
+
To activate and enter the virtual environment. +
source .venv/bin/activate
+
To install requirements for the integration tests. +
pip install -r integ/requirements.txt
+
To run the tests. +
pytest integ/test-users.py
+
You can exit the virtual environment with deactivate
.
If you want to edit the request bodies for any of the PUT
or POST
request tests you can do so in json_request_bodies.json
The Videos service streams product videos and synchronised metadata to Amazon Interactive Video Service and provides stream metadata (stream endpoints and products contained within the stream) via a Flask API. The Web UI makes calls to the service when a user views the 'Live' view. The endpoint provides a list of stream ingest endpoints, each with a list of their associated products, allowing the UI to present all products from the video before they appear in the stream.
+When deployed to AWS, CodePipeline is used to build and deploy the Videos service as a Docker container to Amazon ECS behind an Application Load Balancer. The Videos service can also be run locally in a Docker container. This makes it easier to iterate on and test changes locally before commiting.
+IVS channels are created and managed by the CloudFormation template. The default CloudFormation settings do not create any new IVS streams - instead the demo directs the UI to four externally hosted IVS streams.
+To create and use IVS channels hosted in your own account, the option 'Use default IVS streams' should be set to 'No' when deploying CloudFormation. In this case, one IVS channel will be created for each '.mkv' video found in the videos/
path of the staging S3 bucket. These videos should be uploaded by running the provided staging script - any videos in the local videos/
directory will be uploaded.
IMPORTANT: Amazon IVS is currently only supported in the N. Virginia (us-east-1), Oregon (us-west-2), and Ireland (eu-west-1) regions. Therefore, to deploy the Retail Demo Store in a region that does not support IVS, be sure to select to use the Default IVS Streams CloudFormation template parameter.
+To enable full UI integration with custom videos, metadata must be embedded into the .mkv file.
+Metadata must be created in the .srt
format, with each timestamped entry containing data in the form:
+{"productId": <PRODUCT_ID>}
. The Videos service sends the metadata at the start of the timestamp. The latter section of the timestamp is not used. The file can either be edited manually or using an SRT editor (either software or online). An example metadata file can be seen here.
This metadata can then be combined with a video file to create an encoded .mkv
file with embedded metadata by running the following command:
+
ffmpeg -i <INPUT_VIDEO_PATH> -i <INPUT_METADATA_PATH>.srt -vf scale=640x360 -c:v libx264 \
+-pix_fmt yuv420p -profile:v main -tune fastdecode -x264opts “nal-hrd=cbr:no-scenecut” -minrate 3000 \
+-maxrate 3000 -g 60 -c:a aac -b:a 160k -ac 2 -ar 44100 <OUTPUT_FILE_PATH>.mkv
+
.mkv
file created with this command is ready to be staged and should provide optimal UI integration.
+The command also pre-encodes the video in a format designed to reduce the CPU & memory requirements of the Videos service.
+The Videos service can be built and run locally (in Docker) using Docker Compose. See the local development instructions for details. From the ../src
directory, run the following command to build and deploy the service locally.
foo@bar:~$ docker compose up --build videos
+
Once the container is up and running, you can access it in your browser or with a utility such as Postman at http://localhost:8007.
+ + + + + + + + + + + + + +Q: When accessing the Retail Demo Store web application after deploying the project, a CloudFront error is displayed. What's wrong?
+A: Sign in to the AWS account/region where the project was deployed and browse to CodePipeline. Verify that the pipeline with "WebUIPipeline" in the name has successfully been built. If it failed, inspect the details of the Build stage to diagnose the root cause.
+Q: When accessing the Retail Demo Store web application after deploying the project, the home page shows spinning icons and products are never loaded. What's wrong?
+A: The most likely cause is an error building or deploying one or more of the microservices. Sign in to the AWS account/region where the project was deployed and browse to CodePipeline. Verify that all of the Retail Demo Store pipelines have completed successfully. Inspect the details for any that have failed to determine the root cause. Sometimes just manually triggering a build/deploy will resolve the issue.
+Q: This project is expensive to run (or keep running). How can I reduce the running cost of a deployment?
+A: The most costly service in the project for an idle deployment is Amazon Personalize. You can eliminate Personalize idle costs by stopping all Amazon Personalize recommenders and deleting all campaigns in the Retail Demo Store dataset group for Personalize. This just shuts down the real-time inference endpoints; the datasets and ML models will remain. You should also change all of the recommender and campaign ARN parameter values in the AWS Systems Manager Parameter Store to NONE
, leaving the parameter values for filters and the event tracker alone. These parameter names start with /retaildemostore/personalize/
(e.g., /retaildemostore/personalize/recommended-for-you-arn
). Once you complete these steps, the storefront will fall back to default behavior for recommending products from the catalog. To reactive Personalize, start the recommenders and create campaigns and then set the recommender and/or campaign ARNs back in the Systems Manager Parameter Store. The storefront will automatically start showing recommendations from Personalize again.
If you encounter a bug, please create a new issue with as much detail as possible and steps for reproducing the bug. See the Contributing Guidelines for more details.
+ + + + + + + + + + + + + +The Retail Demo Store uses all three supported dataset types +for Amazon Personalize: users, items, and interactions. Additionally, an Amazon Personalize Event Tracker is +utilized to capture real-time events in the web user interface which populate the Personalize-managed event +interactions dataset. AWS Amplify is used to send events to the Retail Demo Store’s Personalize Event Tracker.
+With the exception of the real-time event data which is created as a result of your browsing behavior in the web +user interface, the data in the users, items, and interactions datasets are composed of fictitious, or in the case +of interactions history, synthetically generated data.
+ + + + + + + + + + + + + +With Amazon Personalize Solutions and Campaigns created based on the generated users, items, and interactions +datasets, we can emulate (or assume) user profiles for different personas in the web user interface to see +recommendations that should be consistent with the persona. In order to emulate a profile, you must first sign in +to the user account you created for yourself.
+Once signed in, you'll see the shopper assigned to you on the top +right corner. You can switch the shopper at any time by clicking the name of the user and selecting the "Switch +shoppers" option.
+ + + + + + + + + + + + + + +Generative AI can be used to automate the creation of marketing content. This includes generating text for blogs, social media posts, and emails, as well as creating images and videos. +This can save marketers a significant amount of time and effort, allowing them to focus on other aspects of their marketing strategy.
+Where it really shines is the ability to productionize marketing content creation, reducing the needs for marketers to create multiple copies for different customer segments. +Previously, marketers would need to generate many different copies for each granularity of customers (e.g. attriting customers who are between the age of 25-34 and loves food). +Generative AI can automate this process, providing the opportunities to dynamically create these contents.
+This demo integrates the product service with Amazon Bedrock, to retrieve personalized product descriptions based on the logged-in user's age and interests.
+Amazon Bedrock makes Foundation Models (FMs) accessible via an API, and in this demo, Anthropic Claude v2 is the underlying FM used.
The prompt used to generate personalised product descriptions takes the following form:
+ I'd like you to rewrite the following paragraph using the following instructions:
+ "{instructions}"
+
+ "{original product description}"
+
+ Please put your rewrite in <p></p> tags.
+
The instructions used are:
+Please generate an enhanced product description personalised for a customer aged {age range}, interested in {interests}.
+However, do not mention their age in the rewrite.
+The product is named "{product name}" and is a product of type "{product type}" in the {product category} category.
+
Imagine being able to instantly re-imagine a room in different decor styles. +This demo combines Stable Diffusion, Amazon Sagemaker, Amazon Bedrock and Amazon Rekognition to enable an innovative approach to generating re-styled rooms from an initial user uploadedimage.
+ +The first step of the step function performs image analysis on the uploaded room image. The output of the step is a prompt that can passed to the Stable Diffusion model.
+ +The prompt used with the Claude 3 Haiku model to generate the product captions was as follows:
+Identify the {category} product in the image. Then identify the dominant color or colours of the {category} product. Be descriptive. Ignore the background. Name the product and then describe it without any preamble.
+<example>Sofa, deep, plush green color with a smooth, velvet-like texture. It features a rectangular shape with a modern, streamlined silhouette and two cylindrical cushions at either end, serving as armrests. The sofa has three seat cushions that create a single seating surface without separations, and the back cushion runs the length of the sofa in a single piece as well, contributing to its sleek design. There are no visible patterns or prints on the fabric, which gives it a rich, uniform look. The sofa's legs are short, cylindrical, and appear to be made of light-colored wood</example>
+
Amazon Location Services is an Amazon provision of maps, location indexing, geofencing, user tracking, and routing. Geofencing can be used to set off chains of events just when they need to be set off - when your customer is in the right place, at the right time. In this demo we use it together with the ecommerce platform and Amazon Pinpoint to engage customers when they approach physical stores.
+Customers are inspired to opt in to share their location by being provided with personalized offers. These offers can be related to customer preferences, local stock levels, and more. In this demo we use Amazon Personalize to select an offer to show to a consumer that can be redeemed in-store. The consumer has the extra convenience and we have enaged with them in a targeted fashion and, moreover, attracted them into our bricks and mortar store where the experience will be, naturally, more personal than online.
+There is also an in-store interface that shows a sample view for store staff showing orders that are about to be collected, and transactional messaging for user and store staff around pickup that is triggered by the user approaching the store for pickup.
+To use the Amazon Location functionality, Location Services must be enabled in your region. First, ensure you are deploying Retail Demo Store in a region in which Location is enabled. Next, enable "Deploy Location Services resources" and "Deploy personalized offers and pickup notices using Location Services geofencing" when deploying or updating the solution from CloudFormation. A Location geofence will be set up for you.
+From any Retail Demo Store "Shop" menu You can access the Location "In-Store View" where you can see orders made to be collected from in-store. From there you can navigate to "Location Geofence" where you can see the Location Services-provided map and simulated user - from here you can initiate simulations of users travelling close to the default configured store either during a scenario where Location Services can be used to enable a quick collection of bought products and related messaging using Pinpoint Transactional Messaging to email, SMS or web ("collection" scenario), or where the user might be inspired to enter the store to make a new purhcase through the triggering of personalised messages sent using Pinpoint Campaigns to email, SMS and web, either containing offers chosen with Amazon Personalize or containing notices about unfinished shopping carts ("purchase" scenario).
+If you are in the email "sandbox" for Pinpoint, then all recipient emails must be verified according to the below process, to ensure that the emails will be sent.
+Note that you can manage your email and SMS limits within the "Settings" > "Email" and "Settings" > "SMS and voice" menus available under your Pinpoint project. Also note that there are additional limits imposed when your account is in the Pinpoint "sandbox". +Enable SMS sending.
+Ensure any phone number in the Pinpoint database to which you intend to send promotional messages (the "purchase" journey above - for the "collection" journey, the phone number will be recorded against the order) has opted in to receive promotional messages. For more information on how to ensure this, see the "Two-Way SMS with Pinpoint" section in the Pinpoint messaging workshop. In brief, you need to (in the USA):
+Amazon Pinpoint enables organizations to deliver messages across email, text, mobile push, voice, and custom +channels like messenger apps and retail apps. These messages can be augmented with data output from ML services +like Amazon Personalize for Personalization, Recommendations, Next-Best-Actions, among other use cases. User +attributes from Amazon Personalize can be selected within the Amazon Pinpoint console or API in order to +personalize the content of email templates in real-time. Importantly, this enables organizations to deliver a +unified, omni-channel personalization experience.
+Here,
+Pinpoint sends new users a welcome email after they sign up for a Retail Demo Store account. Check the email +entered during account creation and look for the Retail Demo Store welcome email. If you’d like to send the +email to a different email address, go to the Account settings page and enter the new one.
+When Retail Demo Store users add items to their shopping cart but do not complete an order, Amazon Pinpoint +send an email with a coupon code encouraging them to finish their order. To see this feature, add a few items +to your shopping cart. In the shopping cart page, click on the button that says ”Trigger Abandoned Cart +email”. This action will emulate a signed out event and will trigger the abandoned cart email sent by Amazon +Pinpoint. Next, check the email account provided during account creation. The Abandoned Shopping Cart email will be in your +inbox.
+Amazon Pinpoint has deep configuration options for SMS (text) messaging and can deliver messages to every country +in the world. Retail / eCommerce organizations have many use cases for text messaging - including transactional +uses like purchase confirmations and marketing uses like promotions. These messages can be augmented with data +output from ML services like Amazon Personalize for Personalization, Recommendations, Next-Best-Actions, among +other use cases. User attributes from Amazon Personalize can be selected within the Amazon Pinpoint console or API +in order to personalize the content of templates in real-time. Importantly, this enables organizations to deliver +a unified, omni-channel personalization experience.
+This demo showcases personalized product recommendation via text message. Try this feature by opting-in to receive +text alerts.
+In the USA it is a legal requirement that you subscribe to a phone number or +long code in order to be able to send text messages and receive them. +If you have not followed the Pinpoint messaging workshop to enable +messaging, but you set "Auto-Configure Pinpoint" to "Yes" when you deployed +the demo, you are almost set up. The following steps show how you can finish set-up:
++11234567890
). You may also enter this information when deploying Retail Demo Store with CloudFormation.The home page, shopping cart page and every product page in the store include a field to opt-in. Enter the mobile phone number where you’d like to receive the one-time automated marketing message.
+ +You will receive a text message to confirm the subscription. Reply “Y” to confirm. Upon confirmation, you’ll receive a 20% discount code.
+Next, you’ll receive one text message with one personalized product recommendation. The message will include a URL that will redirect you to the Retail Demo Store
+ + + + + + + + + + + + + +Amazon Pinpoint enables organizations to create user segments - or groups of customers - based on their behavior +across web/mobile applications, interactions over email, text, push notifications, and other channels, or based on +stored data. This is important in retail environments because customers deliver valuable intent data across +in-store, e-commerce, and customer engagement channels. Pinpoint enables organizations to create a single event +bus of all these interactions to inform segmentation, personalized messaging, and analytics.
+These segments can often be created and responded to in real-time. Here, your clickstreams in the Retail Demo +Store application are ingested by Amazon Pinpoint to create new user segments in real-time. These segments are +then used to deliver the targeted messages that receive throughout the demo.
+AWS Messaging And Targeting Blog
+“We want to send messages through dynamic segmentation.When we send a push notification, we need to +dynamically segment immediately. When we call AmazonPinpoint to say “Create this segment right now, for +this game event that’s happening right now, and thencreate this campaign right now, and then send it, and +Pinpoint does all of that in milliseconds.”
+Read full AWS Messaging & Targeting Blog post: +How Disney Streaming Services Uses Amazon Pinpoint to Send Personalized Messages to Millions of Users in Real Time
+ + + + + + + + + + + + + +Personalized user experiences are implemented across several features within the Retail Demo Store web user interface that demonstrate three core use-cases of Amazon Personalize as well as real-time recommendations.
+++In order to demonstrate the personalization capabilities of the Retail Demo Store, the required Amazon Personalize Solutions and Campaigns must already be created and enabled via Amazon SSM Parameters. These Solutions and Campaigns can be created as part of the Personalization workshop bundled with the Retail Demo Store or automatically when the Retail Demo Store is deployed via CloudFormation. If you’re demonstrating with the Retail Demo Store this should already be done for you but still good to be aware if personalization features are not working as expected.
+
The Retail Demo Store uses all three supported dataset types for Amazon Personalize: users, items, and interactions. Additionally, an Amazon Personalize Event Tracker is utilized to capture real-time events in the web user interface which populate the Personalize-managed event interactions dataset. AWS Amplify is used to send events to the Retail Demo Store’s Personalize Event Tracker.
+With the exception of the real-time event data which is created as a result of your browsing behavior in the web user interface, the data in the users, items, and interactions datasets are composed of fictitious, or in the case of interactions history, synthetically generated data.
+To provide a more compelling and intuitive demo experience, each fictitious user in the Retail Demo Store is assigned a shopper persona. The persona is represented by three categories from the Retail Demo Store’s catalog which the user has an affinity. The affinity for each category is also weighted such that the first category is is highest weighted and the third category is the lowest. There are 16 combinations of categories that represent the personas used across all users.
+For example, a user assigned with a persona of "footwear_jewelry_furniture" indicates that the user, at least historically, has been primarily interested in products from the Footwear category and to decreasing degrees of interest in products from the Jewelry and Furniture categories. That initial weighted interest is codified in the generation of the historical interaction dataset which is used to train Solutions in Amazon Personalize. So, for our "footwear_jewelry_furniture" user, interaction events are generated across products in all three of those categories to create a synthetic history of engaging in products matching that persona. Additionally, some products are tagged with an gender affinity. This is used when generating historical events to filter products against the gender of each user to further add realism to the recommendations.
+Events for multiple event types are generated to mimic shopping behavior. For example, most generated event types are 'View' to mimic users browsing the site. Occasional checkouts are simulated with 'AddToCart' followed by 'ViewCart', 'StartCheckout', and 'Purchase' events. The Personalize solutions/models are trained on the 'View' event type.
+With Amazon Personalize Solutions and Campaigns created based on the generated users, items, and interactions datasets, we can emulate (or assume) user profiles for different personas in the web user interface to see recommendations that should be consistent with the persona. In order to emulate a profile, you must first sign in to the user account you created for yourself as described in Creating a Retail Demo Store account. Once signed in, you can click on your username in the top right-corner and then select Switch Shoppers.
+ +Figure 7. Access Profile Page.
+You can have a shopper auto-selected for you or you can choose your own. In the shopper selection window, specify an age range and a primary shopping interest. Click Submit and a closely matching shopper is shown, confirm your choice or try again. Product recommendations should now match the persona of the shopper you've selected.
+++It is recommended to open a new Incognito (Chrome) or Private (Firefox) browser window when testing personalization features of the web UI. The reason for this is because Amplify keeps all of your events tied to the same logical session. Signing out and back in as a different account does not change this behavior. You must close and reopen Private/Incognito windows to switch between profiles.
+
Amazon Personalize Recipe: User-Personalization
+The user personalization use-case is implemented on the bottom half of the Retail Demo Store home view when you are signed in to a Retail Demo Store user account. Be sure to emulate a shopper profile as described above so that a persona is linked to your session. Product recommendations in the “Inspired by your shopping trends” section are being powered by Amazon Personalize. If you’re not signed in, featured products will be displayed here instead.
+++ +Since the Retail Demo Store is using a Personalize Event Tracker to record real-time interaction events, it is important to keep in mind that recommendations will change as a result of your clicking and browsing activity in the web application. Therefore, the recommendations may not match up to the original shopper persona used to train the model. This is a powerful demo feature, though, since it shows how Personalize adapts to evolving user intent. It can also show how recommendations adapt for new users (i.e. cold starting users).
+
Figure 8. User recommendation use-case.
+Amazon Personalize Recipe: SIMS
+The related products use-case is implemented on the product detail page in the Retail Demo Store. Since inference calls to campaigns built with the SIMS recipe do not require a user, we are able to display related products using SIMS whether you are signed in as a user or anonymous.
+ +Figure 9. Related products use-case.
+Amazon Personalize Recipe: Personalized-Ranking
+When you are signed in as a Retail Demo Store user, the personalized ranking use-case is implemented on the category view in the Retail Demo Store. When you are an anonymous user, products are displayed in their natural order (i.e. not ranked). The most effective view to demonstrate this use-case is on the “Featured” product view. The reason for this is that this is the one category view that includes products from multiple categories. Therefore, the ranking should be more impactful.
+ +Figure 10. Personalized Ranking use-case.
+You can also see personalized ranking in product search results. That is, if you are signed in as a user, search results are reranked based on the user's historical and real-time activity.
+ +The following semantic interaction event types are instrumented in the Retail Demo Store web user interface. Each time a user (anonymous or known) performs one the following actions, an event is sent to both Amazon Pinpoint (signed in only) and an Amazon Personalize Event Tracker (if configured).
+To assess the impact of real-time event tracking in recommendations made by the user recommendations on the home page, follow these steps.
+If you are demonstrating the Retail Demo Store to a more technical audience, you can illustrate how the events are sent to Pinpoint and Personalize in the background. To do so, open up the Developer Tools in the web browser you’re using (i.e. Chrome), select the Network view, and find the calls to “events” (Personalize) and “legacy” (Pinpoint). The screenshot below illustrates how to display the network call to the Personalize Event Tracker for the “put_events” endpoint. This is implemented using AWS Amplify to instrument events in the web user interface.
+ +Figure 11. Event instrumentation calls
+Amazon Personalize supports the ability to create filters that can be used to filter (or exclude) items from being recommended that match a filter's criteria. The Retail Demo Store uses a filter to exclude products which have been recently purchased by the current user.
+As noted in the Event Tracking section above, the Retail Demo Store's web application sends an Purchase
event for each product purchased by the user. We can use this event type in the following filter expression.
EXCLUDE itemId WHERE INTERACTIONS.event_type in ("Purchase")
+
The filter is created using the CreateFilter API. When a filter is created, a Filter ARN is generated which can then be used when retrieving recommendations to apply the filter.
+To demonstrate this capability, purchase one or more recommended products from the "Inspired by your shopping trends" section of the home page by adding them to your cart and checking out. Then return to the home page. The product(s) you just purchased should no longer be recommended.
+ + + + + + + + + + + + + +While real-time recommendations are highly recommended, Amazon Personalize does support batch recommendations. +Batch recommendations let you generate personalized recommendations for a large number of users, or similar items +for a large number of items, in one go, and then use them in batch processes, such as sending emails or +notifications.
+ +Related item recommendations help users discover new products or compare existing items in your catalog. Amazon +Personalize recommends similar items in real-time, based on user behavior to create unique, relevant experiences +for your customers.
+Pretty simple idea, implemented via item-item collaborative filtering but basically look at how people are +interacting with particular products and then determine how similar things are at a global level based on that data. +Not user specific at all.
+ + + + + + + + + + + + + +Amazon Personalize recognizes three types of historical data:
+The user and item data are metadata types and only used in certain use cases. Please see the documentation +for further technical details.
+Each type of data that Amazon Personalize recognizes has required fields, reserved keywords and datatypes. Please +see table below for details.
+Amazon Personalize will train and deploy a model based on this data. Developers can then use a simple inference +API to get individualized recommendations at run-time and generate a personalized experience for the end users +according to the type of personalization model (e.g. user personalization, similar items or personalized +rankings). Amazon Personalize works best for large datasets that have over 50 users, 50 items, and 1500 +interactions.
+ + + + + + + + + + + + + +Amazon Personalize Recipe: Frequently-Bought-Together
+A common cross-selling technique on e-commerce sites is recommending items that other users have frequently bought together. The idea +is to encourage users to add more products to their shopping cart and thereby increasing average order value and the bottom line. Amazon +Personalize implements this use case with the Frequently Bought Together retail recommender. This recommender can be deployed as part of your +shopping cart or checkout views or when users add new items to their cart.
+ + + + + + + + + + + + + +Item-Affinity +Item-Attribute-Affinity
+Traditionally, user segmentation depends on demographic or psychographic information to sort users into predefined audiences. +More advanced techniques look to identify common behavioral patterns in the customer journey (such as frequent site visits, +recent purchases, or cart abandonment) using business rules to derive users' intent. These techniques rely on assumptions about +the users' preferences and intentions that limit their scalability, don't automatically learn from changing user behaviors, and +don't offer user experiences personalized for each user. User segmentation in Amazon Personalize uses ML techniques, developed +and perfected at Amazon, to learn what is relevant to users. Amazon Personalize automatically identifies high propensity users +without the need to develop and maintain an extensive and brittle catalog of rules. This means you can create more effective user +segments that scale with your catalog and learn from your users' changing behavior to deliver what matters to them.
+The Amazon Personalize User Segmentation recipes are simple to use. Provide Amazon Personalize with data about your items and your +users' interactions and Amazon Personalize will learn your users' preferences. When given an item or item-attribute Amazon Personalize +recommends a list of users sorted by their propensity to interact with the item or items that share the attribute.
+Some common retail use cases for user segmentation include marketing campaigns to promote excess inventory or new items added to a catalog. +With the Item-Affinity recipe, you can create segments of users with an affinity for existing items with excess or lazy inventory. +With the Item-Attribute-Affinity recipe, you can create segments of users with an affinity for new items based on their bahavior with +existing items with similar attributes.
+You can read more about User Segmentation on the .
+This project comes with a step-by-step workshop that will guide you through how to build an item attribute affinity custom solution and +run a batch segmentation job that will generate user segments based on affinity for product categories.
+ + + + + + + + + + + + + +You can measure the performance of ML recommender systems using offline and online metrics.
+Online metrics are the empirical results observed in your user’s interactions with real-time recommendations +provided in a live environment.
+Offline metrics allow you to view the effects of modifying hyperparameters and algorithms used to train your +models, calculated against historical data.
+Amazon Personalize generates offline metrics using test datasets derived from the historical data you provide. +These metrics showcase how the model recommendations performed against historical data. Offline metrics are a +great representation of how your hyperparameters and data features influence your model’s performance against +historical data. To find empirical evidence of the impact of Amazon Personalize recommendations on your business +metrics, such as click-through rate, conversion rate, or revenue, you should test these recommendations in a live +environment, getting them in front of your customers.
+Using A/B testing to measure the efficacy of recommendations generated by Amazon Personalize
+Machine learning (ML)-based recommender systems aren’t a new concept, but developing such a system can be a +resource-intensive task—from data management during training and inference, to managing scalable real-time +ML-based API endpoints. Amazon Personalize allows you to easily add sophisticated personalization +capabilities to your applications by using the same ML technology used on Amazon.com for…
+ + +Measuring the Effectiveness of Personalization with Amplitude and Amazon Personalize
+This post will present an architecture that combines Amazon Personalize and Amplitude’s product +intelligence platform to track user behavior in real time.
+It’ll also show how to deploy a sample e-commerce application in your Amazon Web Services (AWS) account, +which includes a self-guided workshop created by Amplitude to help you become familiar with its +capabilities...
+ + + + + + + + + + + + + + +By connecting Amazon Pinpoint with Amazon Personalize (or other ML services), organizations can take their +customers’ interactions across channels and feed them into their foundational Personalization models for +omni-channel ML model retraining.
+This enables organizations to utilize all of their customers’ digital interactions within a centralized ML model +to get smarter, faster. This also enables organizations to deliver personalized experiences in an omni-channel +fashion, meaning the experiences are harmonized and responsive across their channels of engagement.
+Domino's Pizza Enterprises Ltd (DPE) is one of the largest pizza businesses in the world; their vision is to +be the leader in deliveries in every neighborhood.
+"The customer is at the heart of everything we do at Domino's and we are working relentlessly to improve and +enhance their experience. Using Amazon Personalize, we are able to achieve personalization at scale across +our entire customer base, which was previously impossible. Amazon Personalize enables us to apply context +about individual customers and their circumstances, and deliver customized communications such as special +deals and offers through our digital channels."
+Read full Domino's Pizza’s case study: +Domino’s Pizza Enterprises Delivers in Record Time Using AWS for Predictive Ordering
+ + + + + + + + + + + + + +Amazon Personalize Recipe: +Personalized-Ranking
+Regularly your business priorities require you to promote specific content or products, such as trending news, a +hit new TV show, seasonal merchandise, or a time bound promotional offer. Whether the source is a person, business +rules around product lifecycle management, or a line of code, Amazon Personalize enables you to re-rank your +product catalog to achieve your business priorities and best customer experience.
+Uses the same HRNN algorithm underneath User-Personalization but takes in a user AND a collection of items. This +will then look at the collection of items and rank them in order of most relevant to least for the user. This is +great for promoting a pre-selected collection of items and knowing what is the right thing to promote for a +particular user.
+You can see the personalized ranking use-case on the on the “Featured” products view. The products are re-ranked +based on the fictitious shopper's historical and real-time activity.
+ + + + + + + + + + + + + +Amazon Personalize Recipe: +Popular-by-Purchases
+Recommends best selling products based on how many times customers have purchased an item. The best selling items have the most +"Purchase" interactions with unique users. The recipe returns the same best selling items for all users. Therefore, recommendations are +not personalized to the individual user and are useful when you want a system-wide representation of what's selling across the site.
+You may notice some items are annotated with a "Promoted" banner across the top of the product image. This banner indicates +products that match a promotional filter that is optionally applied when retrieving recommendations. Promotional filters are +a great way to ensure that a user-defined percentage of recommended items match a specific filter expression but are also +relevant to the user. This can be used to highlight products on sale or new products recently added to the catalog.
+ + + + + + + + + + + + + +Amazon Personalize Recipe: +Popular-by-Views
+Recommends popular products based on how many times customers have viewed an item. The most popular items have the most +"View" interactions with unique users. The recipe returns the same popular items for all users. Therefore, recommendations are +not personalized to the individual user and are useful when you want a system-wide representation of what's popular.
+Popular by Views is implemented used on the homepage to display popular items when there is not browsing +history for the current user (i.e. cold user). Once the known or anonymous user has more than three interactions (this +is an arbitrary number chosen in the Retail Demo Store's implementation), the storefront will switch to a personalized +recommendation using the Recommended For You retail recommender. You can tell when this transition is made when the homepage +grid header changes from "Popular products" to "Inspired by your shopping trends".
+You may notice some items are annotated with a "Promoted" banner across the top of the product image. This banner indicates +products that match a promotional filter that is optionally applied when retrieving recommendations. Promotional filters are +a great way to ensure that a user-defined percentage of recommended items match a specific filter expression but are also +relevant to the user. This can be used to highlight products on sale or new products recently added to the catalog.
+ + + + + + + + + + + + + +Amazon Personalize can capture live events from your users to achieve real-time personalization. Amazon +Personalize can blend real-time user activity data with existing user profile and item information to recommend +the most relevant items, according to the user’s current session and activity.
+Do you have the infrastructure in place for real-time click streaming events back into Personalize? If not, don’t +worry, we can help!
+Build: Learn more about the AWS services available to build real-time streaming capabilities +Buy: AWS is partnering with multiple partners to translate and send your data to Amazon Personalize in the right +format.
+ +Customers are charged based on the transaction-per-second (TPS) capacity provisioned or used, whichever is + greater. When creating an Amazon Personalize campaign, a customer sets their minimum TPS capacity. TPS capacity + is measured on a TPS-hour basis (rounded up to the nearest hour). If the customer’s transaction load exceeds the + minimum provisioned capacity, Amazon Personalize will auto-scale based on the customer’s needs. In most cases + when a customer starts with Amazon Personalize, we recommend provisioning the minimum (1 TPS), then + experimenting to see the impact of Personalize for users. These learnings will help inform how to scale based on + their needs to avoid unexpected charges due to over-provisioning.
+KEEN is a values led, independently owned outdoor footwear brand with a mission to responsibly create +original and versatile products, improve lives, and inspire outside adventure. Founded in 2003, KEEN ignited +a revolution in the footwear industry with the introduction of the Newport sandal, launching the concept of +Hybrid footwear into the market and setting KEEN on a path of driving consistent product innovation that +exists today.
+"Over the past two years KEEN has been working to improve the way we engage our customers to bring them +increasingly relevant content for their outdoor footwear needs. Our goal is to educate our customers on the +best footwear options based on their desired outdoor activities. To really bring this capability to life we +turned to AWS and our partnership with Data in the Raw and develop a solution powered by Amazon Personalize +to use purchase and browsing history to best tailor recommendations and content for our customers along +their purchasing journey. With the initial use we looked to improve the experience for our browse abandon +customers through our email program. Initial results are encouraging, our open rates, Rev/M Sends, and Opt +out Rates were very healthy to begin with but with the implementation of Amazon Personalize we are seeing, +email CTR is up 67% over our control messaging. Rev/M Sends is up 49%, and because the content is even more +relevant, our Opt out Rate has dropped 36%. But where the rubber hits the road for me is on revenue. Test +emails have shown a 12.5% increase in revenue versus the control. It is clear that the AWS has given us +another ‘arrow in our quiver’. My only regret is this capability didn’t exist two years ago when we started +this journey."
+Data in the Raw helps online retailers and content producers build scalable analytics and machine learning +infrastructures. With just one JavaScript tag, Data in the Raw can start automatically capturing users’ +unfiltered web data, from which they create a custom behavioral CRM on AWS. That CRM can be used with +business intelligence software and can help enable personalization, conversion rate optimization, user +experience/user interaction analysis, attribution modeling, and more. The company describes their offering +as a self-service big data pipeline to AWS.
+“In this time of one-size-fits-all personalization and expensive customer data platforms, Data in the Raw is +different. Unlike other platforms that sell users back their own data, our affordable pricing already +includes ownership of raw clickstream data. With the recent release of Amazon Personalize, our clients are +now shifting away from boring and bloated personalization platforms to build experiences that reach their +customers more efficiently. Not only do our clients save thousands of dollars using Data in the Raw and +Amazon Personalize, they have ultimate control over their own data and freedom to build what works for them. +With our core values of data democratization, Data in the Raw and Amazon Personalize are the perfect match.”
+ + + + + + + + + + + + + +Amazon Personalize Recipe: +Recommended-For-You
+Product and content recommendations tailored to a user's profile and habits are more likely to drive higher +engagement and conversion. Amazon Personalize helps tailor recommendations to users behavior, preferences, and history, boosting +their engagement and satisfaction in real-time, instead of providing a uniform experience. The Recommended For You recipe +also handles the “cold-start” challenge where limited or no historical information is known about an item or user. +Recommended For You in Amazon Personalize balances recommending fresh items with the most relevant based on a +user's unique preferences and behaviors while also automatically excluding products that have been recently purchased for +each user.
+You may notice some items are annotated with a "Promoted" banner across the top of the product image. This banner indicates +products that match a promotional filter that is optionally applied when retrieving recommendations. Promotional filters are +a great way to ensure that a user-defined percentage of recommended items match a specific filter expression but are also +relevant to the user. This can be used to highlight products on sale or new products recently added to the catalog.
+You can read more about promotional filters on the .
+Recommended For You is implemented in the “Inspired by your shopping trends” section of the homepage. Try using different +shoppers to experience the difference in personalized product recommendations offered.
+ + + + + + + + + + + + + +Experience from Amazon: Over 20 years of personalization research and experience at + .
+Machine learning based personalization: Delivers higher quality product and content recommendations as well as + targeted marketing promotions using machine learning and customer’s data set.
+No machine learning experience required: All of the complicated and time consuming steps required to build, + train, and deploy a machine learning personalization solution are automated.
+Personalization in days, not months: Easily integrates into your existing websites, apps, SMS, and email + marketing systems so you can implement a sophisticated and scalable personalization solution in days, rather + than months.
+Proven success in improving customer engagement and conversion: Lotte Mart, a leading South Korean retailer + with over 600K coupon mobile app users, has seen a 40% increase in the number of products a consumer has not + previously purchased. StockX, a Detroit startup company revolutionizing ecommerce with a unique Bid/Ask + marketplace, added a Recommended For You product row to the homepage using + , + which ultimately became the top-performing homepage row. Mecca, a beauty retailer in Australia and New + Zealand, realized a 65% increase in e-mail click-through rates and a corresponding increase in email revenue + relating to the products recommended by Amazon Personalize. To personalize their customer experience further, + they are now extending the use of Amazon Personalize to additional areas including our website.
+MECCA brings our customers the best in global beauty across our retail stores and online channels in Australia and New Zealand. We’ve created a unique shopping experience for our customers in our 100+ stores, with an extensive collection of products from over 100 beauty brands, and exceptional service and beauty expertise.
+“At MECCA it’s about earning and keeping customer trust. We have challenged ourselves to translate our +highly personalized in-store service to our online experience. A fast and effective PoC with Amazon +Personalize, led by the MECCA technology and CRM teams, in collaboration with our partner Servian, +demonstrated how much we could achieve without developing our own recommendation engine. Since integrating +Personalize, we are seeing our customers respond positively to the new recommendations with a 65% increase +in e-mail click-through rates and a corresponding increase in email revenue relating to the products +recommended by Personalize. To personalize our customer experience further, we are now extending the use of +Personalize to additional areas including our website.“
+ + + + + + + + + + + + + +Amazon Personalize Recipe: +SIMS
+Similar item recommendations help users discover new products or compare existing items in your catalog. Amazon +Personalize recommends similar items in real-time, based on user behavior to create unique, relevant experiences +for your customers.
+Pretty simple idea, implemented via item-item collaborative filtering but basically look at how people are +interacting with particular things and then determine how similar things are at a global level based on that data. +Not user specific at all.
+The similar item recommendations use case is implemented in all the product detail pages under “Compare similar items” carousel UI widget.
+“StockX is a Detroit startup company revolutionizing ecommerce with a unique Bid/Ask marketplace—our +platform models the New York Stock Exchange and treats goods like sneakers and streetwear as high-value, +tradable commodities. With a transparent market experience, StockX provides access to authentic, highly +sought-after products at true market price.”
+“Recommended for You was a massive win for both our team and StockX as a whole. We’re quickly learning the +potency of integrating ML into all facets of the company. Our success led to key decision-makers requesting +we integrate Amazon Personalize into more of the StockX experience and expand our ML endeavors. It’s safe to +say that personalization is now a first-class citizen here.”
+Sam Bean and Nic Roberts II at StockX.
+Read full AWS Machine Learning Blog: +Pioneering personalized user experiences at StockX with Amazon Personalize
+ + + + + + + + + + + + + +Amazon Personalize Recipe: +Similar-Items +with +Personalized-Ranking
+Related item recommendations help users discover new products or compare existing items in your catalog. Amazon +Personalize recommends related items in real-time, based on user behavior and thematically similar item attributes to create unique, relevant experiences +for your customers.
+This user experience is implemented using the Similar-Items algorithm that considers co-occurrence in interactions data (how often these items appear together across user histories) +and thematic similarity (what is similar about the items in your catalog) when making recommendations to better quantify similarity for less popular or new items in +your catalog. The product detail page in this demo takes it a step further by using the Personalized-Ranking recipe to rerank related items recommendations for each user. This adds a level of +personalization to the user experience.
+You can read more about the Similar-Items recipe on the .
+The similar item recommendations use case is implemented in all the product detail pages under the “Compare similar items” +carousel widget. The order of items is personalized to each user by leveraging the Personalized-Ranking recipe to reorder +related items based on the current user's interest.
+AWS Machine Learning Blog
+“StockX is a Detroit startup company revolutionizing ecommerce with a unique Bid/Ask marketplace—our +platform models the New York Stock Exchange and treats goods like sneakers and streetwear as high-value, +tradable commodities. With a transparent market experience, StockX provides access to authentic, highly +sought-after products at true market price.”
+“Recommended for You was a massive win for both our team and StockX as a whole. We’re quickly learning the +potency of integrating ML into all facets of the company. Our success led to key decision-makers requesting +we integrate Amazon Personalize into more of the StockX experience and expand our ML endeavors. It’s safe to +say that personalization is now a first-class citizen here.”
+Sam Bean and Nic Roberts II at StockX.
+Read full AWS Machine Learning Blog: +Pioneering personalized user experiences at StockX with Amazon Personalize
+ + + + + + + + + + + + + +Amazon Personalize Recipe: + Similar-Items + with + Content Generator
+Related item recommendations help users discover new products or compare existing items in your catalog. Amazon + Personalize recommends related items based on user behavior and thematically similar item attributes to create unique, relevant experiences + for your customers.
+This user experience is implemented using the Similar-Items algorithm that considers co-occurrence in interactions data (how often these items appear together across user histories) + and thematic similarity (what is similar about the items in your catalog) when making recommendations to better quantify similarity for less popular or new items in + your catalog. For this product detail page, the was + used to create a descriptive theme for the set of similar items. This descriptive theme is being used as the title/label over the related items on this page. Explore the product detail + page for other featured products in the Retail Demo Store catalog to see additional generated themes.
+You can read more about the and + on the Amazon Personalize blog.
+ + + + + + + + + + + + + +Amazon Personalize Recipe: +User-Personalization
+Product and content recommendations tailored to a user’s profile and habits are more likely to drive higher +conversion. Amazon Personalize helps tailor recommendations to users behavior, preferences, and history, boosting +their engagement and satisfaction in real-time, instead of providing a uniform experience. User personalization +also handles the “cold-start” challenge where limited or no historical information is known about an item or user. +User personalization in Amazon Personalize balances recommending fresh items with the most relevant based on a +user’s unique preferences and behaviors.
+User personalization is implemented in the “Inspired by your shopping trends” section. Try using different +shoppers to experience the difference in personalized product recommendations offered.
+If you’re not signed in, featured products will be displayed instead.
+ + + + + + + + + + + + + +To provide a more compelling and intuitive demo experience, each fictitious user in the Retail Demo Store is +assigned a shopper persona. The persona is represented by three categories from the Retail Demo Store’s catalog +which the user has an affinity. The affinity for each category is also weighted such that the first category is is +highest weighted and the third category is the lowest. There are sixteen combinations of categories that represent +the personas used across all users.
+For example, a user assigned with a persona of "footwear_outdoors_apparel" indicates that the user, at least +historically, has been primarily interested in products from the Footwear category and to decreasing degrees of +interest in products from the Outdoors and Apparel categories. That initial weighted interest is codified in the +generation of the historical interaction dataset which is used to train Solutions in Amazon Personalize. So, for +our "footwear_outdoors_apparel" user, interaction events are generated across products in all three of those +categories to create a synthetic history of engaging in products matching that persona. Additionally, some +products are tagged with an gender affinity. This is used when generating historical events to filter products +against the gender of each user to further add realism to the recommendations.
+Events for multiple event types are generated to mimic shopping behavior. For example, most generated event types +are 'View' to mimic users browsing the site. Occasional checkouts are simulated with 'AddToCart' +followed by 'ViewCart', 'StartCheckout', and 'Purchase' events. The Personalize solutions/models are +trained on the 'View' event type.
+ + + + + + + + + + + + + +Note
+This part of the documentation is also inside the demo itself (look for the "demo guide" on the bottom of each page)
+The Retail Demo Store +is an open source solution which integrates Amazon Personalize, Amazon Pinpoint and Amazon Lex in a retail web +application demo and workshop platform. The Retail Demo Store is intended to be used as an education tool (not +designed for production usage) for AWS customers to demonstrate how AWS can be used to build compelling customer +experiences for eCommerce, Retail and Digital Marketing use cases.
+The Retail Demo Store is a fictitious online store that includes users (shoppers), products, carts and orders as +well as services for search and recommendations and it helps demonstrate how the product recommendations change +based on shopper’s preferences, real-time behavior and history.
+Throughout the demo store experience, users are delivered (or have the option to be delivered) engagements across +multiple channels including email and text (SMS). These messages occur at key moments in the shopper lifecycle, +such as signup and abandoned cart. As users interact with the demo store and their emails/texts, real-time +segments based on their behavior are created and then personalized engagements across channels are delivered. By +utilizing Amazon Pinpoint and Amazon Personalize together, shopper interactions across each of these channels +(store, email, SMS) are ingested as a single event stream and fed into the demo store personalization model, +achieving omni-channel ML model retraining. On the other side, the ML personalization model is used to deliver +personalized experiences across each of these channels a harmonized way.
+The core of the Retail Demo Store is a polyglot microservice architecture deployed as a collection of RESTful + web services in Amazon Elastic Container Service (ECS). Several AWS managed services are leveraged to provide + build, deployment, authentication, messaging, search, and personalization capabilities. The web user interface + is a single page application built using responsive web design frameworks and techniques, producing a native + app-like experience tailored to the user's device. See the Workshops for details.
+ +The Retail Demo Store is designed to display how personalization works and the impact it can have on a shoppers + experience. The demo has two main components: first, the storefront user interface and second, the demo guide + which walks the user through all the different components of the web application demo. .
+The storefront user interface is the actual online store. The products presented will change based on the + shopping preferences of the fictitious “shopper” profile selected. Users will be prompted to select a “shopper” + after account creation or sign in and will be able to switch “shopper” by selecting the “shopper”details on the + top-right corner. The demo guide is an educational component that sits on top of the store-front and is designed + to guide users.
+The demo guide provides more information on how to use the demo during customer meetings. It also includes the + services and use cases enabled in the demo, as well as some frequently asked Personalize topics.
+ + + + + + + + + + + + + +