AWS for Industries

How a Grocer Can Deliver Personalized Experiences with Recipes

The grocery market was significantly disrupted by the COVID pandemic. Consumers shifted toward online shopping and home deliveries. For example, in 2020 the online share of total grocery in the UK exceeded pre-COVID forecasts for 2024, reaching 8.8% in 2020. International markets experienced similar growth. As restrictions are gradually lifted, some consumer trends are here to stay. According to FoodNavigator, 91% of Britons plan to cook ‘as much, or more’ this year, and McKinsey’s report reveals that consumers expect to spend more money on groceries post-pandemic than they did pre-pandemic.

Differentiating and reinventing customer journeys will be extremely important for increasing the growth and efficiency of retailers, especially considering the continued home nesting and home cooking of consumers and the thin margins that grocers face. Grocery retailers have a competitive advantage since they’ve gathered the data of their customers over long periods of time, including transactions, customers’ profiles and preferences, and loyalty-based information. This data, when used to design and offer highly personalized services, results not only in higher customer satisfaction and loyalty, but also a lift of 1–2% in total sales. The AWS perspective on how personlization can be used by retailers to gain rich insights and boost sales is discussed in the post “Personalization: How to gain deeper insights and boost sales.

In this post, we will show how to provide a customized customer journey when shopping online. In our example, we will use a solution designed for grocery retailers, even as we acknowledge that personalizing customer experiences is important across all retail categories. So, let’s consider a customer shopping for groceries online. As they place products in their basket, they are presented with a list of recipes that contain the same ingredients as those products added to the basket. The recipes suggested are personalized to the customer. They are based on their profile and historical product preferences. From a consumer perspective, these personalized suggestions provide meal inspirations and help with meal planning. Meal kits are popular with consumers. Therefore, customer satisfaction and loyalty will be increased by offering what is essentially a personalized meal kit suggestion that is seamlessly integrated with the online grocery shopping journey. For a grocery retailer, apart from the benefits to customer experience, this offering can result in bigger baskets, since consumers will add missing recipe ingredients based on the recommendations, as well as increased sales.

The challenge of delivering personalized experiences

When we discuss personalization with AWS customers, they name some common obstacles to adoption: customer data consolidation from numerous data silos, workforce skills in modern data platforms, analytics frameworks and data science, and the productionization of personalization products. The solution above addresses the difficulty of managing and maintaining self-managed services, which can be solved by using AWS Managed Services (AMS). AMS helps you operate your AWS infrastructure efficiently and securely. Additionally, developers can build a recommendation service, without prior data science knowledge, to deliver customized recommendations. This is important to retailers because the operational complexity of managing their infrastructure adds nothing to their bottom line. Engineering teams can focus on the product and their customers by using solutions that are comprised of managed or serverless services.

In addition, the solution is designed to be integrated with the retailer’s online shop to enhance the customer’s journey by offering personalized recipe recommendations, which are triggered by updates to the customer’s basket.

solution integrating retailer’s online shop

In the centre of the solution, we have Amazon Personalize. Amazon Personalize is a great fit for retailers that don’t necessarily have in-house Machine Learning (ML) expertise. It lets developers build applications with the same ML technology used by for real-time personalized recommendations. Moreover, Amazon Personalize is a managed service, since the retailer’s team won’t have to provision, maintain, or manage infrastructure. This is all managed by AWS and thus abstracted.

For the solution, we have simulated a microservices pattern to build two services with AWS Fargate—a cart, and a recommendation service. AWS Fargate is a serverless, pay-as-you-go compute engine. As with Amazon Personalize, using a serverless service means that your engineering teams can work on higher business value tasks, rather than managing servers.

Keep reading for more details of how the architecture is designed.


Build artifacts are stored in an Amazon Simple Storage Service (Amazon S3) bucket where the web application assets are maintained (such as product/recipe photos, web graphics, etc.). Amazon CloudFront caches the frontend content from Amazon S3, presenting the application to the user via a CloudFront distribution. The frontend interacts with Amazon Cognito, which is used for all authentication requests.


The core of the backend infrastructure consists of microservices hosted in Amazon Elastic Container Service (Amazon ECS) and AWS Fargate. These represent the cart domain as well as the recommendation service. A cartUpdatedEvent is sent via an EventBridge bus each time that a consumer updates the basket, and this event is archived in Amazon S3 using Amazon Kinesis Firehouse. Once the events are in Amazon S3, they can be used to train the recommendation engine models and build a historic dataset for eventual future use cases. The recommendation engine is powered by Amazon Personalize, a fully managed ML service that trains, tunes, and deploys custom ML models to deliver highly customized recommendations to customers. In this solution, the web app queries the recipe service with a sample of various combinations of items in the basket and returns a list of recipes that satisfy that query. This list of recommended recipes is ranked based on how well they match with the preferences of the customers based on past purchases. Then, the list is displayed and uniquely ordered for each customer.

The recipe AWS Lambda function retrieves the recipe, stored in Amazon OpenSearch Service (successor to Amazon Elasticsearch Service), to be displayed in the frontend.

Below are screenshots that showcase how the customer journey works when this solution is implemented in the web shop of the grocer.

Step 1

A consumer visiting the online shop will land on the application home page (see below). There is no input to the recommendation engine, since this is the first entry point, so the backend will just render a set of random recipes.

Retail demo store Step 1

Step 2

The consumer decides to add an item to their basket, for example pasta.

Retail Demo Store Step 2

Step 3

The recipes presented to the consumer on the landing page are now adjusted to display only recipes that contain pasta.

Retail Demo Store Step 3

Step 4

Let’s add a couple more items—tomatoes and eggs—to the basket.

Retail Demo Store Step 4A

Retail Demo Store Step 4B

Step 5

Back on the landing page, the displayed recipes have changed with recipes that also contain the two last items added into the basket.

Retail Demo Store Step 5

Step 6

If the consumer goes into their basket, recipes are also displayed on the left-hand panel. These recommended recipes follow the consumer throughout their shopping journey.

The backend is taking in the three different ingredients—pasta, eggs, and tomatoes—as inputs, constructing various combinations of them, and matching and ranking the appropriate recipes.

Retail Demo Store Step 6

This solution lowers the barrier to entry in terms of implementing personalized experiences across the customer journey. Amazon Personalize is being used by retailers to power innovative use-cases. You can read our customers testimonies and references here.

If you are interested in hearing more about this solution, experimenting with it, or discussing how it adapts to your specific use-cases and customers, then contact your AWS account team today.

Chara Gravani

Chara Gravani

Chara Gravani is a Senior Solutions Architect at AWS, working with UK Enterprise Retail customers to support and accelerate their journey to the cloud. Chara has a special focus on data and analytics and is passionate about D&I and making STEAM education accessible to all children.

Stefano Vozza

Stefano Vozza

Stefano Vozza is a AWS Solution Engineer based in the UK. Stefano works with the AWS Solution Architects to create standardized tools, code samples, demonstrations, and quickstarts. He is the lead developer for Workload Discovery on AWS.