A ‘Universal design system’ for Sopra Banking, a single source of truth serving multiple products and regions, built mobile-first with accessibility and RTL support.
Sopra Banking Software was part of Sopra Steria. It had grown by buying banking software companies in different countries, so its products looked and worked differently from each other.
The importance of great design has gained traction throughout the company, and a project was launched to create a 'Universal design system' to be used throughout Sopra Banking products. The benefits of creating such a system are:
The Universal Component Design system project was launched in October 2020. I led the design side of it, running a team of five designers based in Spain, Belgium, the UK and Dubai. Four countries, three time zones, one eight-week build.
Governance for the pattern library was defined in parallel with the design work, not after it.
The aim of this project is to create a 'Universal design system' that is a single source of truth, which can be used across multiple SBS products. Following the mobile-first approach, it has been decided that the components will be designed as responsive while taking into consideration accessibility.
One product design pattern library holding a universal set of styles, rather than a library per product.
An accompanying set of guidelines to promote consistency, so the system holds without us in the room.
Mobile-first, responsive, accessible, and working in right-to-left as well as left-to-right.
The Double Diamond is a design process model developed by the British Design Council in 2005. It divides work into four phases: Discover, Define, Develop and Deliver, and its defining feature is the emphasis on divergent and convergent thinking: many ideas are created, then refined and narrowed to the best one. That happens twice, once to confirm the problem definition and once to create the solution.
The value of the model on this project was permission. It gave me a shared language for why the first two weeks produced no designs, which is the hardest fortnight of a design system project to defend.



I ran workshops with key stakeholders to identify the foundations and principles our designs would be based on. Each principle exists because of a specific failure we could point at in the inventory, which made them easy to defend later when a decision was contested.
We built moodboards to identify which style to adopt: flat and monochrome, or shading and colour. The result was a combination of both — flat and minimal, with shading and colour used to carry meaning rather than decorate.

SBS ships to Dubai. Arabic sat on the plan as a later phase, the way localisation usually does, build the system, translate it afterwards.
I moved it to the front. Mirroring is not translation. It changes component anatomy, icon direction, number and date formatting, the reading order of a table, where a calendar’s navigation controls belong, which side an error attaches to. Retrofitting that into a finished library is not an adjustment, it is a rebuild.
It cost us a little time per component. It saved the system from being unusable in one of its four markets.
Ship the English system, handle Arabic as a localisation workstream later.
Made RTL a condition of a component being finished. No component was signed off without its mirrored variant documented.
Working in two-week sprints, we organised the work using Kanban in our daily stand-ups, and held weekly feedback sessions with key stakeholders to make sure we were progressing in the right direction at speed.
UX focused on each individual component, fleshing out its functionality and feeding requirements back to UI, who were fast followers in designing components against those requirements. At the end of each day the team reviewed the components designed, checking they fulfilled everything asked of them.
The instinct in the room was to start with buttons. They are visible, they demo well, and after a 700-component audit everyone wants to see the pile shrink. Instead, I spent the first sprint on type scale, spacing, grid and colour. We could not get down to 21 components until we agreed what a component was made of. Otherwise we would only have fixed the surface of the inconsistency and left the cause in place.
Once the foundations were fixed, component work moved faster than the schedule assumed, because every decision inside a component had already been made once.
Start with the most-used components and show visible progress in week one.
Spent the whole first sprint on tokens, type and spacing, and explained why the visible progress comes later.


That formed the foundation of a universal design system for SBS. Components would continue to be added as new projects and products identified missing functionality, which is why the governance model mattered as much as the components did.
A Figma library is a source of truth for the people who open Figma. Engineers in four countries mostly do not.
So the published documentation became the system, and Figma became one of its inputs. Each component was documented with usage guidance, code, native behaviour and its right-to-left variant on separate tabs of the same page — so a developer, a designer and a product owner could all arrive at the same place and each find the answer they came for.
Governance was defined in parallel with the design work rather than after it, so a route for contribution existed before anyone needed one.
Hand over a well-organised Figma library and a set of slides.
Published to Zeroheight as the canonical reference, structured around who is reading rather than how the file is built. It is still live.



A system is only true when someone else builds with it. We reskinned Fidor’s onboarding flow against the design system components, on mobile and desktop, using the real flow rather than a sample screen.


A second acquired product, running on the same components: marketing pages, login, transfers, account summaries. Different content, different density, same system.
Each component was specified for web, iOS and Android. Where a platform would not bend, we documented the constraint rather than pretending it away — iOS holds San Francisco on a back button, Android fixes its date picker font, and a system that ignores that produces specs nobody can build.


This is what the RTL decision produced. Every component carries a right-to-left tab alongside usage, code and native — not a note saying Arabic is coming, but the mirrored component with its own anatomy, states, variants and error handling.