Standard / match

OGS Matching Model Specification

Open Gastronomy Standard — Matching v0.1


1. Overview

This specification defines how OGS models and scores pairings between dishes and beverages. The matching model is designed for explainability: every score is backed by structured explanation codes, match type sub-scores, and risk assessments.

In OGS v0.1, pairings are between one dish and one beverage.


2. Pairing Object

A pairing document links a dish to a beverage with scoring and explanation:

{
  "id": "ogs:core:pairing:wagyu-barolo",
  "ogs_version": "0.1.0",
  "name": "Seared Wagyu with Barolo 2018",
  "dish_ref": "ogs:core:dish:seared-wagyu-truffle",
  "beverage_ref": "ogs:core:beverage:barolo-2018",
  "match_types": [ ... ],
  "overall_score": 92,
  "grade": "A",
  "explanation_codes": [ ... ],
  "risks": [ ... ],
  "confidence": 0.85,
  "evidence": { ... }
}

3. Match Types

Each pairing is evaluated across one or more match types. Each match type represents a different dimension of food-and-beverage compatibility:

Match Type Description
harmony Shared flavor profiles create convergence — the dish and beverage taste like they belong together
contrast Complementary opposition — differences highlight and enhance each other
bridge A specific aromatic compound or family links dish and beverage
intensity_alignment The overall intensity/weight of dish and beverage are well-matched
structural_balance Structural elements (acidity, tannin, body, fat) interact beneficially
refresh The beverage cleanses or resets the palate between bites

3.1 Match Type Entry Structure

"match_types": [
  {
    "type": "harmony",
    "score": 88,
    "description": "Shared earthy, umami-forward profiles create deep convergence",
    "primary": true
  },
  {
    "type": "structural_balance",
    "score": 95,
    "description": "High tannin beautifully cuts through the rich fat of wagyu",
    "primary": false
  }
]
Field Type Required Description
type string YES Match type from controlled vocabulary
score integer YES Sub-score for this dimension, 0–100
description string NO Human-readable explanation of why this match type applies
primary boolean NO Whether this is the dominant match type for this pairing

4. Overall Score

The overall pairing score is a composite value from 0 to 100:

4.1 Score Calculation (Informative)

A reference approach (non-normative):

  1. Compute weighted average of match type sub-scores (weights by importance/primary flag)
  2. Apply risk penalties (each risk severity reduces score: low = −2, medium = −5, high = −10)
  3. Clamp result to 0–100

5. Grade Scale

The overall score maps to a letter grade:

Grade Score Range Meaning
A+ 95–100 Exceptional — a legendary pairing
A 90–94 Excellent — highly recommended
B+ 85–89 Very good — strong pairing with minor gaps
B 80–84 Good — solid pairing, enjoyable
C+ 75–79 Above average — works but not ideal
C 70–74 Average — acceptable, some friction
D 60–69 Below average — noticeable issues
F Below 60 Poor — significant clashes or mismatches

6. Explanation Codes

Every pairing carries an array of explanation codes — structured references to the vocabulary defined in vocab/explanation_codes.json. Explanation codes articulate why a pairing works or fails.

6.1 Explanation Code Entry

"explanation_codes": [
  {
    "code": "STRUCT_TANNIN_FAT",
    "weight": 0.9,
    "detail": "The firm tannins in Barolo are softened by the rich marbling of A5 wagyu, creating a classic synergy"
  },
  {
    "code": "AROMA_SHARED_EARTH",
    "weight": 0.7,
    "detail": "Both the truffle jus and Barolo share earthy, forest-floor aromatics"
  }
]
Field Type Required Description
code string YES Reference to an explanation code ID from explanation_codes.json
weight number NO Relevance weight, 0.0–1.0 (how significant this factor is)
detail string NO Human-readable elaboration specific to this pairing

7. Risk Model

Risks capture potential negative interactions. Each risk references a negative explanation code:

"risks": [
  {
    "code": "RISK_ALCOHOL_OVERPOWERS",
    "severity": "low",
    "description": "At 14.5% ABV, the Barolo's alcohol could slightly overpower subtle truffle nuances",
    "mitigation": "Serve at 16-18°C to reduce perceived alcohol heat"
  }
]
Field Type Required Description
code string YES Reference to a negative explanation code ID
severity string YES One of: low, medium, high
description string NO Human-readable description of the risk
mitigation string NO Suggested action to reduce the risk

7.1 Severity Definitions

Severity Impact Score Penalty (Informative)
low Barely noticeable; most diners won't detect it −2 points
medium Noticeable; some diners may find it suboptimal −5 points
high Significant; likely to detract from the experience −10 points

8. Confidence and Evidence

Each pairing carries confidence metadata:

"confidence": 0.85,
"evidence": {
  "method": "computed",
  "sources": [
    "OGS sensory profile analysis",
    "Classical sommelier pairing principles",
    "WSET food and wine pairing framework"
  ],
  "notes": "High confidence due to well-established tannin-fat synergy principle"
}
Field Type Required Description
confidence number YES Overall confidence in the pairing score, 0.0–1.0
evidence.method string NO One of: expert_panel, instrumental, computed, estimated
evidence.sources array NO Array of strings describing evidence sources
evidence.notes string NO Additional context on confidence assessment

9. Complete Pairing Example (Informative)

{
  "id": "ogs:core:pairing:wagyu-barolo",
  "ogs_version": "0.1.0",
  "name": "Seared Wagyu A5 with Barolo 2018",
  "dish_ref": "ogs:core:dish:seared-wagyu-truffle",
  "beverage_ref": "ogs:core:beverage:barolo-2018",
  "match_types": [
    {
      "type": "harmony",
      "score": 88,
      "description": "Shared earthy, umami-forward profiles",
      "primary": true
    },
    {
      "type": "structural_balance",
      "score": 95,
      "description": "Tannin-fat synergy is textbook perfect"
    },
    {
      "type": "intensity_alignment",
      "score": 90,
      "description": "Both dish and wine are bold, full-bodied"
    }
  ],
  "overall_score": 92,
  "grade": "A",
  "explanation_codes": [
    { "code": "STRUCT_TANNIN_FAT", "weight": 0.9 },
    { "code": "STRUCT_INTENSITY_MATCH", "weight": 0.8 },
    { "code": "AROMA_SHARED_EARTH", "weight": 0.7 },
    { "code": "HARMONY_FLAVOR_CONVERGE", "weight": 0.6 }
  ],
  "risks": [
    {
      "code": "RISK_ALCOHOL_OVERPOWERS",
      "severity": "low",
      "mitigation": "Serve at cellar temperature (16-18°C)"
    }
  ],
  "confidence": 0.85,
  "evidence": {
    "method": "computed",
    "sources": ["OGS sensory analysis", "Classical sommelier principles"]
  }
}

10. References