Context
The client is a direct-to-consumer brand selling apparel and home goods across India through its own Shopify storefront, with WhatsApp as the primary support channel. Growth had been fast, and two things had not kept up. Every shopper saw the same homepage, the same product order and the same weekly email, regardless of what they had bought or browsed. And the support team was answering the same WhatsApp questions all day: where is my order, how do I return this, is this back in stock.
The founders had been pitched personalisation platforms with confident uplift figures and chatbot vendors with confident deflection figures. What they wanted was something built on their own data, that they would own, with the lift proven on their own numbers.
The problem to solve
Two problems, sequenced deliberately. First, personalisation: use the brand's own browsing and purchase events to decide what each shopper sees on the storefront and receives by message, and prove the effect on conversion and repeat purchase. Second, support: handle the high-volume, low-judgement WhatsApp queries automatically, with real order data, and hand the rest to the team with context. The support phase came second because it depended on the same event and order pipeline the personalisation phase would build.
Approach
The first two weeks were an audit of the data. Shopify events, a third-party analytics tag and the email platform each had a partial view of the customer. We consolidated them into a single event pipeline in BigQuery with a stable customer identity, which turned out to be the foundation everything else stood on. The catalogue was small enough that cold start was a real concern, so the design used content-based and popularity fallbacks from day one rather than pretending collaborative filtering alone would cover new shoppers and new products.
- Hybrid recommendation model: collaborative signals from purchase and browse history, content signals from product attributes, session-based ranking for anonymous visitors.
- Real-time ranking service behind the storefront's product listing and homepage modules, with a feature store in Redis so a shopper's session updates the ranking within seconds.
- Personalised messaging: segment and individual-level product picks injected into the brand's existing email and WhatsApp broadcast tools.
- An experimentation framework with a control group held out from the start, so every change shipped as a measured test.
- For support: a WhatsApp agent on the Cloud API grounded in the brand's policies and connected to Shopify and the courier APIs for live order status.
- Policy-gated actions: the agent can initiate a return within policy, resend a tracking link or update a delivery address, and escalates anything else with the conversation summarised.
What we built
Phase one delivered the event pipeline, the recommendation service and three storefront modules: a personalised homepage grid, a similar-items rail on product pages and a post-purchase recommendation block. Each module launched behind the experiment framework with a control group. Personalised messaging followed, with the brand's marketing team choosing which campaigns to run as tests.
Phase two delivered the WhatsApp agent. It handles order status, delivery issues, returns and exchanges within policy, stock questions and size guidance, in English and Hindi, with code-switching handled in testing rather than assumed. Escalation goes to the existing support inbox with the customer's order, the conversation so far and a one-line summary. A dashboard shows resolution by intent, escalation reasons and the questions the agent could not answer, which became the marketing team's list of knowledge gaps to fill.
Delivery
Personalisation ran as a series of A/B tests over eight weeks, one module at a time, with the control group held throughout. The brand's team saw each result on the experimentation dashboard before the next module shipped. The WhatsApp agent ran in shadow mode for two weeks, drafting replies the team reviewed and sent, then in assisted mode with the team approving actions, then autonomously for the intents that had cleared the review, which was most of them.
Outcomes
The personalised homepage and similar-items rail both showed a measurable lift in conversion and average order value against the control group, and the post-purchase block contributed to repeat-purchase rate in the following month. The brand kept the control group running for a further quarter to confirm the effect held through a sale period, which it did. The WhatsApp agent now resolves the majority of inbound conversations without a person, and the support team's day is spent on exchanges, complaints and the conversations that need a human.
The founders' phrase for the project was that it was the first time a vendor's number and their dashboard's number were the same number.
What we measured
- Conversion rate and average order value, test versus control, per module
- Repeat-purchase rate at 30 and 60 days
- Recommendation coverage and cold-start performance for new products
- WhatsApp conversations resolved without a human, by intent
- First-response and resolution time
- Escalation reasons and knowledge gaps
Architecture in brief
Events from the storefront, the email platform and WhatsApp flow into BigQuery through a single ingestion service that assigns and reconciles the customer identity. The recommendation models train nightly in Python and publish features to Redis, from which the ranking service answers storefront requests in a few milliseconds. The experimentation framework assigns every visitor to a variant deterministically and records exposures alongside conversions, so the analysis is a query, not a spreadsheet. The WhatsApp agent runs as a Node.js service on the Meta Cloud API with a LangGraph workflow, tools for Shopify, the courier APIs and the returns policy, and the same customer identity, so it knows what the shopper has bought and browsed before it answers.
Handover
The brand's small team now runs the campaigns, the experiment dashboard and the agent's knowledge base without us. Adding a new supported intent to the agent is a documented, tested process, and the marketing team has used it twice. The models retrain on schedule and alert on drift, and the brand is on an Essential Care Plan with the AI add-on for model updates and cost review.
What we learned
The event pipeline was the unglamorous half of the project and the reason both halves worked. A brand that knows who its customer is across storefront, email and WhatsApp can do almost anything; one that does not cannot personalise or support well no matter which model it uses. The second lesson was patience with experiments: shipping one module at a time with a held-out control was slower than a big-bang launch and was the only reason anyone could trust the result.
"Every vendor promised uplift. These were the first people who insisted on running the A/B test before telling us the number, and then showed us the number on our own dashboard."
Client details are anonymised. Figures are described qualitatively and are available under NDA on a call.