Colour difference
All distances are CIEDE2000, verified against Sharma's reference pairs. The thresholds used throughout — ΔE 12 for "reads as related", ΔE 23 for "clearly your own" — were calibrated against the pairwise distribution of the seven built-in categories rather than guessed.
Status colours
Success, warning and error start from canonical hues (green 145°, amber 78°, red 28°), are pulled up to 14° toward the brand for family resemblance, then pushed away again if they land within ΔE 18 of the brand, secondary or accent colour.
Colour vision
Simulation uses the Machado, Oliveira & Fernandes (2009) linear-RGB matrices at severity 1.0, which is the dichromatic limit. It therefore covers dichromacy only — not anomalous trichromacy, which is milder and considerably more common. Treat it as a floor, not a clearance: always pair status with an icon and a label.
Colour feel
The three scales in stage 07 (activity, weight and heat) come from the colour-emotion model of Ou, Luo, Woodcock and Wright (2004, Color Research & Application 29), computed from each colour's CIELAB lightness, chroma and hue. It was fitted to 31 observers, British and Chinese, rating 20 single flat colours, so it describes how such patches were rated, not how a brand is perceived in context and not how anyone will behave. The words (balanced, leaning, strongly), the archetype expectations it is compared with, and the "same feel" distance for rivals are the author's, not research findings. Use the card to check that a palette does not contradict the story you are telling, not as evidence that it will persuade.
Archetypes are a framework, not a model
A test of 82 brands across the twelve archetypes found no significant clustering of hue, lightness or chroma by archetype (p = 0.15, 0.32 and 0.70 against a shuffle baseline, n = 6–8 per group). Stages 01–03 are a structured way to have the conversation about what a colour should say, not a predictive model. The category measurements, contrast ratios and print checks are the evidence-backed part.
Competitor data
Preset competitor hexes are widely-published primaries captured at a point in time. Brands change palettes — verify them against current brand guidelines before anything goes to a client.
Not legal advice
Distinctive unoccupied colours are also where registered colour trademarks live. The similarity flag compares your palette against the rivals you entered; it is not a trademark clearance search and says nothing about name, mark or trade dress. Check any final choice with counsel.
Privacy
Every calculation runs in your browser, and nothing is stored on a server. The page can make network requests to its own origin only, and only when you press one of two optional buttons: Suggest dials sends the audience description you typed, and Draft summary with AI sends the figures shown on the page (colours and colour distances; rival names are replaced with "Rival A" and "Rival B" before anything is sent). Both go to an AI agent, a hosted language model that runs off your device; the request is not logged by this site, and the description is not used for anything else. Without those buttons nothing is transmitted. Sessions live in files you download, or in a link that encodes the settings in the URL.
AI helpers
Suggest dials embeds your description and ranks it against the twelve archetype descriptions; the dials are set from those similarity scores by fixed arithmetic, and you can move them afterwards. Draft summary asks a language model to phrase figures the tool has already measured; any draft that cites a number or hex code it was not given is discarded. Neither helper changes a measurement, and neither makes the archetype framework predictive. Read any draft before it goes to a client.
Guardrails. Descriptions containing email addresses, links, @handles, phone numbers, card or ID numbers, IP addresses, postcodes, street addresses, or a name that introduces itself ("my name is…", "Mr Jones") are rejected before anything is sent. That check is pattern matching, so it cannot recognise a bare name or an unlabelled address in running text; describe the group, not individuals. Rival names never reach the model, requests are rate-limited, and the helpers pause for the day if the free allowance runs out, while everything else keeps working.