Skip to content

Case study · Jul 2026 to present

MKA USA Brand Center

One brand system for a national volunteer organization, built so a volunteer can maintain it and an AI agent can read it, with its taste calls logged as rules.

Role
VP of Design & Innovation, designer-owner and builder
Company
MKA USA
Dates
Jul 2026 to present
The MKA USA Brand Center index at mkausa.design, with every brand listed and grouped by tier.
MKA USA · Brand Center · Live at mkausa.designThe center index. Every brand, grouped by tier, one click from its guideline page. Live in production.

TL;DR

Nine MKA USA brands now answer to one source of truth for which logo, which color, and which rules are current. As VP of Design & Innovation for MKA USA, a volunteer leadership role, I designed it and built it, directing AI coding agents for much of the code. MKA USA owns the brands and its national volunteers are the people who use and maintain the center. It is live at mkausa.design, started in July 2026, and still shipping. The evidence is structural: nine brands share one page template, each ships a machine-readable guide, and an authenticated server lets an AI agent pull the same rules a volunteer reads.

Who maintains this after I step back

Brand guidelines die by neglect. A PDF goes stale the day after it ships, and each of the nine brands had its own history, its own palette, and its own volunteers who would be asked to update it. The real constraint was not visual. It was that the people maintaining this would be volunteers with limited time, and that the same rules now had a second reader that does not skim: an AI agent building flyers, pages, and tools for the organization.

Both readers needed the same answer, and the answer had to survive me leaving the room.

A public brand guideline page in the Brand Center, showing the shared shell with the brand's own hero and tokens.
One brand pageA public brand page. Palette, type, logo rules, and downloads come from the shared shell and the brand's tokens. Only the hero and the signature section are hand-built.

What I did

One shell, two bespoke slots

Each brand is a set of design tokens plus one typed brand definition, rendered through a single shared page shell. Palette, type, logo rules, do and don't examples, downloads, and voice all come from data and tokens. Only two slots per page are hand-built: the hero and one signature section.

The brand pages started fully bespoke. That cost showed up two ways: inconsistent information architecture from page to page, and a maintenance burden that would land on volunteers. A volunteer fixing a hex code should not have to edit a thousand-line file, and a fix on one page would not reach the other eight. In July I consolidated every brand onto the shared shell. The rejected alternative was keeping each brand's page its own, which is where the brands most visibly feel different, so I kept that expression in two places only: the hero and the signature moment. I logged the decision with its reason, so the next owner can see what I weighed.

The shell stayed small where it counts. Today the nine hand-built brand pages run from 117 to 435 lines each, and the shell carries everything they share. The biggest page, the parent brand's at 431 lines, grew because I wanted hero animation in the slot. The budget held because the growth stayed inside the slots, but it also means the slots are now the part a volunteer cannot easily maintain. I accepted that trade. A short, ordered path for adding a tenth brand exists, from nothing to a gated, tested page.

ONE SHELL, FIXED ORDERHeroBESPOKE SLOTQuick grabFROM BRAND DATAStory and voiceFROM BRAND DATALogosFROM BRAND DATAColor and typeFROM BRAND DATADo and don'tFROM BRAND DATASignature sectionBESPOKE SLOTDownloads and familyFROM BRAND DATALINES PER BRAND PAGEBrand page, largest435Brand page, smallest117Shared shell, all brands1,104EACH OF THE 9 BRANDStheme tokens + typed brand definitiontwo slots hold the part only that brand hasthe rest is structure a volunteer can maintain
One shared shell with exactly two bespoke slots. Each brand's hand-built page runs 117 to 435 lines; the shell carries the rest. Brands differ where they should and nowhere else.

A second reader that does not skim

Every brand also ships a plain-text brand guide, nine in all, built from the same definition as the page. On top of that sits an authenticated server speaking the Model Context Protocol, so an agent can ask for a brand's rules directly instead of scraping a site. It exposes 26 tools, 11 resources, and 5 prompts. A unit test registers the real server against the published catalogue and fails the build if anything is registered but unlisted, or listed but unregistered, so the documentation cannot drift from what the server does.

Agents also get a deterministic checker. It lints an artifact against the brand for off-palette colors, wrong or recolored logos, failing contrast, missing interactive states, and banned copy, and returns findings with stable rule ids. Four skills I wrote cover building, critiquing, handing off, and reviewing content, and in September I made it a rule that every MKA agent that builds or checks design runs three approved external skills, Considered among them.

PER BRANDbrand.tstyped brand contentprofiles.tstheme tokens and rolesbrand-guide.txtcondensed, for agentsREGISTRYone listHUMAN READERBrandPageShellfixed section order, two bespoke slotsdownloads behind sign-inAGENT READERAuthenticated MCP server26 TOOLS11 RESOURCES5 PROMPTS4 MKA-OWNED SKILLSbuild, critique, handoff, content reviewplus the brand-guide file, read directlyONE REGISTRY DRIVES BOTH READERS: PAGES, DOWNLOADS, AND THE MCP SURFACE.
One brand definition, three outputs: the page a volunteer reads, a plain-text guide, and an agent interface with tools, resources, prompts, and skills.

The access design has one call I would defend in a review. Tokens are personal, shown once, stored only as a hash, and revocable from a settings page. Performance work found that every request wrote a "last used" timestamp to the database. I throttled that write to once every ten minutes, but kept the token check itself on every request. The timestamp only feeds a coarse column on the token page, so ten-minute granularity loses nothing anyone reads. Revocation and expiry, though, must work on the very next call, and a cached check would have broken that quietly.

REQUESTREAD TOKEN ROWrevoked? expired? every requestWRITE LAST USEDonly if older than 10 minRESULTT + 0 MINWRITTENallowedT + 1 MINSKIPPEDallowedT + 4 MINSKIPPEDallowedT + 5 MINTOKEN REVOKEDSKIPPEDrejectedon the very next callThrottled: the write, a convenience. Never throttled: the read, a security check.
Two paths on every call. The token check runs each time, so revocation lands on the next request. The last-used write runs once every ten minutes.

Taste, written down as rules

Brand guidance usually lives in the head of whoever ran the last event. I kept a decision log with its reasons, because an agent and a new volunteer both need the reason, not just the answer.

The typography decision is a good example. The licensed serif that several brands use is not free to everyone, so the faithful open stand-in is Source Serif 4, never Fraunces, which belongs to the parent brand family only. People with the license see the real face, and everyone else sees the bundled one, not a bare fallback name.

Two early decisions did not survive. A leadership interview in July produced answers on one auxiliary body's palette and on the logic behind another brand's mark. Two days later a pass through the collateral archive showed the first was wrong and the second imprecise. I did not delete the old entries. They stay in the log, struck through, with the evidence that overturned them, so the next person sees what changed and why before they repeat the mistake.

Some decisions are hard stops. After volunteers had been printing marks on shirts with too much freedom, I directed three uniform apparel rules for all nine brands, with no approval path that waives them: never alter the logo, never print on the back, and never put sacred text on a garment. Photographs of minors follow a written policy rather than anyone's judgment on the day.

The Brand Center on a phone: the brand index in a single column.
The same center on a phone, in a single column.

What shipped

The center is live and gated: downloads require a sign-in and every one is written to an audit log. Nine brands run on one template. Three of them are private and sit behind the same sign-in.

Adoption is the next measure. The center launched without analytics on the pages or on the agent server, so the first year's question is whether volunteers keep it current without me. The sign-in audit log on downloads is where that answer will show up first.

Reflection

Constrain expression to where it earns its cost. Two slots out of the whole page is what made a nine-brand system maintainable. The hero and signature moment are where a brand should feel different. Everything else gets to be boring on purpose.

Write the reason beside the rule, including the calls you lose. The overturned entries are the most useful part of the log. They show the agent and the next volunteer where the evidence beat an opinion.

I would read the archive before the interview next time. Two of my first calls came from leadership answers that the collateral archive overturned two days later. The order cost two reversals in a log I meant people to trust.