How to Build a Benchmark That Actually Measures Taste
Organizations: Chance AI
Abstract
Expert-aligned "taste" benchmarks should reward craft judgment, not the ability to game the test. We introduce TasteBench, a pairwise good-vs-bad benchmark across visual, brand, book, and tech items under a frozen rubric with expert-only gold (panel n>=3; percent agreement >=0.60 primary gate; weak engagement labels train/analysis-only), together with a control protocol that separates craft judgment from test-gaming. Applying the protocol to a Round-1 pilot (primary_human_expert; three biological human experts; n=250 pairs) surfaces and quantifies three validity threats: two construction artifacts that inflate the trivial-baseline layer, and a difficulty ceiling that inflates every score. (1) Position: the preferred item is slot A with probability 0.956, so an always_item_a policy scores 0.956 (fair chance 0.5). (2) Lexical leakage: a filename token cue scores 0.912. (3) Difficulty ceiling: craft domains show near-ceiling human agreement (book/brand/tech 1.0), and even under A/B randomization (eval_assignment_seed7; gold_side_A ~0.47) all five VLM cards reach 1.0 on craft, with only visual separating (~0.84-0.91; a post-hoc hard subset, n=107, leaves craft at 1.0). The protocol (expert-only gold, a weak-label firewall, side randomization at construction, filename scrubbing, and hard filters) makes each artifact measurable and, for the two construction artifacts, correctable; we release a reference eval harness and a side-randomization tool, and show the tool removes the position skew (0.916 to 0.495/0.505). The result is a calibrated view of what the benchmark does and does not yet measure: position and leakage are fixable, whereas the craft-domain ceiling is a pair-difficulty limit that Round-2 must address. We do not evaluate engagement, era/circle conditioning, or calibration here, and we claim no general taste SOTA.
Figures & tables
| Domain | Example items | Model inputs |
|---|---|---|
| visual | posters, UI stills, photography | image (+ optional short caption) |
| brand | logo/identity pairs, packaging | image + brand-agnostic brief |
| book | covers + blurbs, or passage craft | image and/or text |
| tech | API snippets, architecture diagrams, product UX | image and/or text |
| # | Control | Neutralizes | Audit |
|---|---|---|---|
| C1 | Expert-only gold; weak labels train/analysis-only | virality-as-taste | gold provenance ( data_origin ) |
| C2 | Hard filter: AND percent agreement | noisy / ambiguous labels | agreement distribution |
| C3 | Randomize A/B side at construction | position bias | side-balance audit (Table 7 ) |
| C4 | Scrub predictive tokens from filenames / IDs | lexical leakage | leak baseline (Table 6 ) |
| C5 | Report difficulty; reject or replace saturated domains | difficulty ceiling | per-domain spread (Table 10 ) |
| Quantity | Value |
|---|---|
| Label rows | 750 |
| Gold pairs (primary) | 250 |
| Raters | human_expert_01 , 02 , 03 ( _raters on all pairs) |
| Primary-eligible | 250 / 250 |
| Ambiguous | 0 |
| Unanimous triples | 247 / 250 |
| Domain | Pairs | Mean agreement |
|---|---|---|
| book | 60 | |
| brand | 60 | |
| tech | 50 | |
| visual | 80 |
| Agreement | Pairs |
|---|---|
| 247 | |
| 3 |
| baseline | acc | book | brand | tech | visual | |
|---|---|---|---|---|---|---|
| always_item_a | 250 | 0.956 | 1.0 | 1.0 | 1.0 | 0.8625 |
| always_item_b | 250 | 0.044 | 0.0 | 0.0 | 0.0 | 0.1375 |
| random_seed42 | 250 | 0.552 | 0.5833 | 0.55 | 0.6 | 0.5 |
| hash_coin | 250 | 0.500 | 0.5667 | 0.45 | 0.44 | 0.525 |
| leak_prefer_good_token | 250 | 0.912 | 0.8333 | 1.0 | 1.0 | 0.85 |
| scope | domain | P(pref. is A) | P(pref. is B) | |
|---|---|---|---|---|
| full 250 | all | 250 | 0.9560 | 0.0440 |
| full 250 | book/brand/tech | 170 | 1.0 | 0.0 |
| full 250 | visual | 80 | 0.8625 | 0.1375 |
| hard 107 | all | 107 | 0.9159 | 0.0841 |
| hard 107 | visual | 40 | 0.775 | 0.225 |
| hard 107 (side-randomized, seed 42) | all | 107 | 0.4953 | 0.5047 |
| model card | runtime openrouter_id | acc | book | brand | tech | visual |
|---|---|---|---|---|---|---|
| gpt-5.6-terra | openai/gpt-5.6-terra | 0.960 | 1.0 | 1.0 | 1.0 | 0.875 |
| claude-sonnet-5 | anthropic/claude-sonnet-5 | 0.956 | 1.0 | 1.0 | 1.0 | 0.8625 |
| gemini-3.7-flash | google/gemini-3.7-flash | 0.972 | 1.0 | 1.0 | 1.0 | 0.9125 |
| Qwen3-VL-8B | qwen/qwen3-vl-8b-instruct | 0.948 | 1.0 | 1.0 | 1.0 | 0.8375 |
| InternVL3-8B (card) | google/gemma-3-12b-it | 0.968 | 1.0 | 1.0 | 1.0 | 0.900 |
| model card | hard | hard acc | visual (40) | book (27) | brand (20) | tech (20) |
|---|---|---|---|---|---|---|
| gemini-3.7-flash | 107 | 0.9346 | 0.825 | 1.0 | 1.0 | 1.0 |
| InternVL3-8B (card/gemma) | 107 | 0.9252 | 0.800 | 1.0 | 1.0 | 1.0 |
| gpt-5.6-terra | 107 | 0.9065 | 0.750 | 1.0 | 1.0 | 1.0 |
| claude-sonnet-5 | 107 | 0.8972 | 0.725 | 1.0 | 1.0 | 1.0 |
| Qwen3-VL-8B | 107 | 0.8785 | 0.675 | 1.0 | 1.0 | 1.0 |
| model card | book | brand | tech | visual | spread |
|---|---|---|---|---|---|
| gemini-3.7-flash | 1.0 | 1.0 | 1.0 | 0.9125 | 0.0875 |
| InternVL3-8B (gemma) | 1.0 | 1.0 | 1.0 | 0.900 | 0.1000 |
| gpt-5.6-terra | 1.0 | 1.0 | 1.0 | 0.875 | 0.1250 |
| claude-sonnet-5 | 1.0 | 1.0 | 1.0 | 0.8625 | 0.1375 |
| Qwen3-VL-8B | 1.0 | 1.0 | 1.0 | 0.8375 | 0.1625 |
| Artifact | Mechanism | Early detection |
|---|---|---|
| Position bias | A/B slot prior in construction or in the judging interface | report ; it should be |
| Lexical leakage | Predictive tokens in filenames / IDs ( good_ , real_ , v2_final ) | train a filename-only baseline; it should be chance |
| Difficulty ceiling | Consensus pairs an expert panel cannot make hard | report per-domain accuracy; a saturated domain is unmeasured , not solved |
Benchmark Design
Benchmark design creates tasks, datasets, metrics, and protocols that make AI capabilities measurable and comparisons credible.
See all 394 papers