OenoBench: A Wine-Domain Benchmark for Knowledge-Grounded Evaluation of Large Language Models
Organizations: StrategAI
Abstract
We introduce OenoBench, a wine-domain knowledge benchmark of 3,266 multiple-choice questions across six pillars (regions, grape varieties, viticulture, winemaking, producers, business) and four difficulty tiers. The corpus is built from 38,104 atomic, source-anchored facts extracted by 35 provenance-verified scrapers from government registries (INAO, TTB, OIV), peer-reviewed journals, and Wikipedia/Wikidata. Our methodological contribution is an LLM-driven pipeline in which language models reformat verified facts and audit the result, but never serve as the source of truth: every claim traces to a URL, every question is generated by one of five strategies across five generator families, and every question is scored by a nine-agent audit calibrated against a human gold sheet via Cohen's . Evaluating sixteen frontier configurations, we find: (i) overall accuracy spans 53%-84%, led by o3 at 83.6%; (ii) reasoning-mode lift concentrates in DeepSeek R1 (+6.8pp) and is absent in Claude Opus and Gemini Pro; (iii) Anthropic shows +9pp self preference on its own questions while Google shows -8pp inverse preference; (iv) frontier open-weight models share the cost-vs-accuracy Pareto frontier with proprietary reasoning models; and (v) every config gains around 33pp on closed-book solvable items, revealing a parametric-recall ceiling that only the contextual slice avoids. We release corpus, audit findings, human-review app, and construction code under CC-BY-SA-4.0.
Figures & tables
| Domain pillar | Facts | Share | Tier 1 | Tier 2/3 |
|---|---|---|---|---|
| Wine regions | 18,943 | 49.7% | 23.4% | 76.6% |
| Producers | 6,215 | 16.3% | 9.1% | 90.9% |
| Grape varieties | 5,959 | 15.6% | 18.8% | 81.2% |
| Viticulture | 3,635 | 9.5% | 12.0% | 88.0% |
| Wine business | 1,985 | 5.2% | 31.4% | 68.6% |
| Winemaking | 1,367 | 3.6% | 16.7% | 83.3% |
| Domain | N | % | Difficulty | N | % |
|---|---|---|---|---|---|
| Wine regions | 1,108 | 33.9% | L1 (entry) | 694 | 21.2% |
| Grape varieties | 766 | 23.5% | L2 (intermediate) | 894 | 27.4% |
| Producers | 515 | 15.8% | L3 (advanced) | 678 | 20.8% |
| Viticulture | 502 | 15.4% | L4 (expert) | 1,001 | 30.6% |
| Wine business | 250 | 7.7% | |||
| Winemaking | 187 | 5.7% |
| Team | Agent | Run | Function |
| A. Static | A1 LexicalHygiene | always | Regex sweep for vague phrasing, marketing language, meta-questions. |
| A2 BiasStats | always | on correct-answer position; Mann–Whitney on correct-vs-distractor length. | |
| A3 FactEcho | always | Longest-common-substring ratio between question text and source fact ( fail at LCS 0.65). | |
| A4 TemplateFingerprint | always | POS-bigram logistic regression detector for template-induced stylistic regularities (held-out AUC 0.84). | |
| B. Tri-judge | B1 TriJudgeAnswer | always | Claude / GPT / Gemini panel reads question + source fact and votes on the marked-correct option. |
| B2 ClosedBookSolvability | always | Same panel, source fact withheld : can the question be answered from world knowledge alone? |
| Team | Agent | Run | Function |
| C. Determin. | C1 DistractorDifficulty | esc | Embedding-distance distractor analysis; invoked when A2 reports length skew. |
| C2 CategoryLeak | always | Wine-type distractor validation; flags red/white/sparkling category mismatches. | |
| C3 SourceSwap | esc | Substitutes alternate source facts to test answer stability; invoked on B1/B2 disagreement. | |
| C4 DifficultyAudit | always | Gemini Pro re-rates difficulty; fail/warn when delta 2 from assigned. | |
| D. Corpus stats | D1 SelfPreference | always | Per-generator-family own-vs-other accuracy on a held-out probe; corpus-level signal. |
| D2 DedupCalibration | esc | Near-duplicate audit at cosine 0.92; invoked on suspicious cluster signals. |
Appendix figures & tables22 assets
Supplementary material from the paper’s appendix.
Appendix
| Agent | Signal | Threshold | vs. gold |
|---|---|---|---|
| A1 LexicalHygiene | vague/marketing regex hits | 1 hit warn ; 3 fail | 0.71 |
| A2 BiasStats | position; M–W length | fail | 0.65 |
| A3 FactEcho | LCS / fact length | 0.45 warn ; 0.65 fail | 0.83 |
| A4 TemplateFingerprint | POS-bigram logreg held-out AUC | corpus-level warn | 0.62 |
| B1 TriJudgeAnswer | majority disagrees with key | 2/3 disagree fail | 0.78 |
| B2 ClosedBookSolv. | majority solves no-source | 2/3 solve warn ; 3/3 fail | 0.007 |
| Audit signal | Triggered FAIL | Action |
| A1 LexicalHygiene (vague phrasing) | 60 | drop |
| A3 FactEcho (verbatim copy) | 63 | drop |
| B1 TriJudgeAnswer (wrong answer key) | 47 | drop |
| C2 CategoryLeak (wine-category leak) | 9 | drop |
| B3 UbiquityRisk (grape region ambiguity) | 183 | drop |
| Distinct dropped (with overlap) | 341 |
| Generator-assigned | Post-relabel | ||
|---|---|---|---|
| L1 (entry) | 1,261 (38%) | 694 (21%) | |
| L2 (intermediate) | 1,559 (47%) | 894 (27%) | |
| L3 (advanced) | 218 ( 7%) | 678 (21%) | |
| L4 (expert) | 291 ( 9%) | 1,001 (31%) |
| Pair | L1 | L2 | L3 | L4 |
|---|---|---|---|---|
| Claude Opus 4.7 (think vs std) | 0.3 | 0.2 | 0.3 | 0.5 |
| Gemini 2.5 Pro (think vs std) | 0.5 | 1.0 | 1.0 | 0.9 |
| OpenAI o3 vs GPT-5 | 0.1 | 1.0 | 1.9 | 2.0 |
| DeepSeek R1 vs V3 | 1.7 | 8.3 | 5.7 | 9.7 |
| Config | own | other | own (%) | other (%) | (pp) | 95% CI |
|---|---|---|---|---|---|---|
| claude-haiku-4.5 | 619 | 2,258 | 58.8 | 48.8 | [ , ] | |
| claude-opus-4.7 | 619 | 2,258 | 86.6 | 77.5 | [ , ] | |
| claude-opus-4.7-thinking | 619 | 2,258 | 86.9 | 77.2 | [ , ] | |
| qwen-2.5-7b | 667 | 2,210 | 60.9 | 51.9 | [ , ] | |
| qwen-2.5-72b | 667 | 2,210 | 66.1 | 64.1 | [ , ] | |
| llama-3.3-70b | 629 | 2,248 | 65.5 | 63.6 | [ , ] |
| Config | Family | L1 | L2 | L3 | L4 |
|---|---|---|---|---|---|
| claude-haiku-4.5 | anthropic | ||||
| claude-opus-4.7 | anthropic | ||||
| claude-opus-4.7-thinking | anthropic | ||||
| qwen-2.5-7b | qwen | ||||
| qwen-2.5-72b | qwen | ||||
| llama-3.3-70b | meta |
| Config | L1 gap | L2 gap | L3 gap | L4 gap |
|---|---|---|---|---|
| claude-opus-4.7 | ||||
| claude-haiku-4.5 | ||||
| gpt-5 | ||||
| gpt-5-mini | ||||
| gemini-2.5-pro | ||||
| gemini-2.5-flash |
| Config | Regions | Varieties | Producers | Viticulture | Winemaking | Business |
|---|---|---|---|---|---|---|
| claude-opus-4.7 | 83.2 | 80.2 | 86.8 | 77.9 | 86.6 | 64.2 |
| claude-haiku-4.5 | 55.8 | 49.7 | 58.7 | 54.2 | 56.7 | 37.8 |
| gpt-5 | 88.1 | 78.2 | 88.4 | 82.8 | 80.7 | 63.0 |
| gpt-5-mini | 82.1 | 74.4 | 83.5 | 77.5 | 77.5 | 66.3 |
| gemini-2.5-pro | 87.0 | 78.8 | 89.0 | 78.5 | 77.5 | 61.8 |
| gemini-2.5-flash | 76.9 | 72.9 | 82.3 | 73.6 | 77.5 | 60.6 |
| Config | FTQ | Scenario | Template | Comparative | Distractor |
|---|---|---|---|---|---|
| claude-opus-4.7 | 77.7 | 85.6 | 92.8 | 79.5 | 82.7 |
| claude-haiku-4.5 | 47.5 | 62.7 | 70.7 | 53.3 | 56.8 |
| gpt-5 | 79.9 | 80.9 | 95.4 | 79.5 | 87.9 |
| gpt-5-mini | 73.8 | 80.6 | 92.8 | 78.3 | 84.7 |
| gemini-2.5-pro | 77.4 | 87.5 | 93.1 | 82.4 | 86.4 |
| gemini-2.5-flash | 69.5 | 84.0 | 89.7 | 77.5 | 79.5 |
| Config | L1 (entry) | L2 | L3 | L4 (expert) |
|---|---|---|---|---|
| claude-opus-4.7 | 98.0 | 77.0 | 86.7 | 69.1 |
| claude-haiku-4.5 | 74.3 | 48.3 | 59.9 | 38.8 |
| gpt-5 | 98.3 | 82.4 | 87.5 | 69.2 |
| gpt-5-mini | 98.0 | 73.7 | 84.7 | 64.8 |
| gemini-2.5-pro | 98.6 | 79.2 | 87.3 | 68.5 |
| gemini-2.5-flash | 95.4 | 70.9 | 82.2 | 60.1 |
| Config | Total cost | Correct ans. | Cost / correct |
|---|---|---|---|
| llama-3.1-8b | $0.01 | 1,976 | $0.0000 |
| llama-3.3-70b | $0.04 | 2,190 | $0.0000 |
| gemini-2.5-flash | $0.12 | 2,454 | $0.0000 |
| deepseek-v3 | $0.12 | 2,295 | $0.0001 |
| qwen-2.5-7b | $0.12 | 1,860 | $0.0001 |
| qwen-2.5-72b | $0.15 | 2,202 | $0.0001 |
| Source family | Tier | Licence / legal basis | Share |
|---|---|---|---|
| Wikipedia (MediaWiki API) | T2 | CC-BY-SA 4.0 | 34.4% |
| Wikidata (SPARQL) | T1 / T2 | CC0 1.0 | 30.3% |
| HuggingFace spawn99/wine-reviews | T2 | HuggingFace dataset terms (open redistribution) | 8.5% |
| UC Davis (AVA Project, FPS, Wine Ontology) | T1 | Open / CC-BY (UC Davis Library) | 5.7% |
| UC IPM & USDA Extension (eXtension, PSU/OSU) | T1 / T2 | Public domain — US Gov. work (17 USC §105) | 4.7% |
| Kaggle: wine-reviews (Wine Enthusiast scrape) | T3 | Kaggle dataset terms (research use) | 3.8% |
| Phase | Dates | Milestone |
|---|---|---|
| 0 | 2026-02-13 | Repository initialised: Docker stack (Postgres / Elasticsearch / Neo4j / Redis), schema, and the first four scrapers (Wikidata, HuggingFace, Kaggle, UC Davis) committed. |
| 1 | 2026-02-13 – 04-01 | 35 scrapers built incrementally (INAO, TTB, EU/OIV, Wikipedia, Italian / Spanish / Portuguese / German / Austrian / Greek registries, Bordeaux / Burgundy / Champagne / Italian consortia, USDA Extension, OENO One / Vitis / AJEV academic crawlers, country enrichment passes); first 16,702-fact working corpus assembled by end of March. |
| 1.1 | 2026-04-07 | Provenance audit reveals 19 scrapers contained hardcoded LLM-generated facts ; corpus paused. |
| 1.2 | 2026-04-08 – 04-11 | Shared infrastructure ( _fact_processing.py , _web_helpers.py , _wiki_helpers.py ) shipped; Phase 1 rebuild fixes 8 quality-issue scrapers; Phase 2 rebuild replaces all 17 hardcoded scrapers with genuine Wikipedia + SPARQL + official sources. 38,104 fact corpus restored, all provenance-traceable. |
| 2 | 2026-04-12 – 04-22 | Five generation strategies built and iteratively tuned; multi-model orchestrator with quota management; closed-book gate v2 wired into all five generators. |
| 2c | 2026-04-18 – 05-02 | Nine-agent audit framework shipped across 4 teams; sixteen audit pilots (v1–v16) tune thresholds and speedups; 472/472 → 771/771 tests pass. |
LLM Evaluation
Large language model evaluation measures what models can do, how reliably they do it, and whether benchmark scores predict real-world performance.
See all 2,408 papers