Internal tooling · AI build · ZOZO · 2024
Design System Audit Plugin
A Figma plugin I wrote to audit our own design files against our own design system, with an OpenAI chat surface for recommendations in context.
- Role
- Built it, solo
- Org
- ZOZO
- Stack
- Figma plugin API · OpenAI API · TypeScript
- Ran for
- One week
What I noticed
This started on a professional development day, not as an assigned piece of work. Going through the ZOZOFIT product design files, across the app, the website and the design system itself, I kept finding inconsistencies. Not one bad file. A drift, spread thin across all of them.
Design system drift is a boring problem with an expensive tail. Nobody has time to audit a file by hand, so nothing gets audited, so the drift compounds until a component library stops being the source of truth and becomes a suggestion.
The design system was documented. Nothing was checking whether anyone was following it.
So I built the thing that checks
A Figma plugin that audits an open design file against the ZOZOFIT design system, covering brand, web and app. It runs where the work already is, inside Figma, on the file you have open, rather than as a report someone has to go and read.
The OpenAI API sits behind a chat surface in the plugin. You can ask it about the file in front of you and get a UI recommendation back, not just a list of what is wrong.
How it ran
- Design system
- The agreed set of colours, type styles, spacing and components a product is built from. Following it is what makes twenty screens look like one product.
- Design token
- One named value in that system, such as a specific grey. Using the token rather than typing the colour is what lets it be changed everywhere at once.
- Plugin
- A small program that runs inside Figma and can read or change the file you have open.
- API call
- One request sent to an outside service, here OpenAI. Each call is billed, which is why the number of them decides whether a tool is affordable.
Why it stopped
The design team used it for a week and it did what it was built to do. It was not adopted permanently. Auditing whole files that often cost more in OpenAI API calls than the drift was costing us.
I would rather record that accurately than claim an adoption that did not happen. A tool that works and cannot pay for its own running costs has failed as a product, not as a build. The lesson: the running cost belonged in the proposal, not in week two.