How a wine & food pairing is scored

The vinistory method — sensory, documented, explainable

vinistory.com/pairings

1Profile both sides

A wine's axes derive from its grape blend and style; every dish is profiled on fat, salt, umami, acidity, sweetness and chilli heat.

Sancerre — the wine

bodybody: 0.40acidityacidity: 0.85tannintannin: 0.00sweetnesssweetness: 0.00oakoak: 0.05alcoholalcohol: 0.50aromaticsaromatics: 0.80sparklesparkle: 0.00bitternessbitterness: 0.15

Goat cheese (crottin) — the dish

bodybody: 0.45fatfat: 0.55saltsalt: 0.45umamiumami: 0.35acidityacidity: 0.55sweetnesssweetness: 0.05heatheat: 0.00aromaticsaromatics: 0.55bitternessbitterness: 0.10

2Score the interactions

Alliances

  • Acidity cuts fat
  • Sweetness tames chilli heat
  • Tannin binds rich protein
  • Body matches body
  • Intensity meets intensity
  • Shared aroma families (tie-break)

Clashes

  • Tannin × chilli heat veto
  • Tannin × raw brine veto
  • Dish sweeter than the wine veto
  • High alcohol × heat
  • Heavy wine, delicate dish
  • Bare umami hardens tannin

A fatal clash vetoes the pairing outright — no amount of bonuses can lift it past 25/100.

Aroma matching is perceptual (18 families) and deliberately light: structure carries the verdict, aromas break ties.

3Weigh, sum, explain

Each rule's contribution is weighted and the total squashed to 0–100 — every point traceable to a sentence.

Wine and dish are matched in weight, so neither overpowers the other. (+0.90)weight matchThe wine's acidity cuts the richness of the dish and refreshes the palate. (+0.49)acid cuts fatTheir flavour intensities meet, so the pairing stays balanced. (+0.40)intensity matchWine and dish share a family of aromas, so they echo each other. (+0.30)shared aromas
90/100

Sancerre × crottin classic pairing

« Wine and dish are matched in weight, so neither overpowers the other. »

Sensory paradigm, not molecules: structural interactions after Harrington's wine-food framework; aroma affinity is perceptual (Eschevins et al., aroma families). Molecular compound-sharing is deliberately excluded — critical reviews find it weakly predictive of real pairings.

ML re-weights, it never invents rules: a logistic head learns the rule weights from labelled pairings and ships only if it beats the hand-tuned weights (AUC) while keeping the classics ranked. Unknown dishes resolve lazily — embedding nearest-neighbour, then LLM decomposition onto the same axes, cached so the dish base grows itself.

88 grape sensory profiles · 110 wine styles derived from the encyclopedia's blends · 389 hand-profiled dishes · curated classic pairings + expert labels for training · evaluated against the SommBench benchmark (1,000 pairs) and 43,000 WineSensed crowd pairing mentions.

Calibrated on documented classic pairings and expert labels · every score explains itself · vinistory.com/pairings

The hand-set labels

The engine's fixed points: pairings set by hand from the documented canon, never overridden by the model. Rule weights are calibrated against them — a change that misranks one of these never ships.

Foie gras, brioche × Sauternes classic

The canonical liquoreux pairing: botrytis sweetness against the unctuous liver.

Fresh goat cheese (crottin) × Sancerre classic

Loire crottin + Sancerre — acidity to acidity, textbook.

Jamón ibérico × Sherry classic

Fino with ibérico — Andalusia's own table.

Raw oysters × Muscadet classic

Saline shellfish with a lean, high-acid, unoaked white.

Rib steak, bordelaise sauce × Médoc Red classic

The archetypal left-bank match: tannin and fat, local to local.

Roquefort × Sauternes classic

Salt against botrytis sweetness — the canonical blue-cheese pairing.

Roquefort × Port classic

Port and blue cheese, the English tradition transposed.

Choucroute garnie × Mosel Riesling works

Riesling with choucroute — the Alsatian table's own logic (Mosel stands in for Alsace).

Fresh goat cheese (crottin) × Champagne works

A taut Blanc de Blancs works, but Sancerre's precision is generally better.

Peking duck × Red Burgundy works

Pinot's red fruit and silk against lacquered duck — a sommelier standard.

Raw oysters × Chablis works

Steely Chardonnay echoes the oyster's mineral salinity.

Thai green chicken curry × Mosel Riesling works

Off-dry residual sugar tames the chilli; aromatics match the lemongrass.

Thai green chicken curry × Vouvray works

Off-dry Chenin — acidity + stone-fruit depth carry the coconut and heat.

Thai green chicken curry × Alsace Gewurztraminer works

Lychee/rose aromatics meet the lemongrass; off-dryness tames the chilli.

Raw oysters × Médoc Red avoid

Tannin against raw briny oysters turns sharply metallic.

Rib steak, bordelaise sauce × Sauternes avoid

A dessert-sweet wine is cloying on a savoury rib steak.

Thai green chicken curry × Médoc Red avoid

Tannin × chilli heat = harsh and metallic — a documented clash.

← All pairings