Deterministic geometry for flavour matching
Method · v1.5 · October 2026
One request. Every bottle the venue pours, compared on the same sixteen characters. An answer in the time it takes to tap — with a percentage saying how close the pour is to what was asked for, and nothing more.
Representation
Every whisky and every request is the same object: a vector over sixteen flavour characters, each held on a scale of nought to four. Because a request has the same shape as a bottle, matching is geometry rather than inference.
The characters are the Flavour Compass. They are grouped by production origin, and each is anchored to the congener class that predominantly produces it — esters for the fruit characters, guaiacol for woodsmoke, phenol and cresols for tar and iodine, oak lactone for vanilla and coconut, diacetyl for the buttery register, sulphur volatiles for the meaty one.
Tap a character to set it. Tap again to go deeper, or press and hold to avoid it.
A point says what a flavour is. Distance from the centre alone says how much. No character encodes a degree, an age, or a quality — so the same intent can only ever be expressed as the same shape.
Evidence
Profiles are derived, never typed. A bottle accumulates evidence over its life, and its vector is a re-derivable function of that record. Four classes are ranked by authority.
This describes the derivation the engine performs. Where a profile predates it — the founding catalogue was seeded from a curated export — it is re-derived against evidence rather than grandfathered.
Most spokes are confirmed by the instrument rather than by a person, and that is a measured decision rather than a shortcut. Across every spoke a reviewer has ruled on, they accepted 179 and rejected 6 — 96.8% agreement. A review step agreed with that often is not adding judgement to the reading; it is repeating it. So the reading stands on its own evidence, every confirmation records that no human made it, and the agreement rate is re-measured against every ruling made from here. One class is excluded and stays with a person: a character declared absent is a positive assertion that something is not there, and a single source has never been enough to make it.
Independent corroboration raises confidence; repetition does not, and duplicate sources are detected and discounted. Contradiction lowers confidence and queues the bottle for human review rather than averaging two claims into a third that nobody made. Extraction from prose runs under a standing rule: a flavour may only be recorded where the text supports it, never inferred from a name, a region, or a reputation.
Seven tunable magnitudes stand between the evidence and the stored number, and none of them is visible on the value itself. A section weight, because a character named on the palate is weighed differently from one named on the nose. A within-note boost, where one writer supports a character in more than one section. Independent agreement across distinct sources. A drift cap bounding how far a disagreeing note may move an intensity. A consensus count. A ceiling that holds aggregated evidence below a stated maximum however much of it there is. And a matchability threshold. Their values are the calibration and are not published; that they are in effect is.
Measured across all 3,705 open readings on 13 September 2026: 76.4% carried the reader’s own figure unchanged, 22.6% were raised by within-note support, 1.0% by independent sources agreeing, and 17.3% were held down by the aggregated ceiling. So on two readings in five the stored number is not the number the reader gave, and nothing on the value itself says which, or in which direction.
Matching
A guest sets some characters and leaves the rest alone. Untouched characters are treated as indifference and excluded from the calculation entirely — not read as zero. Distance is the root-mean-square difference across what was set, normalised so that a single-character request and a five-character request are judged on equal terms.
Squaring is deliberate: it removes direction, so overshooting and falling short are both misses, and it makes the penalty convex, so a single large miss outweighs several small ones. Two opposite whiskies can never tie. Characters a guest marks as unwanted enter the same sum through an asymmetric penalty, weighted so that possessing an unwanted flavour costs more than lacking a wanted one.
Ties resolve on stable identifiers, so ordering never varies between runs, devices, or venues.
Reporting
Distance is reported as a closeness percentage, always accompanied by a plain-language band — strong, good, loose, or distant. The percentage never travels alone, because a number without a scale invites over-reading.
Where even the closest bottle falls outside the useful range, the interface says so and shows the nearest pours regardless. A bottle is ranked on the characters it actually has: one with evidence for three of the sixteen competes on those three, and is shown as a partial answer rather than mixed in with bottles that answered the whole question. A character nobody has evidenced is left out of the calculation, never inferred and never read as zero. Bottles out of stock are labelled, not hidden.
The system is built so that it cannot flatter. An honest miss is a supported outcome; a confident wrong answer is not.
Properties
Determinism
Identical inputs return identical output, always
Complexity
Linear in the size of the venue's list
Latency
No model in the request path
Auditability
Every value traces to the evidence that produced it
Language models are used once, offline, to read tasting notes and labels into structured evidence under the extraction rule above. They are never used at the moment a guest asks a question. This is why a search costs nothing to serve and why the answer can be explained rather than asserted.
What this page does not contain
The architecture is published because a venue and a distillery are entitled to know how their whiskies are judged. The calibration is Lactone Labs’ intellectual property: the band thresholds and the percentage transform, the penalty weights, the source-quality weights that decide how far any one piece of evidence carries, the matchability threshold, the phenol bands and cask fingerprints that map measured figures and cask declarations onto characters, the merge constants governing corroboration, consensus and drift, the confidence ceilings, the descriptor lexicon beneath the sixteen, the reference set against which every extraction is calibrated, and the catalogue itself.
Those are the years of research and work, and they are what a licence buys.