Omnichannel Marketing

Composable CDP for Retail: Necessary, but Not Sufficient for Personalisation

Diganta Roy
Diganta Roy

TL;DR

A composable CDP unifies customer profiles in the enterprise lakehouse. That is the right architectural move. But in retail, personalisation decisions also depend on product availability, store context, promotion mechanics, margin constraints, and consent status. Without a Retail Semantic Data Model that connects these entities in a shared business language, even the best composable CDP cannot power profitable, locally relevant, governed personalisation at scale. 

  • Composable CDP is necessary but not sufficient. It solves data unification, not decision quality.
  • The missing layer is a Retail Semantic Data Model that gives business meaning to customer, product, store, inventory, promotion, margin, and consent data together.
  • India/APAC’s omnichannel complexity (quick commerce, WhatsApp commerce, assisted selling, and DPDP compliance) makes this semantic gap especially costly.
  • The semantic layer is also the governance layer: consent and permitted use must travel with every activation decision, not sit in a separate system.

This summary was created with AI and reviewed by an editor.

A Saturday Morning in Bengaluru

Priya is a Gold-tier loyalty member. Saturday morning, she walks into her neighbourhood store (a compact urban format, not a hypermarket) and picks up organic oats, Greek yogurt, and a promotion-discounted muesli.

Simple transaction. Except it isn’t.

Her basket is shaped by a health-conscious replenishment pattern the retailer can see across six months of purchase history. The muesli carries a category-level promotion inherited from a brand-funded trade deal, not a store-level markdown. Greek yogurt is in stock at this location but out of stock at the larger format store three kilometres away. And Priya has opted into app notifications but explicitly declined WhatsApp marketing under the retailer’s DPDP consent framework.

Now consider what the retailer’s systems need to know to make a single good decision about what to recommend, offer, or message Priya next:
 
Who she is (loyalty tier, household, lifecycle stage). What she bought (SKU, brand, category, basket composition). Where she bought it (store format, catchment, local assortment). What was available (inventory position, substitution options). What promotions were active (offer type, funding source, redemption rules). What her consent permits (channel eligibility, data-use boundaries). What the commercial objective is (margin target, category growth, basket expansion).

No single customer profile holds all of that. This is not a data-quality problem or a pipeline problem. It is a meaning problem. The data exists, often in the same lakehouse. But the connections between those entities, the semantic links, are missing.

Explore Retail Semantic Data Model in Practice 

The interactive widget below maps Priya’s shopping trip onto the semantic model, layer by layer. Start with the raw entities, then explore the product taxonomy and cross-entity inference that tells a retailer what to do next.

Semantic Data Model  ·  Grocery Retail
Tap any card to explore
P
Priya M. — a single shopping trip
Shopper #40821  ·  HSR Layout, Bengaluru  ·  Saturday 18 Mar
Gold tier
1
Start with the entities. Priya’s trip produces three raw data records — a Shopper, a Basket, and a Store. Tap any card in Layer 1 to see the actual field values and what each one means beyond just a column in a table.
2
Explore the products. The Basket contains three SKUs. Tap each product card in Layer 2 to see its attributes — and tap any highlighted attribute pill to understand the semantic role that field plays in building Priya’s profile.
3
Follow the arrows to categories. Each product belongs to a category that carries inherited meaning — promotional rules, substitution logic, regional affinity signals. Tap the category cards in Layer 3 to see what rules cascade down to the SKUs above.
4
Read the inference. Tap the gold box at the bottom to see how fields from all three layers combine into a single retail inference — and the four recommended actions it produces. No single table contains this. It only exists when the layers are read together.
What this widget demonstrates
A flat database sees three purchases. A semantic model sees a Gold-tier family shopper who responds to health promotions, buys for a household of four, and visits every Saturday. That difference — between storing data and understanding it — is what a semantic data model makes possible. Explore the layers to see exactly how Priya’s raw fields become that inference.
Layer 1 — entities  ·  tap a card to explore its fields
Shopper shops via Basket · occurs at Store
Shopper
People entity
#40821  ·  Gold  ·  Family of 4
Explore fields
Basket
Transaction entity
BKT-2024-0318  ·  ₹820
Explore fields
Store
Place entity
HSR Layout  ·  Supermarket
Explore context
Shopper entity
Three tiers of data richness — raw fields, aggregated signals, and model-derived scores
Tier 1
Raw profile fields
shopper_id#40821
namePriya M.
loyalty_tierGold
household_size4
age_band30s
postcode560001
Tier 2
Aggregated signals
avg_order_value₹763 (L90D)
avg_basket_size8.4 items (L90D)
avg_purchase_freq6.1× / month
avg_category_spend₹218 / visit (Breakfast + Dairy)
Tier 3
Model-derived scores
brand_affinityEpigamia 0.87  ·  Yoga Bar 0.74
propensity_breakfast0.91 (high)
propensity_dairy0.88 (high)
churn_risk_score0.11 (low)
promo_sensitivityHealth promos > Price-off
Tap any attribute to understand its semantic role
loyalty_tier household_size avg_order_value avg_basket_size avg_purchase_freq brand_affinity propensity_breakfast promo_sensitivity
Why three tiers matter
Raw fields tell you who Priya is. Aggregated signals tell you how she shops. Model scores tell you what she will do next. A semantic model combines all three — making Priya not just a record, but a predictable, actionable profile the CDP can segment and activate against.
Basket entity
The atomic unit of shopper behaviour — one visit, fully captured
basket_idBKT-2024-0318
visit_dateSaturday, 18 Mar
channelIn-store
total_spend₹820
items_count3
promo_usedHEALTH20
Tap an attribute to understand its semantic role
channel promo_used visit_date total_spend
Why it matters semantically
Channel + timing + promo redemption signal the occasion type. The same HEALTH20 promo redeemed in-store on Saturday vs online on Sunday evening = two completely different next best actions. Same field, different context, different meaning.
Store entity
Physical context that transforms a transaction into a behavioural signal
store_idSTR-007
formatSupermarket
cityBengaluru
regionSouth India
catchment_typeResidential
Same yoghurt SKU — three store contexts — three different meanings
visitSaturday · 11am
basket typeFull weekly shop · ₹820
occasionWeekend family meal prep
shopper intentExploring, open to discovery
next best actionCross-sell Granola in-aisle
visitTuesday · 8am
basket typeTop-up shop · ₹210
occasionWeekday breakfast run
shopper intentHabitual, time-pressured
next best actionProtect shelf stock, same slot Tue
visitSunday · evening
basket typePlanned list · ₹1,450
occasionBulk planned replenishment
shopper intentDeliberate, list-driven
next best actionSubscription nudge + Oats bundle
The store context principle
Without store context: “Priya bought yoghurt three times.” With it: three distinct occasions, three different recommended actions. Store context is what makes a transaction log into a decision engine.
Basket contains
Layer 2 — products in basket  ·  tap each to see its taxonomy
Organic Oats
SKU · OAT-001
₹199
organic high-fibre
Explore taxonomy
Greek Yoghurt
SKU · YGT-042
₹149 · Epigamia
high-protein probiotic
Explore taxonomy
Muesli
SKU · MSL-017
₹590 ₹472
HEALTH20 high-fibre
Explore taxonomy
Organic Rolled Oats 1kg
SKU OAT-001 · Breakfast category · Grocery dept · Aisle 3
skuOAT-001
price₹199
is_organictrue
allergensgluten
cross_sellYoghurt · Honey · Berries
promo_inherited_fromL3 Cereals & Breakfast
Category hierarchy — attributes inherited at each level
L1 — Fresh Foods
Inherited: chilled logistics, short shelf-life
L2 — Grocery dept
Inherited: ambient, aisle 3
L3 — Cereals & Breakfast
HEALTH20 promo set here — cascades to all L4/L5 below
L4 — Rolled Oats
Sub-category
OAT-001 — Organic Rolled Oats 1kg
L5 SKU · this product
Semantic inheritance
This SKU inherits “health promo eligible” from L3 without a direct tag. Co-purchase with Greek Yoghurt in this basket confirms a breakfast occasion and triggers Granola as the post-visit cross-sell.
Greek Yoghurt 400g — Epigamia
SKU YGT-042 · Set & Strained Yoghurt · Dairy & Alternatives · Fresh
skuYGT-042
brandEpigamia
price₹149
protein_claimtrue
no_added_sugartrue
cross_sellGranola · Fruit · Honey
substitutesSkyr · Plain yoghurt
Tap an attribute to understand its semantic role
protein_claim cross_sell substitutes no_added_sugar
Category hierarchy
L1 — Fresh Foods
Inherited: is_chilled=true, temp_zone=3°C
L2 — Dairy & Alternatives
Inherited: aisle 1 · South India curd affinity signal
L3 — Yoghurt
Substitution logic lives here: OOS → suggest Skyr first
L4 — Set & Strained Yoghurt
Separates breakfast/snack shoppers from dessert buyers
YGT-042 — Greek Yoghurt 400g
L5 SKU · this product
Why the L4 split matters
“Set & Strained” separates Priya from a dessert yoghurt shopper — same L3 category, completely different cross-sell affinities. Granola and Fruit are triggered; sweetened toppings are not. One sub-category level, entirely different personalisation path.
Muesli 500g
SKU MSL-017 · Cereals & Breakfast · Promo HEALTH20 cascaded from L3
skuMSL-017
full_price₹590
promo_price₹472 (HEALTH20 −20%)
promo_set_atL3 — Cereals & Breakfast
high_fibretrue
Promo inheritance — the semantic model at work
HEALTH20 was configured once at the Cereals & Breakfast L3 node. It cascaded automatically to Muesli, Oats, and every other SKU below — no per-product promo setup required. This is the semantic inheritance principle. One rule, entire category covered.
Product belongs to
Layer 3 — product categories  ·  where inherited meaning is stored
Breakfast
Category · L3
Grocery dept · Aisle 3
Explore rules
Dairy
Department · L2
Fresh dept · Aisle 1
Explore rules
Breakfast
Category · L3
Grocery dept · Aisle 3
Explore rules
Cereals & Breakfast — L3 Category
Parent of Organic Oats · Semantic rules cascade to all products below
Rules stored at this category node
HEALTH20 promo — set once here, applied to every SKU below automatically.

Cross-category rule — Breakfast products automatically suggest Dairy products as cross-sells. South India shoppers who buy Breakfast items also buy Dairy 78% of the time. This affinity is stored at the category relationship level, not per product.

Replenishment signal — two Breakfast SKUs in the same basket triggers a ~3-week replenishment reminder for both.
Dairy & Alternatives — L2 Department
Parent of Greek Yoghurt · Covers all yoghurt, milk, cheese, plant-based alternatives
Dairy & Alternatives (L2)
All products inherit: is_chilled=true, temp_zone=3°C
Yoghurt (L3)
OOS rule: suggest Skyr → Plain yoghurt → Dairy alternative
Set & Strained (L4)
Occasions: breakfast, snack — not dessert
Greek Yoghurt 400g
L5 SKU
Regional semantic layer
In South India, this category node carries an additional weight: high curd affinity. Greek Yoghurt here is interpreted as a premium curd substitute. That regional signal sits on the L2 category node — not on the product — meaning every Dairy SKU in South India stores benefits from it automatically.
Cereals & Breakfast — L3 Category (Muesli)
Same node as Oats · Both products share category-level rules
Cross-basket insight from shared category
Both Oats and Muesli are under the same L3 node. Priya buying both signals she is stocking multiple breakfast options for a family with varied preferences. The model infers she will run out of both simultaneously — a replenishment reminder fires in ~3 weeks for both SKUs. No custom rule written for this scenario; the category relationship enables it.
Semantic inference — tap to see how this was derived
Priya is a health-conscious, Gold-tier family shopper who responds to health promotions and shops for variety
Cross-entity reasoning — field by field
Shopper → loyalty_tier
Gold = high-value, prioritise retention
Shopper → household_size
4 = family stock-up occasion
Basket → promo_used
HEALTH20 = promo-responsive shopper
Product → is_organic, protein
Health-conscious buyer profile
Store → region
South India = high curd affinity
Basket → visit_date + format
Saturday supermarket = planned weekly shop
CDP segments activated
Health-Promo Responders · Gold · South India
loyalty_tier = Gold promo_sensitivity = Health region = South India propensity_breakfast > 0.80
Activate via Email  Health bundle offer · personalised subject line
High-Frequency Weekend Shoppers · Family
avg_purchase_freq > 5× / month household_size > 2 visit_day = Saturday avg_basket_size > 6 items
Activate via Push  Friday evening reminder · next-day availability nudge
Breakfast + Dairy Cross-Category Buyers
propensity_breakfast > 0.80 propensity_dairy > 0.80 avg_category_spend > ₹150
Activate via In-app  Granola · Fruit · Honey cross-sell homepage tile
Dual-SKU Replenishment · Breakfast Category
2+ Breakfast SKUs in last basket days_since_last_visit > 18 brand_affinity_match = true
Activate via Email  Replenishment reminder · ~21 days post-purchase
No single table contains this insight. It emerges only when Shopper + Basket + Product + Store + Category are read together through the semantic model.
Powered by Algonomy rCDP  ·  Semantic Data Model  ·  Grocery Retail

If you explored the widget, you likely noticed something: no single entity tells the full story. The insight only emerges when shopper context, basket composition, product taxonomy, store format, inventory position, and consent state are read together. That convergence is the semantic layer at work. A Retail Semantic Data Model is the business-language layer that sits on top of the composable lakehouse and gives consistent, queryable meaning to the full set of entities that drive retail decisions.

What This Proves 

Context Changes Meaning

Take organic oats as an example. The exact same SKU carries a different next-best-action depending on whether Priya is shopping in a compact urban store or a hypermarket. Store format determines assortment depth, substitution options, cross-sell candidates, and even whether a recommendation can be fulfilled. Remove store context, and the recommendation engine is guessing.


Meaning Can Be Inherited 

The muesli discount Priya received did not originate at the store. It was a category-level promotion, funded by the brand, with rules that cascade from category to subcategory to qualifying SKUs. If a personalisation system stores rules only at the SKU level, it cannot see the promotion’s structure, cannot calculate cannibalisation, and cannot measure whether the trade investment achieved its objective. Category-level inheritance is where commercial logic lives in retail.


Insight Is Cross-Entity, Not Trapped in One Table 

The inference that Priya is a high-value, health-conscious replenisher who could be nudged toward premium dairy (with a funded offer, fulfilled from current stock, sent via an app notification she has consented to) only emerges when you read across five entity types at once: shopper, basket, product, store, and consent. A customer profile, no matter how rich, is one table. The insight lives in the join.

What a Composable CDP Solves, and What It Does Not

A composable CDP builds unified customer profiles directly in the enterprise data warehouse, using modular, best-of-breed tools instead of copying data into a proprietary store. It preserves governance, avoids redundant data copies, and makes the lakehouse the system of data gravity. As architectural choices go, it is a sound one.

The composable foundation is no longer a debate. Most large enterprises have already integrated a data warehouse or lake with their martech stack, and the majority of those integrations are now bi-directional. It is becoming the default.

But composable architecture, by design, models the customer. It does not natively model what can actually be sold, fulfilled, substituted, promoted, or profitably recommended to that customer. The CDP Institute’s own definition (a system that creates a persistent, unified customer database) tells you where the boundary is.

Composable CDP

Pros

  • Unified profiles
  • Preserves governance
  • Avoids redundancy
  • Lakehouse gravity
  • Bi-directional integration

Cons

  • Lacks sales modeling
  • Missing fulfillment data
  • No promotion tracking
  • No opt-out management
  • Data exists, connections don’t

In retail, the customer profile is necessary. But it is not the whole decision. A grocery chain that knows Priya is a Gold-tier health-conscious shopper but does not know that organic oats are out of stock at her nearest store, that a funded muesli promotion expires tomorrow, or that she has opted out of WhatsApp. That chain cannot make a good next-best-action call. The data exists. The connections do not.

The Six Capabilities of a Semantically Complete Composable CDP 

For retail enterprises, the composable CDP that delivers lasting advantage is not just architecturally open. It is semantically complete. That means six capabilities working together: 

  • Governed Lakehouse Core
    Data, lineage, access policy, and business definitions co-located in a single system of gravity. The composable architecture ensures nothing pulls the centre of gravity back out. Modern lakehouse platforms now support curated, trusted data-as-products with semantic consistency, operational synced tables for low-latency serving, and open sharing protocols for secure cross-platform data exchange.

  • Retail Semantic Data Model
    Layered on top of the lakehouse, giving consistent meaning to the full range of retail entities. Not just customer attributes, but product hierarchies, store structures, inventory positions, promotion mechanics, loyalty logic, margin constraints, and consent states. This is the layer that makes the composable CDP retail-ready.

  • Real-Time Event and Identity Fabric
    This goes beyond static profile resolution. It has to handle event fluency: replenishment signals, daypart shifts, search behaviour, geolocation triggers, and rapid intent decay in mobile and messaging channels. In grocery, replenishment windows are narrow. In QSR, daypart intent is fleeting. In WhatsApp commerce, wasted relevance is expensive.

  • Profit-Aware Decisioning
    Actions ranked not just on customer propensity, but on stock, margin, offer cost, local conditions, and commercial objectives. The next-best action in retail must be customer-aware, stock-aware, store-aware, and margin-aware simultaneously. Research shows that even well-run grocers can expect 10 to 15 percent of promotions to dilute margins when these signals are disconnected.

  • Business-User Self-Service
    Marketing, merchandising, and digital teams able to build audiences, define triggers, and launch journeys without engineering tickets. If composability only serves data engineers, the activation bottleneck simply moves downstream.

  • Omnichannel Activation with Content and Channel Intelligence
    This is not just segment export. It is the ability to determine what to render, when to render it, and which channel to use, whether that is the app, web, email, store POS, or WhatsApp. The semantic layer makes this possible because it carries the context that channel selection depends on: consent state, store proximity, inventory position, and real-time intent.

DPDP and the Governance Equation

India’s Digital Personal Data Protection Rules, notified in November 2025, do not sit outside this argument. They are part of it. 
The rules require itemised consent notices, purpose-based data retention, mechanisms for access, correction, and erasure, and breach notification within 72 hours. Penalties can reach ₹250 crore for failure to maintain reasonable security safeguards.

For retail enterprises, this means consent, access rights, and data-handling obligations must be embedded in the activation layer itself, not bolted on as a separate compliance system the marketing engine queries as an afterthought. When Priya opts out of WhatsApp marketing, that consent state must be visible to the decisioning engine at the moment it evaluates channel selection, not discovered after the message has already been queued.

A retail semantic model that understands “active customer,” “eligible offer,” and “high-value segment” must also understand whether that customer has consented, what attributes are permitted to travel where, and what audit trail exists for any decision. In the composable architecture, this is not a limitation. That is a structural advantage: governance and intelligence in the same layer, enforced consistently.

For CPG brands, the same logic applies upstream. CPG-retailer collaboration increasingly depends on shared data, shared product language, and measurable demand-shaping across retailer, banner, region, store cluster, and promotion. The retail semantic layer becomes the language of collaboration: aligning offer history, funding logic, store-level activation, and outcome measurement across partners. 

What This Means for the C-Suite

You have built the composable foundation. The next investment is not more infrastructure. It is the semantic layer that makes the infrastructure commercially intelligent. The question to ask your data platform and CDP partners: does the model natively understand retail entities beyond the customer profile? If not, every downstream activation is working with incomplete context.

Data quality and governance are your mandate. The semantic layer extends that mandate from data accuracy to data meaning. It is the layer where business definitions, consent states, and commercial logic converge, and where DPDP compliance becomes enforceable at the point of activation rather than in a separate audit trail. 

Personalisation performance is your accountability. If campaigns cannot factor in store context, inventory, promotion economics, and consent, if every targeted offer still requires a two-week data-engineering ticket, then the composable architecture has not yet delivered its promise. The semantic layer is what closes that gap and turns the martech investment into measurable, margin-positive outcomes. 

Where Retail CDP Strategies Usually Fail

The most common failure is not a technology failure. It is an assumption failure: believing that customer unification equals decision readiness. 

A rich, unified customer profile is valuable. But if the activation engine cannot access inventory, margin, or promotion context at decision time, the profile alone produces recommendations that are irrelevant, unprofitable, or impossible to fulfil.

When marketing activation operates in a silo, disconnected from merchandising calendars, store-level assortment, and inventory positions, the result is offers that conflict with what is actually available and promotions that erode margin rather than build it..

Treating consent and data-protection compliance as a downstream filter, rather than embedding it in the decisioning layer, creates both legal risk and operational fragility. Under DPDP, this is no longer optional.

When business logic lives in individual activation tools, BI dashboards, or campaign platforms rather than in a shared semantic model, every team operates with a slightly different version of reality. Category definitions drift. Promotion rules conflict. Store segmentation diverges. The semantic layer’s purpose is to be the single source of business truth.

The Bottom Line

Composable CDP architecture is the right structural foundation for retail. That question is settled. But architecture alone does not win in retail. What wins is the ability to turn a governed, composable data foundation into profitable, locally relevant, channel-aware, consent-compliant decisions at speed.

That requires a Retail Semantic Data Model: a shared business language, embedded in the composable architecture, that gives consistent meaning to customer, product, inventory, promotion, store, margin, and consent across every team and every AI system in the enterprise.

Composable was step one. Retail semantics is step two.

The question worth asking in your next data-platform review, your next architecture board, your next CDP partner evaluation:

If the answer is not yet, the architecture is ready. The semantic layer is the next move.

FAQs

1. What is a composable CDP in retail?

A composable CDP builds unified customer profiles directly in the enterprise data warehouse or lakehouse, using modular, best-of-breed tools. Unlike a traditional packaged CDP, it avoids copying data into a proprietary store, preserving governance and making the lakehouse the single system of data gravity. In retail, it is the preferred architectural foundation for customer data management.

2. Why is a composable CDP not enough for personalisation?

A composable CDP unifies customer data but does not natively model the other entities that retail decisions depend on: product availability, store context, promotion mechanics, margin constraints, and consent status. Without these connections, personalisation recommendations may be irrelevant (out of stock), unprofitable (margin-negative), or non-compliant (violating consent preferences).

3. What is a Retail Semantic Data Model?

A Retail Semantic Data Model is a business-language layer that sits on top of the composable lakehouse and gives consistent, queryable meaning to customer, product, store, inventory, promotion, loyalty, margin, and consent entities. It is the shared operating contract between analytics, marketing, merchandising, e-commerce, and AI systems. 

4. How does store context change personalisation?

A Retail Semantic Data Model is a business-language layer that sits on top of the composable lakehouse and gives consistent, queryable meaning to customer, product, store, inventory, promotion, loyalty, margin, and consent entities. It is the shared operating contract between analytics, marketing, merchandising, e-commerce, and AI systems. 

5. Why should promotion rules live at category level instead of SKU level?

Many retail promotions, especially brand-funded trade promotions, are structured at the category or subcategory level and cascade to qualifying SKUs. Storing rules only at the SKU level loses the promotion’s commercial structure, making it impossible to calculate cannibalisation, halo effects, or whether the trade investment achieved its objective.

6. How does a semantic layer improve next-best-action?

Next-best-action in retail requires reading across multiple entity types simultaneously: shopper context, basket composition, product taxonomy, store format, inventory, promotion eligibility, and consent. The semantic layer is what enables this cross-entity inference, turning fragmented data into a coherent, actionable signal.

7. What does DPDP change for Indian retailers? 

India’s Digital Personal Data Protection Rules (notified November 2025) require itemised consent notices, purpose-based retention, access and erasure mechanisms, and 72-hour breach notification, with penalties up to ₹250 crore. For retailers, this means consent and governance must be embedded in the activation and decisioning layer, not managed in a separate compliance system.

8. Is this relevant outside India?

Yes. While India’s omnichannel complexity, WhatsApp commerce, and DPDP regulations make the semantic gap especially visible, the underlying argument applies globally. Any retail market with omnichannel activation, format diversity, promotion complexity, and data-protection requirements faces the same structural need for a semantic layer on top of the composable CDP.

Sources and Citations 
Diganta Roy
Diganta Roy is leading the Product Marketing charter at Algonomy, where he is at the forefront of innovation in Omnichannel Marketing. With a rich background that spans e-commerce category marketing at Amazon and key roles in the Ad-Tech arena, Diganta brings a unique perspective to scaling global product companies from 0 to 1 and beyond. At Algonomy, he spearheads the Product Marketing of state-of-the-art solutions like rCDP, Audience Manager and Active Content, empowering marketers worldwide with AI-powered tools to drive customer engagement. An MBA from MICA, he simplifies tech innovation with clear, customer-centric narratives, bridging the gap between technology and business.
Resources

Guides

Dynamic Content Personalization: How Active Content Brings Dynamism into Your Campaigns

Let’s face it—customers nowadays expect deeper and relevant communication, not cookie-cutter-styled messaging across every channel.

Case Study

Personalizing Beauty at Scale: How Matas Grew Attributable Sales by 36% with Personalized Recommendations

Deliver a best-in-class customer experience, increase online sales, and drive operational efficiency at scale