
Unified commerce for a multi-brand retailer
Key result: +18% online revenue Illustrative
What was actually going wrong.
Three brands, two store systems and one website that disagreed with all of them. Stock showed as available online and was not in the warehouse, prices diverged between channels within days of every promotion, and a customer who bought in store and returned online was two different people as far as the systems were concerned.
Overselling and cancellations
Availability was a nightly snapshot, so the site kept selling stock the warehouse no longer had.
Promotions applied twice, or not at all
Pricing rules lived separately in each channel and drifted apart as soon as a campaign started.
One customer, several records
Loyalty, returns and service history were split across brands, which made any cross-brand offer guesswork.
The route we chose, and what we ruled out.
Unify the records customers actually notice — stock, price and identity — and leave everything else where it was. A full replatform was on the table and we argued against it: the revenue was leaking through three specific disagreements, and fixing those was a matter of months rather than a year.
Decisions taken up front
- Fix stock, price and identity first; defer the rest deliberately
- Near-real-time stock updates rather than a nightly file
- One brand live across both channels before the other two
What we designed and built.
A product and pricing service became the single source for both the website and the tills, with promotions expressed once and applied everywhere. Stock moved to near-real-time updates with a per-channel safety buffer, and a customer identity service resolved records across brands so returns and loyalty worked from one history.
The stack behind it.
A read-heavy catalogue with a cache in front of it, and an identity service that had to be right rather than fast. The hard part was reconciliation, not throughput.
How it went live.
Sequenced so that the first release could not break the operation, and so that each step earned the next one.
Reconcile before migrating
Identity matching ran as a report first, so the duplicate rate was a known number instead of a surprise mid-cutover.
One brand, both channels
The smallest brand went first across web and store together, since splitting them would have hidden the disagreements we were there to fix.
Buffer, then tighten
Stock ran with a conservative channel buffer until the update path had earned trust, and the buffer came down after.
Promotions rebuilt once
Campaign rules re-expressed in the pricing service, with the old paths removed rather than left available as a fallback.
What moved, and how it was measured.
Online revenue rose 18% across the two quarters after the third brand went live, compared with the same period the previous year and adjusted for the promotional calendar. Cancellations caused by overselling were the clearest single contributor.
What we would do differently
We would have argued harder for reconciling customer identity before launch rather than alongside it. It was the one workstream where a partial result created new support tickets.
- Stock the site can actually commit to, with a per-channel buffer
- Promotions defined once and applied on every channel
- One customer record spanning brands, returns and loyalty
- Cancellations from overselling materially reduced
- The replatform decision deferred on evidence rather than by default
Other studies.
Real-time visibility platform for a regional carrier
Carrier, warehouse and customer events arriving on four different schedules, reconciled into one shipment timeline the operations team could act on before a delivery failed.
−31% missed delivery windows Sample
Rebuilt onboarding for a digital lending product
An onboarding journey where every applicant reached manual review, rebuilt so straight-through cases clear on their own and only genuine exceptions land with an underwriter.
2.4× faster approvals Sample
Retail & E-commerce in depth
The constraints that shape technology work in this sector, and how we approach them.
Open sector pageHave a problem shaped like this one?
Tell us what is not working and what it is costing. We will tell you whether we are the right team for it.