Brand-to-Token Mapping

Translate brand guidelines (PDF, style guide) into a structured set of design tokens with proper naming and hierarchy.

When to Use

  • Onboarding a new brand into a multi-brand design system
  • Translating a brand guide PDF into usable design tokens
  • Auditing whether your tokens faithfully represent the brand
  • Setting up a white-label product for a new client

The Prompt

Convert these brand guidelines into a complete set of design tokens.

Brand guidelines:
[paste or describe: primary colors, secondary colors, typography, spacing rules, logo usage, etc.]

Output requirements:
1. **Primitive tokens** — Raw values extracted from the brand guide. Name them by hue and shade (e.g., blue-500, neutral-100).
2. **Semantic tokens** — Map primitives to roles (e.g., color.brand.primary = blue-600, color.text.primary = neutral-900).
3. **Typography tokens** — Font family, sizes, weights, line heights. Map brand type styles to token names (e.g., heading-xl, body-md).
4. **Spacing tokens** — If the brand guide specifies a grid or spacing, extract the scale. Otherwise, suggest one that fits the brand's visual density.
5. **Component tokens** — For key components (button, input, card), map brand colors to component-level tokens.
6. **Multi-brand support** — Structure tokens so another brand can override only the primitive layer.

Format: JSON with comments explaining each mapping decision.
Flag any gaps where the brand guide is ambiguous or incomplete.

Example Output

{
  "_brand": "Acme Corp",
  "_source": "Brand Guidelines v2.3, March 2026",

  "primitives": {
    "color": {
      "blue-50":  "#EFF6FF",
      "blue-100": "#DBEAFE",
      "blue-500": "#3B82F6",
      "blue-600": "#2563EB",
      "blue-700": "#1D4ED8",
      "coral-400": "#FB7185",
      "coral-500": "#F43F5E",
      "neutral-50":  "#FAFAFA",
      "neutral-100": "#F5F5F5",
      "neutral-900": "#171717"
    },
    "typography": {
      "font-brand": "Plus Jakarta Sans",
      "font-mono": "JetBrains Mono"
    }
  },

  "semantic": {
    "color.brand.primary":    { "$value": "{blue-600}", "_note": "Brand guide: 'Acme Blue'" },
    "color.brand.secondary":  { "$value": "{coral-500}", "_note": "Brand guide: 'Accent Coral'" },
    "color.text.primary":     { "$value": "{neutral-900}" },
    "color.text.on-brand":    { "$value": "#FFFFFF", "_note": "White on blue-600 = 8.6:1 contrast" },
    "color.background.primary": { "$value": "#FFFFFF" },
    "color.background.brand":   { "$value": "{blue-600}" }
  },

  "gaps": [
    "Brand guide does not specify a secondary text color. Suggested: neutral-500.",
    "No spacing grid defined. Recommended: 4px base unit to match the compact visual style.",
    "Brand guide shows a gradient but does not specify exact stops. Needs clarification."
  ]
}