← Back to design work

One core, three markets.

Heineken ordered differently in every country, and one market still took orders by fax. The mandate was a single shared platform with each country layered over it. The design risk was that every market would push its own requirement at the shared template until there were three platforms again.

Role
Lead Visual Designer
Company
IBM iX, ecx.io, with Heineken
Scope
Design process, requirements, interface

The work

Overview

Ordering that worked three different ways.

Heineken sold into Europe through operating companies that each ran their own ordering channel. One of them still received orders by fax. There was no shared assortment view, no shared order history and no template a customer could reorder from.

IBM iX, where I worked at ecx.io, was engaged to consolidate that onto one shared SAP Hybris platform with country layers on top. I owned the design process across three markets, worked directly with the UK, French and Dutch operating companies on their requirements, and set up the design stream inside the programme, interviewing and onboarding the designers who staffed it.

I did not build the core. That was the given mandate and it was not mine to design.

The problem

Every requirement was legitimate and none of them overlapped.

Three markets, one template. Each arrived with a local requirement it could not trade away, and each exception accepted would move the platform one step back towards what the three of them had before.

France is legally required to show competitor products alongside Heineken’s own brands. The UK carries its own VAT and legal frame. The Netherlands charges beverage tax at two rates and adds a deposit as a separate line. None of that is negotiable and none of it is shared.

How it ran

Fortnightly, three days, three cities.

Requirements arrived through three-day workshops rotating Amsterdam, Paris and London, later settling in London. Each market’s needs were turned into user stories that landed on one shared backlog and were built in the next sprint. I represented design in that loop.

The rule I held was narrow. A market gets what it needs, and the shared template does not fork to give it. I escalated only when a market pushed against a pattern that had already been validated, which kept the escalations rare enough to be taken seriously.

The decision

Everything the countries disagreed about, in one component.

The path was identical everywhere: catalogue, template, cart, review. Almost every country difference landed in one place, the order summary, as a different number of tax and levy lines with different names in a different order.

There was no model in the platform for a levy that is not a tax, so the Dutch deposit had nowhere to live. The design gave it one. The summary became a single component that renders a list whose length the market decides, rather than a fixed set of rows with a fork per country.

One core served three markets on the strength of that component. It was also the hardest screen in the engagement.

In numbers
Up to 80% time saved per order, with order templates

The hardest call

A licence was expiring. The window was not negotiable.

The release window was set by an unrelated licence expiring on the client side. The more elegant approaches did not fit it.

We scoped down to the V1 that met the constraint and deferred the rest to phase two.

What shipped held. Order templates turned a weekly order into a few edits and a few additions, an estimated decrease of up to 80 percent in time per order.

The whole file, on request.

Foundations and their tokens, the component library with its variants and states, four directions for the order review across desk and mobile, the wireframes and the flows. It is client work, so the file is password protected. Ask and I will send the password.

Open the Figma file

Currently available.

Product ownership and user experience leadership. Evidence based. Across banking, fintech, SaaS and more.

Let’s talk