taste
Abductive reasoning for any website's design taste
/taste turns any URL into a complete design context for your AI agent.
Design Map, Taste DNA, and the reasoning behind every choice.
Pipeline
Four steps from URL to taste.
Four agents, four roles. Each reads the same page through a sharper lens until what's left is a file any AI tool can build from.
-
Extract MeasurementsYou are a Senior Design AI. Your job is to extract precise, objective design measurements from a webpage.
-
Detect PatternsYou are a Principal Design Engineer detecting SYSTEMATIC RULES in the measurements provided by Step 1.
-
Infer TasteYou are the Ultimate Design Critic. You will now derive the "Taste" — the deliberate, painful TRADE-OFFS the designer made.
-
ObserverYou are the Lead Critic & Final Editor. Your job is to RUTHLESSLY filter the taste analysis from Step 3. Zero bullshit passes through you.
measurements
patterns
output
How to reverse engineer design taste
20 measurement categories, every colour, weight, spacing value, radius, and shadow cited with exact px / hex / ratio. No approximations.
5–8 system-level rules extracted. Each pattern gets an Evidence line and a Design Goal explaining why it exists.
4 taste principles — each with Trigger, Decision, Reason, Evidence, and Trade-off. At least one Restraint principle is required.
Quality gate. Runs anti-slop grep, validates JSON, then writes the final output.{domain}.md + {domain}.json
The output
Two files. One brief.
Every run writes a .md and a .json. The full token set, plus 4 principles explaining why each design choice was made and what it gave up.
| Page background | #08090A | Near-black, not pure black |
| Surface-1 | rgba(255,255,255,0.02) | Barely-there panel tint |
| Surface-2 | rgba(255,255,255,0.05) | Card face |
| Text primary | #F7F8F8 | Nearly white, cool |
| Text secondary | #D0D6E0 | Cool gray |
| Panel border | #23252A | 1px inset ring |
| H1 / Display | 64px · wt 510 | −1.408px tracking |
| H2 | 48px · wt 510 | −1.056px tracking |
| H3 | 20px · wt 590 | −0.24px tracking |
| Body | 15px · wt 400 | 24px line-height |
| Font | Inter Variable | wt 510/590 = variable-only |
| Base unit | 8px | |
| Section padding | 72px | top per section |
| Inter-section gap | 10px | breathing room is inside sections |
| Button h-pad | 12px |
| 2px | Tags, micro elements | |
| 6px | Primary card | most common |
| 8px | Modal / chat panels | |
| 9999px | Pill badges / buttons |
| Card border | #23252A 0px 0px 0px 1px inset | primary depth signal |
| Float | rgba(0,0,0,0.4) 0 2px 4px | floating cards only |
| Vignette | rgba(0,0,0,0.2) inset | product screenshot depth |
Works with your tools
Your AI agent gets the taste.
One extra file, formatted for your tool. The agent picks it up on its next run. No setup, no pasting.
Get started
Three steps. Then run it anywhere.
Clone, connect Playwright, run. Works in Claude Code and Gemini CLI.
Give it a try