Skip to main content
AI Pipelines

One design system from several products, as three variants

DesignerAgency

Overview

A portfolio has no single truth: five apps carry five drifted palettes. Extract them all, split shared baseline from per-product override from drift, then let the positioning documents steer three deliberately different systems in a self-hosted Penpot. Pick one, discard two.

The other design system recipes take one site and produce one answer. A portfolio breaks both halves: five products mean five extractions, and the first real work is separating shared baseline from deliberate per-product override from accidental drift.

Measured tokens settle that; they cannot settle direction.

Positioning and mission documents are the authority for every deviation from what ships, so they go in the same context. Then ask for variants, not an answer: three systems along one stated axis, everything else held fixed, are comparable. Penpot runs self-hosted so unreleased positioning stays off a hosted tool, and the prompt defines where the agent stops and asks. The token pass is the tested part; the components are what the agent is asked for.

How it works

Loading diagram...

Extract each product, one run per app

Terminal
dembrandt app-one.example.com --crawl 5 --screenshot ./app-one.png --design-md --save-output

Baseline the public brand surface too

Terminal
dembrandt example.com --crawl 5 --brand-guide --design-md --save-output

Run Penpot locally under Podman

Terminal
podman compose -p penpot -f docker-compose.yaml up -d
Agent prompt (self-hosted Penpot MCP active, all inputs in context)
# In context: one DESIGN.md and screenshot per product, the brand
# guide PDF, the exported Figma design system, and the positioning
# and mission documents. Penpot MCP pointed at the local instance.
"1. Consolidate the five extractions into one table: value, which
products share it, and whether the difference is a deliberate
per-product override or drift. Do not resolve drift silently.
2. Read the positioning and mission documents. Every deviation
from a measured value must cite a line in one of them.
3. Author three token sets in the Penpot file, named variant-a,
variant-b and variant-c. They differ along [state the axis:
e.g. how far each moves from the current palette] and are
identical in everything else: same token names, same scale
lengths, same component list.
4. Build the same starter components on each set: Button, Input,
Card, so the three are comparable side by side.
Stop and ask me before: resolving any drift, dropping a token that
exists today, or choosing the axis if I have not stated it."
Verify nothing was hardcoded
# Export each variant's token set from Penpot, then diff against the
# extraction it came from. Values that only exist in the Penpot file
# were invented; values bound nowhere are dead tokens.
dembrandt example.com --dtcg --save-output
Output

Three comparable token sets and component sets in a self-hosted Penpot file, a consolidation table separating shared baseline from per-product override from drift, and a list of every deviation with the positioning line that justifies it.

Browse all

All recipes →

62 workflows