AI DevelopmentMethodology16 min readPublished August 2, 2026

Measured tokens over style adjectives · checkable beats descriptive in every brief

Extract a Design System Before You Prompt an AI Builder

“Make it look like Apple” gives an AI app builder nothing it can verify. A measured token brief — a spacing base, a type ratio, contrast ratios computed with WCAG’s actual formula — gives it numbers that either hold or don’t. This is the extraction method, the maths, and the legal line you shouldn’t cross.

DA
Digital Applied Team
Senior strategists · Published Aug 2, 2026
PublishedAug 2, 2026
Read time16 min
SourcesW3C · vendor docs · case law
WCAG 2.2 AA · normal text
4.5:1
minimum contrast ratio
Token tiers
3
primitive → semantic → component
DTCG stable spec
2025.10
first stable release · Oct 28, 2025
Body line-height
1.51.6×
recommended vs font size

If you want an AI app builder to produce something that doesn’t look like every other AI-generated app, extract a design system before you write the prompt. Not a mood board, not “clean and premium” — an actual token set: a spacing base, a type-scale ratio, a semantic color table with computed contrast ratios. The difference between a vague style adjective and a measured token is the difference between an instruction the model can drift away from and one you can check against its output.

One boundary up front, in plain terms, because it shapes everything that follows: extract rigour, not identity. A 4px spacing base, a 1.333 type ratio, a 4.5:1 contrast target — these are structural, systemic choices, and measuring them off a site you admire is legitimate. A wordmark, a distinctive illustration style, a brand’s proprietary iconography — that is someone’s identity, and reproducing it is a different act entirely. Courts have been drawing versions of this line for decades, and we cover the actual doctrine in section 07.

This guide walks through the three-tier token taxonomy the industry has converged on, how to read tokens off a live reference site with nothing more exotic than DevTools, the WCAG contrast maths that turns “looks premium” into a passing number, where the extracted brief plugs into v0, Lovable, and Bolt, and the legal framework that separates fair structural learning from imitation.

Key takeaways
  1. 01
    Checkable detail is what the evidence supports.The prompt-specificity literature is nuanced, and precise about where the gains sit: concrete, checkable content — explicit input/output specs, edge-case handling, stepwise breakdowns — is what lifts output quality. A token brief is made of exactly that. ‘Make it look like Apple’ is not a constraint anyone can check.
  2. 02
    Use the three-tier token taxonomy.Primitive tokens hold raw values (blue-500, space-16), semantic tokens map purpose (color-action-primary), component tokens scope to one UI part (button-bg-hover). Dependencies flow one way — primitives feed semantics feed components.
  3. 03
    Contrast is arithmetic, not taste.WCAG’s formula — (L1 + 0.05) / (L2 + 0.05) on relative luminance — makes every color pair checkable: 4.5:1 for normal text at AA, 3:1 for large text and UI components. An extracted ramp can be verified, not eyeballed.
  4. 04
    All three builders bottom out in the same file.v0’s registry, Lovable’s Themes panel and .lovable folder, and Bolt’s chat-driven theming all ultimately resolve to CSS custom properties in a globals.css or tokens.css file — so one extracted token set serves all three with light reformatting.
  5. 05
    Extract structure, never identity.Spacing bases, type ratios, and contrast targets are functional choices that sit outside trade dress and copyright protection. Wordmarks, illustration styles, and proprietary iconography are expressive and protected — the legal line is real and decades old.

01The SpineWhy “make it look like Apple” is a weak prompt.

The intuition behind vague style prompts is that the model has seen Apple’s site, so naming Apple should transfer the look. What actually transfers is a fuzzy average of everything the adjective evokes — and, more importantly, an instruction you have no way to verify. When the output comes back, “does this look like Apple?” is a judgment call. “Is the body text 16px with a 1.5 line-height and does every text/surface pair clear 4.5:1?” is a measurement.

The research on prompt specificity supports exactly this distinction — and it’s worth being precise about what it does and doesn’t show, because the honest version is more useful than the slogan. One study of prompt quality and code-generation outcomes found quality improved as prompts moved from bare requirements toward detailed design documents. A separate study of 265 manually validated developer-ChatGPT interactions drawn from open-source pull requests found specificity — alongside context — most strongly associated with whether the model produced actionable code, while explicit verification cues were the primary predictor of whether that code was actually adopted.

A third strand measured how code-generation accuracy scales with prompt specificity by building, for each task, a partial order of prompts running from minimal to maximally detailed. Sensitivity varied by task, but the qualitative analysis named the drivers plainly: explicit input/output specifications, edge-case handling, and stepwise breakdowns. More detail raised pass rates — and the detail that did the work was the concrete, checkable kind.

Read those three results together and the pattern is not “spec-driven always wins.” It is narrower and more actionable: the detail that moves the numbers is the detail someone could check. A token set is checkable by construction — every value in it is a number a reviewer, or the builder itself, can verify against output. “Make it look like Apple” is not a checkable constraint at all: it gives the model no target and you no test. That second half is our argument rather than a published finding — no study we found pits style adjectives against token briefs inside an app builder — but it follows directly from where the research says specificity pays. That distinction is the entire argument of this post, and it’s the same argument our specification-quality brief method makes for AI output generally.

What the research actually shows
The literature does not say “any detail helps.” What it isolates is narrower: explicit input/output specifications, edge-case handling, and stepwise breakdowns are what lift code-generation quality, and in the pull-request study specificity and context together tracked whether the model produced actionable code while explicit verification cues predicted whether that code was adopted. A style adjective supplies none of those. Build the brief out of numbers, not vibes, and you’re on the right side of the evidence.

02Token TaxonomyThe three-tier taxonomy your brief should use.

Design tokens stopped being a house convention and became a standard in October 2025, when the Design Tokens Community Group — a W3C community group — shipped the first stable version of its Design Tokens Format Module, version 2025.10, on October 28, 2025. The spec is backed by more than twenty editors and authors from organizations including Adobe, Amazon, Google, Meta, Microsoft, Salesforce, Shopify, Figma, Sketch, and Framer, and it standardizes exactly the things an extraction brief needs: theming and multi-brand support, modern color spaces like Display P3 and Oklch, token relationships via aliases, and one token file compiling out to iOS, Android, web, and Flutter. Tools including Style Dictionary, Tokens Studio, Terrazzo, Penpot, and Figma implement the format — though implementing a format and defaulting to it in production are different claims, and adoption depth varies by tool. The spec itself lives at designtokens.org.

The architecture that matters for your brief is the three-tier model used across the industry — by Style Dictionary, Shopify Polaris, the U.S. Web Design System, and Contentful’s design system among others. Three tiers, one-way dependencies:

Tier 1
Primitive tokens
blue-500 · space-16 · radius-8

Raw values with no opinion about use. The full color ramp, the spacing steps, the radius set. This is what you measure directly off the reference site.

What exists
Tier 2
Semantic tokens
color-action-primary · space-stack-lg

Purpose-mapped aliases of primitives. One blue-500 can back both color-link-default and color-action-primary — one primitive, several roles, no duplicated hex values.

What it means
Tier 3
Component tokens
button-bg-hover · card-shadow

Scoped to a single UI part, referencing semantic tokens. The tier AI builders touch most directly when they generate components.

Where it lands

The dependency direction is one-way by design: primitives feed semantics, semantics feed components. Reverse references cause circular-dependency build errors in tools like Style Dictionary — which is useful discipline for a brief too, because it forces you to name why a color exists before you assign it to a button. If you’re building a system from a blank slate rather than extracting one, our companion guide on building the design system from scratch covers the governance side; this post is the extraction companion.

03Extraction MethodReading tokens off a live reference site.

You don’t need special tooling to start. The Computed panel in Chrome or Firefox DevTools shows resolved values for any selected element, including CSS custom properties, and the console gives you direct reads: getComputedStyle(el).getPropertyValue("--color-action-primary") returns any custom property’s resolved value. Inspect the body for the base font size and line-height, headings for the type scale, buttons and cards for radii and shadows, and section wrappers for the spacing rhythm. A whole category of browser extensions and web tools now exists specifically for this — token extractors, CSS-to-Tailwind converters, extract-to-Figma tools — which tells you this is a recognized, tooled workflow rather than a hack. Treat any individual tool’s accuracy claims as vendor-stated; the DevTools read is the ground truth.

Be equally clear about what extraction cannot give you. Computed styles are resolved values — the final hex and pixel numbers — not the authoring intent behind them. The reference site’s real token source of truth, its Figma variables or its internal Style Dictionary config, is invisible from the rendered page. What you extract is a reverse-engineered approximation of the ramp and scale, and you should present it to the builder as exactly that. A single static read also misses hover, focus, and active states, dark-mode variants, and responsive breakpoint changes — some extraction tools claim to auto-capture these, but that’s a per-tool vendor claim, not a property of the method.

The honest limit
Extraction recovers the system — the ramps, scales, and rhythms — not the source of truth that generated it. That’s fine: for a builder brief you want the system, not the vendor’s file. But check pseudo-states and dark mode by hand, and say in the brief which values are measured and which are your inferred fill-ins.

04The MathsThe numbers that make a brief checkable.

Contrast is the clearest example of a taste question that is secretly arithmetic. WCAG defines the contrast ratio as (L1 + 0.05) / (L2 + 0.05), where L1 is the relative luminance of the lighter color and L2 the darker, producing ratios from 1:1 to 21:1. Relative luminance itself is a weighted sum of linearized sRGB channels — roughly 0.2126·R + 0.7152·G + 0.0722·B after each channel is gamma-corrected — which is why green carries roughly an order of magnitude more perceptual weight than blue. The exact linearization constants live in the W3C’s Understanding SC 1.4.3 document; use the source rather than a restated constant.

The practical consequence: because the formula is asymmetric and non-linear, a color ramp cannot be eyeballed into compliance. Two pairs that look similarly distinct can compute to wildly different ratios depending on which channel carries the difference. That’s precisely why an extracted palette belongs in the brief with its computed ratios attached — the builder gets a target it can hit, and you get a check you can run on whatever it generates.

AA · normal text
WCAG 2.2 Level AA
4.5:1

Minimum contrast for normal body text. The thresholds are inherited unchanged from WCAG 2.1 — 2.2 added new criteria but did not move the contrast numbers.

SC 1.4.3
AA · large text & UI
Large text · non-text UI
3:1

Applies to large text (at least 18pt, or 14pt bold) and to non-text UI components — button borders, form-field outlines, focus indicators.

SC 1.4.3 / 1.4.11
AAA · normal text
WCAG 2.2 Level AAA
7:1

The enhanced tier: 7:1 for normal text, 4.5:1 for large text. Worth targeting for long-form reading surfaces even when AA is the formal requirement.

SC 1.4.6

Typography extracts to two numbers. First, the type-scale ratio: divide each heading’s computed font size by the next step down and a well-built site converges on a consistent multiplier. The common ratios are named after musical intervals — 1.25 (major third), 1.333 (perfect fourth), 1.5 (perfect fifth), 1.618 (golden ratio) — with 1.25 commonly described in typography-tool documentation as the most popular choice for restrained hierarchy and 1.333 as a versatile default with more dramatic contrast. Second, line-height: recommended body-text line-height sits at 1.5–1.6× the font size, and WCAG’s own visual-presentation guidance (SC 1.4.8, a AAA criterion widely adopted as best practice at any level) sets 1.5 as the floor for body text.

Elevation is the token category most extraction briefs get wrong. Material Design’s scale runs roughly 1dp to 24dp with each level tied to a functional role — cards, app bars, dialogs — elevation defined semantically, not as arbitrary shadow values. And shadows are a light-mode technology: on a dark surface there’s no meaningful contrast between a dark shadow and a dark background, which is why Material You formalizes dark-mode elevation as tonal elevation — each step a slightly lighter tint of the base surface color rather than a shadow.

The dark-mode trap
A brief that records only shadow values — blur, spread, opacity — will fail the first time you ask the builder for a dark variant. Record the elevation strategy: shadow tokens for light surfaces, a tonal-elevation rule for dark ones.

05Operational TableThe extraction checklist: measure, verify, place.

This table is the method in one place: what to measure on the reference site, how to extract it, what makes it checkable, and where it lands in the brief you hand the builder. Existing token content tends to cover taxonomy, extraction tooling, or the WCAG maths separately — the point of running them as one checklist is that every row ends in something you can check against the output.

Extraction checklist mapping each design-token category to its DevTools extraction method, the checkable result that verifies it, and where it belongs in the builder brief.
Token categoryHow to extract itThe checkable resultWhere it goes in the brief
Color & contrastSample computed text and surface colors in the DevTools Computed panel; read custom properties via getComputedStyle(L1 + 0.05) / (L2 + 0.05) ≥ 4.5:1 normal text, ≥ 3:1 large text and UI (AA)Semantic color table with the computed ratio stated per text/surface pair
Type scaleRead computed font-size on h1 through body; divide each step by the nextA consistent ratio near 1.25, 1.333, 1.5, or 1.618Base size plus one named ratio — not per-heading pixel values
Spacing rhythmRead margins, paddings, and gaps across sections and componentsA common divisor — typically a 4px or 8px base unitBase unit plus the step scale (primitive spacing tokens)
RadiiComputed border-radius on buttons, inputs, cards, and modalsA small reused set — a handful of values, not one per componentRadius tokens mapped to component classes
ElevationBox-shadow values grouped by layer role (card, sticky bar, dialog)A stepped, role-tied scale (Material’s runs ~1–24dp) plus a dark-mode ruleShadow tokens for light surfaces and a tonal-elevation strategy for dark
Motion timingComputed transition-duration and transition-timing-function on buttons, links, and other interactive elementsA small reused set of durations with named easings — not a bespoke value per componentMotion tokens listed alongside the elevation scale
DensityComputed line-height divided by computed font-size on body and headings1.5–1.6× for body text (WCAG’s visual-presentation floor is 1.5)Per-tier line-height tokens alongside the type scale

06Builder SurfacesWhere the tokens go in v0, Lovable & Bolt.

Each builder exposes a different amount of structure for design-system input, and it’s worth knowing the surfaces as the vendors document them rather than as folklore. v0 supports Tailwind config files and globals.css directly — custom utility classes and CSS variables that its generations respect — and its team-scale mechanism is a registry, which v0’s own docs describe as “a distribution specification designed to pass context from your design system to AI Models.” Teams start from a shadcn/ui-based starter template, define components in registry.json, put color tokens in tokens.css and fonts in CSS variables, then deploy the registry to a public URL that v0 pulls from.

Lovable runs two surfaces. Its Enterprise-tier Design Systems feature stores styling rules, a component library, and setup instructions in a project-level .lovable/ folder that propagates to every connected project. The more broadly available Themes feature is a visual panel over CSS custom properties — colors, typography, spacing, border radius — defined in globals.css. Per Lovable’s docs, project knowledge is ingested by default, with scoping handled by a .dsignore file using gitignore syntax.

Bolt added design-system support that lets teams apply an organization’s brand guidelines inside the builder — with a paid Team plan required to add and reuse a custom design system across projects. Outside that feature, Bolt’s theming is driven by natural-language iteration in chat, a materially looser mechanism than v0’s registry or Lovable’s folder. Replit Agent rounds out the usual shortlist, but we could not find a comparably documented structured theme-file mechanism for it — so rather than speculate, see how v0, Lovable, Bolt and Replit actually compare for the general four-way picture.

Most structured
v0 registry
registry.json · tokens.css · public URL

A deployable design-system spec v0 consumes via its Open in v0 integration. The most formal token surface of the three — and the closest fit for a fully extracted brief.

Plus direct Tailwind config + globals.css
Two surfaces
Lovable Themes + .lovable/
CSS custom properties · project folder

Visual Themes panel over globals.css variables for every tier; Enterprise Design Systems folder that propagates one source across connected projects.

Change a variable, every reference updates
Loosest
Bolt chat + Team DS
natural-language iteration · Team plan

Chat-driven theming by default, with a design-system layer for applying org brand guidelines; custom design-system reuse sits behind the paid Team plan.

Per Bolt support docs
“When you change a theme variable, every component that references it updates automatically.”— Lovable documentation, Themes

Here’s the synthesis the vendor docs don’t state, and the reason this method is worth the hour it takes: all three builders ultimately resolve theme customization down to the same primitive — CSS custom properties in a globals.css or tokens.css file. The differences are how much structure sits around that file: v0’s registry spec, Lovable’s folder plus visual panel, Bolt’s chat with a Team-plan layer. Which means one extracted token set — written once as a THEME.md or a DTCG-format JSON — translates to all three with light reformatting. That’s also why the extraction pairs naturally with Tailwind v4’s token-driven theming, where the theme is likewise CSS variables all the way down. And if the destination is production rather than a prototype, the same brief survives the handoff — see our walkthrough of shipping a Lovable prototype to production.

07The Legal LineStructural vs expressive: the ethics line, with the legal peg.

The boundary we stated in the introduction — extract rigour, not identity — isn’t just etiquette; it tracks how courts have actually treated interface look-and-feel for decades. Copyright protects a site’s specific code and original graphic elements, but not the overall “look and feel” as a gestalt — the combination of layout, palette, and general style — a gap analyzed at length in the NYU Journal of Intellectual Property & Entertainment Law. Trade dress is the doctrine that comes closest to protecting a whole look, but it only covers elements that are non-functional and have acquired secondary meaning — consumers associating that specific look with one source — a bar most site designs don’t clear, as practitioner commentary notes. Functionality is the hard stop: visual choices inextricably linked to their function can’t get trade dress protection at all.

The precedents run one direction. In BlueNile v. Ice.com, courts held that the look and feel of a website as a whole cannot be copyrighted, and later cases have found website styling merely functional and so ineligible for trade dress either — the plaintiff losing on both theories, as summarized in legal-academic commentary. Apple’s 1988–1994 look-and-feel suit against Microsoft over the Windows GUI ultimately failed, with the court distinguishing protectable individual expressive elements from an unprotectable overall look. And Lotus v. Borland — a trial win in 1992, reversed on appeal in 1995, with the Supreme Court declining to reinstate the win in 1996 — established that a menu command hierarchy is a functional “method of operation” and not copyrightable, even though its specific expression might be.

Apply that functional/expressive divide to token extraction and the line draws itself. A spacing base, a numeric type ratio, a neutral-ramp step count, a contrast target — these are functional, systemic choices, the Lotus side of the line, and not realistically protectable. A wordmark, a distinctive illustration style, proprietary iconography — expressive, source-identifying, and squarely on the protected side. This is our reasoned synthesis of the cited case law applied to a new workflow, not a holding from any single case.

No AI case law yet — be precise
We could not find any litigation squarely on AI-assisted design-token extraction — unsurprising, given the token spec itself only stabilized in October 2025. What exists is the framework: trade dress and copyright doctrine developed on websites and software UIs. Treat this section as that framework applied by analogy — not as a ruling on the AI scenario, because there isn’t one.
The ethics line: structural design-system elements that are legitimate to extract versus expressive brand elements that should not be reproduced, with the applicable legal doctrine for each.
ElementExtract?WhyDoctrine that applies
Structural — legitimate to extract
Spacing base (4px / 8px)YesFunctional layout rhythm; carries no brand identityFunctionality bar excludes trade dress; method-of-operation logic per Lotus
Type-scale ratioYesA number applied to sizes, not creative expressionSystemic/functional choice outside copyright’s gestalt gap
Neutral-ramp step countYesStructural palette architecture, not a distinctive lookLook-and-feel gestalt not copyrightable (BlueNile line of cases)
Contrast targetsYesAccessibility compliance numbers from a public standardWCAG is a W3C standard; a ratio is nobody’s property
Expressive — do not reproduce
Wordmark / logoNoSource-identifying expression at its purestTrademark and copyright; trade dress where secondary meaning exists
Illustration styleNoDistinctive creative expression tied to one brandCopyright protects original expressive elements
Proprietary iconographyNoExpressive assets, often registered and licensedCopyright in the specific artwork
Brand-specific copy voiceNoVerbal identity; the words themselves are protectedCopyright in the specific text

08The DeliverableFrom token set to builder brief.

The deliverable is a single theme document — we write it as a THEME.md, though a DTCG-format JSON works equally well — with four parts. First, the primitive tables: the color ramp with hex values, the spacing steps with the base unit named, the radius set, the shadow scale with its dark-mode tonal rule. Second, the semantic mappings: which primitive backs which role, with the computed contrast ratio stated next to every text/surface pair. Third, the type system as a base size plus a named ratio and per-tier line-heights. Fourth, a short prose preamble stating what was measured, what was inferred, and — explicitly — that the brief describes structural rigour extracted from a reference, not that reference’s brand identity.

Then the drop-in is mechanical: paste the tokens into v0’s tokens.css or a registry, into Lovable’s Themes variables or a .lovable/ folder, or into Bolt as the opening design-system instruction. The closing move is the one that separates this method from prompt folklore: re-measure the output. Run the same DevTools reads and the same contrast formula against what the builder generated. Because the brief was made of numbers, the review is too — every deviation is a specific, nameable correction rather than another round of “more premium, please.”

Tokens are necessary, not sufficient. They fix theming — color, type, spacing, elevation, motion timing — but they can’t express layout composition, imagery direction, or the choreography of an interaction beyond its durations. For those, the companion method is visual: screenshot-driven UI development with vision models picks up exactly where the token brief stops. And if you’d rather hand the whole extraction-to-production loop to a team that does it weekly, our web development services build on precisely this workflow — measured brief in, verified build out.

09ConclusionRigour is extractable. Identity isn’t yours to take.

The method in one breath

Give the builder numbers it can hit and you can check.

The reason AI-generated apps look generic isn’t that the models can’t do better — it’s that they’re briefed in adjectives. The prompt-specificity research points the honest way out: the detail that measurably lifts output is the checkable kind — specs, constraints, edge cases. A style adjective is none of those. A design system extracted from a reference you admire — three token tiers, a named type ratio, a spacing base, contrast ratios computed with WCAG’s actual formula — is checkable detail in its purest form.

The window for this method is unusually good. The DTCG spec stabilized in October 2025, which means the token format is no longer a house convention, and every major builder’s theming surface — v0’s registry, Lovable’s Themes, Bolt’s design-system layer — bottoms out in the same CSS custom properties your extraction produces. One measured hour against a reference site now buys you a brief that works across all of them.

Looking forward, we expect the builders to keep formalizing these surfaces — the trajectory from chat-driven theming toward structured registries points one way — and teams with an extraction habit will compound the advantage: every reference studied becomes a reusable, legally clean token library. Keep the boundary as you go. Measure the structure. Leave the identity.

From reference site to verified build

A brief made of numbers turns AI output from a gamble into something you can verify.

Our team extracts measured design systems, briefs AI builders with verifiable token sets, and ships production interfaces that pass the numbers they were specced against — delivered in days, not quarters.

Free consultationExpert guidanceTailored solutions
What we work on

Design-system engagements

  • Reference-site token extraction and THEME.md briefs
  • WCAG 2.2 contrast audits on existing palettes
  • v0 / Lovable / Bolt design-system setup
  • Tailwind v4 token architecture for production apps
  • AI-builder prototype to production handoffs
FAQ · Design-system extraction

The questions we get every week.

Because it’s unverifiable in both directions. The model receives a fuzzy stylistic association rather than constraints, and you receive output you can only judge by feel. The prompt-specificity research backs half of that directly: studies of code-generation quality find the gains concentrate in concrete, checkable content — explicit input/output specifications, edge-case handling, stepwise breakdowns — and a study of 265 manually validated developer-ChatGPT interactions from open-source pull requests found specificity and context most strongly associated with actionable code, with explicit verification cues the primary predictor of whether that code was adopted. The other half is our own argument: a style adjective is not a checkable constraint, so it gives the model no target and you no test. A token brief converts the same design intent into checkable form: instead of ‘premium,’ you specify a 1.333 type ratio, an 8px spacing base, and a semantic color table where every text/surface pair states its computed contrast ratio. The builder gets targets; you get a review process that’s measurement rather than taste.
Related dispatches

Continue exploring AI development methods.