Brand Identity in Interface
A brand arrives as a handful of adjectives and a logo file, and the job is converting exactly one of those adjectives into a channel while holding everything else neutral. Default to concentration: one saturated accent, one personality channel at full strength, a system otherwise achromatic and unremarkable. Benji Taylor's site is the clean proof — handwritten marginalia ([data-variant=cursive], user-select: none) carries the entire voice while the rest of the page stays grey. Personality sprayed across five channels does not read as five times the personality; it reads as an unresolved system. The sibling this is most confused with is typography: that skill picks a family and sets scale, line-height, measure, and rhythm for legibility, and owns every number involved; this skill decides only whether the family expresses the brand and at what strength. A scale step or a leading value is typography, not here. Likewise marketing-pages builds one page; this skill defines the rules every page obeys.
Read what the brand already is before deciding what it should be. Find the brand kit, the logo directory, the accent already in the theme, the illustration folder, and any written guideline — then express decisions in the token tiers the project already uses (design-tokens owns naming). A brand pass is the most common excuse for a second accent, a second typeface, or a parallel brand.css to appear beside a system that already had answers. Extend the existing tokens; never open a second channel to say what the first already says.
Quick Reference
| Topic | File |
|---|---|
| The surviving adjective and the concrete decisions it implies — typeface behavior, accent chroma, where in the motion band to sit, radius, surface treatment, and what it forbids. Open it the moment principle 1 produces a word. | translation-table.md |
Core Principles
- Keep only adjectives that pass the antonym test. If the opposite is absurd, the word carries no information — nobody is building the unclean, unmodern, complicated product. Keep words a real competitor could claim the reverse of:
preciseagainstwarm,loudagainstquiet,craftedagainstindustrial. Force-rank survivors to3, act on the top one only. Exception: an inherited written guideline — keep their vocabulary even when it fails, and run the test on the decisions instead. - One personality channel, everything else neutral. Choose exactly
1of: a second typeface, marginalia or handwriting, an illustration voice, a motion signature, a saturated accent, a photographic treatment, a copy voice. The other six stay at system default. Exception: a product expressive by nature — a game, a kids' app — may run2. Never3. - Expression strength is inverse to view frequency. Emil Kowalski's frequency gate governs personality, not only motion: anything seen 100+ times a day stops being character and becomes noise. Marketing runs the channel at full strength; product chrome runs it reduced or not at all. The accent filling a marketing hero survives into the product on the primary action and the focus ring, nowhere else. Exception: first run, empty states, and celebrations are rare by construction and may carry marketing-strength expression inside the product —
delightdecides which moments qualify. - One saturated accent in the entire chrome. A second saturated hue means neither is the accent, and hierarchy then gets rebuilt out of a grey ladder — which is what a disciplined system uses anyway (benji.org: one accent, a grey ladder underneath). Constructing the value — ramp, chroma, gamut, contrast — is
color's job; this skill fixes only the count and the surfaces it may appear on. Exception: semantic status colors are not accents. But if the brand accent is green, the success state must move hue, or nobody can tell "primary action" from "it worked". - Derive logo clear space; measure logo minimum size. Clear space is
1×the mark's own cap height on every side, from the bounding box — a derived rule survives a redraw where a hardcoded24pxdoes not. Minimum size is not a taste call: shrink until the mark's thinnest stroke reaches1pxat 1× density, then stop one step above. Below32px— favicon territory,16×16and32×32— the mark is redrawn, never scaled. Exception: a lockup has two minimums; the wordmark's is larger and therefore governs, and below it you ship the symbol alone. - The logo appears once per view and does not animate on load. In product chrome the mark is the home affordance; a second instance in a splash, watermark, or footer means neither is authoritative. An animated logo on every load is a 100+/day animation by the frequency gate. Exception: a cold-boot or first-run moment, once per session, gated on
sessionStorageas a marketing intro is. - One illustration voice:
3colors, one line weight, one perspective. Illustration drifts faster than any other channel because it is commissioned in batches by different hands. Write the constraints down before the second batch: three illustration colors instead of six, a line weight matched to the icon stroke (iconographyowns that value), one projection. Exception: a spot illustration appearing exactly once and never beside another — a 404, a launch graphic — may break the palette. - Motion is never a brand variable. Across brands in one codebase these may differ: accent hue, logo, typeface pairing, illustration voice, base radius. These may not: spacing scale, motion curve family and durations, component structure, contrast floors. Two tenants animating on different curves read as one broken app. The two published families genuinely disagree — Benji Taylor's
--duration-snappy: 220ms / cubic-bezier(.175,.885,.32,1.1)and--duration-swift: 800ms / cubic-bezier(.175,.885,.32,1.275)overshoot past 1, while Emil Kowalski's--ease-out: cubic-bezier(0.23,1,0.32,1)and its siblings all settle. Pick one family per project, never per brand, never mixed (motion/references/techniques.md). Exception: a white-label product whose tenants never see each other may vary radius and accent per tenant — still not the curves. - Every surviving adjective exits as a rule that can fail. "Feels premium" cannot be reviewed, so it cannot be enforced, so it decays. "No element carries more than one shadow, every radius is
4px" can be checked in a diff. Record the rules where the team keeps its tokens, not in a deck. Exception: none. An unfalsifiable brand rule is how a system drifts back to framework defaults.
Smell / Fix
| Smell | Fix |
|---|---|
| Brief reads "modern, clean, simple, trustworthy" | All four fail the antonym test. Ask which competitor claims the opposite |
| A display typeface, a saturated gradient, and a custom illustration set on one screen | Three channels. Keep one, return the other two to system default |
| Marketing accent used on every card border in the product | Accent belongs on the primary action and focus ring; borders use the neutral ladder |
| A second brand hue introduced "for variety" | Variety comes from the grey ladder and from weight, not a second saturated hue |
Guideline specifies 24px logo clear space |
Restate as 1× cap height so it survives the next redraw |
Favicon is the full lockup scaled to 16×16 |
Redraw as the symbol alone; a wordmark at 16px is a smear |
| Tenant B overrides easing curves as well as color | Curves are product-level. Revert; vary accent and radius only |
| Two illustration batches on one page with different line weights | Pick one weight and redraw the minority set; line weight is the fastest-read drift |
| "Make it feel more premium" as a review comment | Not actionable. Convert to one falsifiable rule before touching code |
Output Format
Produce a Brand Translation Record — a table kept beside the tokens, not prose:
| Ranked adjective | Channel | Full strength | Product strength | Forbids | Falsifiable rule |
|---|---|---|---|---|---|
| 1. Crafted | Marginalia | Marketing, changelog | One surface, never in a form | Stock photography | No stock image ships; marginalia appears on 1 surface per page |
| 2. Quiet | none | — | — | Badges, animated numbers | No badge outside the inbox count |
| 3. Precise | none | — | — | Gradients, rounded display type | Every numeric column is tabular |
Rows 2 and 3 keep an empty channel column. If a second row acquires a channel, the record describes a system with no center.
Checklist
- Adjectives run through the antonym test, ranked to
3, only the top one acted on - Exactly
1personality channel; the other six at system default - Channel at full strength in marketing, reduced or absent in product chrome
- One saturated accent; value construction left to
color; status hues distinct from it - Clear space stated as
1×cap height; minimum size measured at1pxthinnest stroke - Mark redrawn below
32px, appears once per view, no load animation - Illustration fixed at
3colors, one line weight, one perspective - Multi-brand overrides limited to accent, logo, typeface pairing, illustration, radius
- One curve family across the codebase — overshooting or settling, chosen once
- Every kept adjective recorded as a rule that can fail a diff review