TasteLabs Found Design Drift in Our Own Sites
Our landing sites had three amber ramps, 34 untokenized brand-color literals, and no BRAND.md files. One fix PR has merged; one is still open.
TasteLabs is a design-taste engine for agents, surfaced as an MCP server at mcp.tastelabs.com/mcp with twelve tools. It searches a curated corpus of real sites by aesthetic — describe a look in natural language, get concrete reference sites back. It extracts any URL's design system as structured data: tokens, CSS, screenshots, and a written brand signature. It grades a page against a reference brand, returning the worst-first fixes. Extractions cost two credits each. Re-reading a past search or extraction is free.
We wired the MCP server into the swarm so every agent gets the tools natively.
What the extractor found
We extracted desplega.ai first, then our two landing sites: agent-swarm.dev and desplega.sh.
The engine read desplega.ai correctly: CTA TRY IT OUT, copy tone "Confident, Direct, Technical." A search_similar_brands call on that extraction returned neon.tech, clickhouse.com, roocode.com, and finsweet.com — a correct cluster of dark developer-tool marketing sites. The visual embedding checked out, so we trusted what it said about our own sites.
On agent-swarm.dev the engine named a primary accent of #BB4D00 — the exact hex of the --color-primary token, oklch(0.555 0.163 48.998). It named Space Grotesk for headings and body, Space Mono for labels and code. Correct on every dimension.
The shipped stylesheet did not match. #b75000, a Tailwind v4 amber, appeared 16 times. #b45309, a Tailwind v3 amber, appeared 7 times. Both sat beside the token's #BB4D00. Three amber-700 values for one brand color, all live on the same page. Roughly thirteen surface tints — creams, success-state greens, and Slack-mention chrome — were baked per-component with no token entry.
#BB4D00
--color-primary token (canonical)
1 token definition · 0 raw occurrences
#b75000
Tailwind v4 amber-700 (stray)
16 raw occurrences
#b45309
Tailwind v3 amber-700 (stray)
7 raw occurrences
/ Raw CSS occurrences
Five stray hexes. 35 occurrences.
Tailwind amber ramps: v4 700, v3 700, v4 500, v3 600, and v3 800, in row order.
Zero reference: canonical #BB4D00, 0 raw occurrences. The token is defined in OKLCH; this does not mean its color never rendered.
Tokens file (1 definition)
--color-primary:
oklch(0.555 0.163 48.998);
/* #BB4D00 */0 matches
Shipped stylesheet (35 raw occurrences across 5 hexes)
#b75000 ×16
#b45309 ×7
#f99c00 ×6
#d97706 ×3
#92400e ×3On desplega.sh the engine named #000000 and #0FEB3A, with Geist Mono headings and Space Grotesk body. The brand green, #0FEB3A, appeared 34 times as a raw literal and was never bound to a token. The token layer that shipped was stock shadcn neutral plus an unused blue — --sidebar-primary: #1447e6. Grep the token layer for the brand color: nothing. Grep for a blue: a token that shipped but never rendered.
34
Raw #0FEB3A literals in shipped CSS
0
Token definitions owning #0FEB3A
An unused color token shipped: --sidebar-primary: #1447e6.
Neither repo had a BRAND.md. The design system was whatever the components happened to do.
The fixes
Two PRs, one per repo. agent-swarm-landing #182 has merged; landing-labs #19 is still open and unmerged.
agent-swarm-landing #182 consolidates the stray amber ramps onto the --color-primary token. A BRAND.md records the canonical value and one rule: brand values live in tokens, no raw brand hex in components. The pixel shift from converging two ambers onto a third hex is subtle, visible mostly in blog chart bars. The PR includes before/after screenshots.
landing-labs #19 promotes #0FEB3A to a --brand-green token, removes the unused --sidebar-primary, and adds a BRAND.md. The change is a deliberate pixel-for-pixel no-op — same rendered color, now with one place that owns it.
Both repos are private; neither PR is publicly linkable.
What it means
An external extractor that reads your rendered page detects the gap between what your tokens claim and what your stylesheet ships. We did not need an internal audit. We needed an outside reader looking at the same pixels our users see.
The same tool can gate this in CI. verify_brand_adherence scores any page against a reference brand for about one credit. A PR that introduces a page that stops matching the brand fails the check. The engine must reach the preview URL, and TasteLabs does that through an SSH reverse tunnel we have not tested.
Every team says it has a design system. Shipping is the proof. Our design system is what ships, not what the tokens file says. Until this test, they no longer matched.
Sources and further reading
- Taste Engine — the product the API key belongs to. The surface that works with our key is the MCP server at
https://mcp.tastelabs.com/mcp. - Taste-AI/skills — the official agent skills for the Taste Engine, published under the Vercel skills standard.
- The two audit reports behind this post are internal to the swarm, so the occurrence counts above are not independently linkable. The primary evidence is the stylesheet each site actually serves.
- Both fix PRs (
agent-swarm-landing#182,landing-labs#19) sit in private repos and are not publicly linkable either.
FAQ
What is TasteLabs?
A design-taste engine for agents: it searches a corpus of real sites by aesthetic, extracts any URL's design system as structured data, and grades a page against a reference brand.
What is design-token drift?
The gap between the tokens a design system declares and what the shipped stylesheet actually renders — hardcoded hexes, duplicate color ramps, or a brand color never promoted to a token. Both of our sites had it.
Did the two fix PRs merge?
One has. agent-swarm-landing #182 merged, and the amber consolidation has shipped on agent-swarm.dev. landing-labs #19 is still open and review-gated; the drift on desplega.sh remains live until it merges.
How much does TasteLabs cost?
Extractions are two credits each. Brand-adherence grading is about one credit per run. Re-reading a past search or an extraction from your history is free.
Related field notes
An Agent That Can Read Its Own API Key Has Already Leaked It
Why putting secrets in environment variables fails for AI agent swarms, and how egress-time credential injection fixes the credential plane.
The Write-Only Radar: Our Curation Agent Proposed the Same Story for 21 Days
When every node stays green while producing duplicate work, your data model is lying to you.
25 FOSS repos agent-swarm stargazers love, and will become key for your agentic infra.
We looked into 528,916 star edges, 228,177 distinct repositories, from 655 agent-swarm GitHub stargazers.