Mandala case study: Human-governed, AI-powered

  • WCAG 2.2 AAas the floor for every component and foundation.
  • 18hand-built colour themes, every one AA accessible.
  • 3 gatesbefore anything is called finished, each one opened by a person.
  • 4 scriptshand-tested: Latin, Japanese, Chinese and Korean. Arabic in the pipeline.
  • 40+components, each signed off by two developers before it ships.
  • 3 live productsalready on the foundation it is built from.

My HCLSoftware began on a blank screen. Mandala began on the opposite. By the time I gave it a name, three products, BigFix, My HCLSoftware and Marketplace, were already running every day on Accessible Design Language, the system already in place before Mandala existed, and Mandala is not built from scratch: it is that same design language made AI-readable, with design and code finally kept in sync. Nobody was going to pause a live product so I could rebuild the ground under it, and nobody should have had to.

BigFix and My HCLSoftware and Marketplace each carry the fuller story of how Accessible Design Language came to run under them in the first place, each its own piece.

That is the actual brief behind the tagline. Mandala is the accessibility-first, token-driven design system I am building at HCLSoftware: colour, typography, spacing, icons and components, defined once and consumed everywhere, built to WCAG 2.2 Level AA as a structural floor rather than a documented aspiration, and it has to satisfy two conditions at once, it has to be right, and it has to arrive without the teams shipping today ever noticing that the floor moved.

I hold design authority on this system and make the final call on every decision inside it. Three designers work with me on the Figma side and two developers sign the code off, and none of us, myself included, works on Mandala full time, everyone building this carries a demanding full-time job alongside it, and always has. Claude does the labour that does not need a human hand on every step, keeping Figma and Storybook in sync and checking contrast across eighteen themes at a scale no manual process could match, but nothing in Mandala ships on the strength of an automated check alone. A person reviews the design. A person reviews the code. That rule has never once had an exception.

The name itself is not decoration, and carries its own reasoning, laid out in its own piece.

Not a blank page

Mandala is a rebuild of a system that is already implemented, already shipped, and already relied on by multiple teams across two brands, every day, so replacing it wholesale was never realistic. I am building the replacement inside a private working environment, a complete copy of the existing libraries, visible only to me, my closest team and Claude, so that the libraries in daily use stay untouched until Mandala has genuinely earned the right to replace them.

Working this way surfaced a great deal of history nobody had been tracking. Two colour libraries had ended up sharing the same name, so a single component could be pulling its colour from either one depending on which happened to be open the day someone built it, one screen rendering teal on one binding and blue on another, at the same time, for what was meant to be the same semantic colour. Thousands of stray bindings had built up over years with no record of why, and a number of components had quietly gone orphaned inside the old structure. None of it ever reached a real product, because a private working copy has no real consumers until it has earned them. The closest this project has come to a genuine scare was a deprecated library published by accident rather than deleted, tens of thousands of bindings suddenly loose with no way to tell from inside Figma who might already be relying on it. The fear lasted about as long as it took to remember the architecture: a private file, by construction, has no consumers to break.

That became one of the operating principles of the whole project: a design system is not only a set of components, it is an accumulated set of decisions and dependencies, and those have to be understood before they can be safely redesigned.

The system behind the system

Human signoff
The final control point. Nothing is committed, deployed or published without my explicit approval, every single time.
Three gates
Nothing is called finished until it clears the code, a full manual walkthrough with a keyboard and two screen readers, and a final sign-off against every decision on record.
The rules Claude works inside
A project rulebook, an accessibility rulebook, a numbered and dated decision log, and custom skills, all written before Claude touches a component.
Claude
Does the labour that does not need a human hand on every step, such as keeping Figma and Storybook in sync and executing decisions once they are made.

The most important part of Mandala is the governance model that decides how the library gets built, not the component library itself.

Left without a written instruction, an AI collaborator does not wait. It improvises, fills the gap with its own best guess, and does so with complete confidence, often producing something that looks entirely plausible while quietly breaking an assumption elsewhere in the system that nobody has checked, and the discipline in this project has never been trusting Claude to know when to stop, it has been never leaving a gap for it to fill in the first place, and everything else here follows from that one decision.

Before Claude touched a single component, I wrote the rules it would work inside: a project rulebook that every session inherits, rewritten again and again as new edge cases surfaced; a dedicated accessibility rulebook, built out of my own training and years of practice, that runs every check a machine can genuinely be trusted to run and sets out the exact manual test for everything it cannot; a numbered, dated decision log, so that a question already settled cannot be reopened or changed without a name and a reason attached to the change; and a set of custom skills, all built in house, that encode how every component gets designed, built, exported and audited. Nothing is called finished until it clears three separate gates, the code itself, a full manual walkthrough with a keyboard and two screen readers, and a final sign-off against every decision already on record, and nothing is committed, deployed or published without my explicit approval, every single time.

That discipline gets tested in small ways, constantly. A gap in the icon library once turned out to be nothing of the sort, what looked like a missing component was a stale, cached read of an old node sitting under a key that had long since been repointed to something else entirely, and neither a node ID nor a variant name turned out to be safe to treat as identity on its own. The decision log exists for exactly this kind of moment, and it has also, at least once, caught the two of us wrong together rather than Claude wrong alone, which is the clearest proof I have that it is not a formality.

The result is a collaborator that rarely gets things wrong, and when it does, the gates catch it before it reaches anything that matters, because the speed is Claude's job and the judgement stays mine, and neither of us ever has to simply trust the other to get it right.

Accessibility is the floor

Button in focus state
The button receives an outline on focus to make it clearly visible to keyboard users.

WCAG 2.2 Level AA is not a target Mandala aims for and sometimes misses. It is the floor beneath which nothing ships, built into the architecture rather than checked against it once a design is already finished.

  • Colour is never the only way I communicate meaning.
  • Every interactive element has a name a screen reader can announce, whether or not it has a visible label.
  • Focus is always visible, and it never fires an action just by landing somewhere.
  • Disabled controls stay reachable and explain themselves, rather than vanishing from the tab order the way a native disabled attribute would.

None of that is an edge case, it is the ordinary, daily experience of people who use assistive technology, and Mandala is built around it rather than retrofitted to it afterwards, and the fuller account of what that takes structurally is its own piece.

Colour, built backwards

Colour is the foundation that took the longest and taught the most, because it could not be built the way colour systems normally are. Most start with a primitive scale and give it meaning afterwards. Mandala already had its semantic tokens in place, roles like primary, danger and warning, before it had a primitive colour scale underneath them, so the primitives had to be built backwards to fit decisions that already existed. The result is eighteen colour themes, every one WCAG AA accessible, letting a person personalise the interface to their own eyes rather than settle for whichever palette a product happened to ship with, across illustrations, charts and every primary action alike. The private, occasionally hair-raising process of getting there has its own full account in a companion piece.

The stacked chart using the fully accessible blue colour palette.
All charts have a data table which can be opened in a drawer. This perfectly meets requirements for long alt text for charts, as well as being useful to a lot of other users. A great example of how everyone benefits from accessibility.
The blue colour palette.
Tests performed to check for colour blindness compatibility. These tests were performed on all themes, and on all types of palettes.

Typography that travels

  • Will this text still fit in the UI?

    Text in English (Font: Inter - Regular - 16px)

  • Text in Japanese (Font: Noto Sans JP - Regular - 16px)

  • 这段文字在用户界面中还能放得下吗?

    Text in Simplified Chinese (Font: Noto Sans SC - Regular - 16px)

  • 이 텍스트가 여전히 UI에 들어갈까요?

    Text in Korean (Font: Noto Sans KR - Regular - 16px)

The same discipline applied when the type scale had to travel into Japanese, Chinese and Korean. Latin-script languages occupy space on a screen in a completely different way from these three scripts, which is exactly why an automated approach did not work, internationalisation here needed a human hand and a human eye, tested screen by screen against real, dense BigFix layouts rather than guessed at from a specimen sheet, and it landed in a different place for each language on purpose, because a rule applied uniformly to three scripts that happen to share a region on a map is not the same thing as a rule that was actually tested. The full story, including where the three languages agreed and where they did not, is its own piece.

Where it stands

The foundations are completely tokenised. Colour, typography, spacing and the rest are defined once as tokens, which keeps the system consistent and makes it readable by AI as well as by people. Every foundation is shipped and exported through the same pipeline, downloadable as CSS and JSON, and sits behind a gate that stands permanently between any future change and the published site.

Icons and illustrations are built on the same idea. I have shipped 180 icons, each one a component that points at a path, so no icon has to be exported in several colours: the path simply picks up the colour of its container, which keeps the code lighter and easier to maintain. The (current) 60+ illustrations work the same way. They are paths too, and each one adapts to the colour theme, picking up the primary colour of the team using it and personalising part of the illustration in that colour.

Components draw on all of this. They move through the same governance one at a time, each held to the full standard rather than shortcut through it, and every one ships in React, the framework the teams use, so a team reaching for Mandala does not need to reverse-engineer it.

What this proves

What this proves is not that an AI can be handed a design system and left to get on with it, but the opposite: held inside rules a design team actually wrote, checked by gates a human signs off by hand, and never left to guess at a decision it was not given, an AI collaborator can carry an enormous amount of the labour without ever carrying the judgement.

Nearly two decades of design and accessibility practice sit behind every rule, gate and decision that governs Mandala, and AI gives that experience more reach rather than replacing it, so the judgement stays human and the busy-work goes to AI, human-governed and AI-powered by design, and the quality is never the thing that gets traded away to get there.

Next in the Mandala case study