Taste Oracle

Claude already knows what everyone thinks of nearly every film. So the shortest useful description of one person's taste is a description of how they diverge from everyone. This experiment compressed 791 Letterboxd ratings into a 400-word "taste constitution," then measured whether it predicts held-out ratings better than consensus does. Honest result: partly.

The constitution

The deliverable itself — no film titles allowed, only generalizable claims. This is the 400-word point on the compression frontier.

Rejection detection — where the compression pays

A consensus model almost never predicts this rater will pan a film — it caught 1 of 20 test-set rejections. The constitution caught 9, at the same precision. The taste signal that survives compression isn't point accuracy; it's knowing which acclaimed films will fail for him.

But point accuracy tied — and dev gains didn't survive

Mean absolute error on the untouched test set is a statistical tie between the oracle and both baselines (paired t < 0.7). The dev-set improvement was real overfitting: seven scoring runs against the same 100 films selected for dev-specific quirks.

The compression frontier

Word count vs dev-set error across constitution drafts. 124 words already beats every baseline on dev; the last 270 words bought ~0.1 stars. Gray points are dominated drafts.

Where the ratings actually land

Predicted vs actual rating bands on the 100 test films. Consensus piles everything into "solid–high." The oracle spreads mass toward the real distribution — right shape, imperfect aim.

The divergence signature

The films that define this taste: largest gaps between his rating and the community's, across all 791 films.

Consensus tracks him until the year 2000

Mean gap between his rating and consensus, by decade. Pre-2000 he is a half-notch harsh; after 2000 the gap triples. The constitution's single strongest rule is this curve.

Honest findings

Method

runwhat it knowsdev MAEtest MAEtest ≤0.5

791 ratings, stratified by rating band × decade into train 591 / dev 100 / test 100. Model: claude-sonnet-4-6, one film per call, title + year only — the true rating never enters the prediction context. Test set touched exactly once, after the constitution was frozen. Predictions cached; full pipeline is ~5 files of plain Python.