Describe a mealSnap foodSnap a bottlebeta

// step 01 — snap a bottle

Snap a bottle. Get dinner ideas.

The reverse direction. Photograph a wine bottle, we identify it in Alko’s catalog, then suggest three concrete dishes its food affinity says it wants on the plate.

// privacy: the photo is sent to the Anthropic API for identification only. It’s not stored, not logged.

// what does 'fuzzy' mean?

Most real things aren’t yes or no. They’re a degree.

Ask a normal database to find a wine for “casual pizza night, around €15.” It will treat every word as a hard filter — is the wine red? Is the price under €15? Is “pizza” in its tag list? — and return whatever survives every test. If nothing does, it returns nothing.

But you didn’t mean “exactly €15.” A €16 wine with perfect food fit is obviously better than a €13 wine that clashes. Fuzzy logic is a way of teaching software the same thing — that every attribute is a degree on a scale, not a yes/no, and that a slightly worse fit on one dimension can be offset by a much better fit on another.

// crisp logic says

Is this wine sweet? Yes / No.
Will it pair with salmon? Yes / No.
Is it under €20? Yes / No.

→ Cheapest wine that satisfies every yes/no.

// fuzzy logic says

How sweet? 0.20 (off-dry).
Salmon pairing strength? 0.85.
Price comfort? 1.00 inside bracket, fades smoothly outside.

→ Best overall fit across all dimensions.

This isn’t new. Lotfi Zadeh published the foundational paper on fuzzy logic in 1965. What’s new is that modern LLMs like Claude let us parse natural language into the kind of structured intent fuzzy systems need — bridging the gap between “salmon with dill, casual, around €20” and a ranked list of wines. The 2014 PhD this demo is built on argued exactly that bridge mattered. Full story

// how it works

Three layers, working together.

The playful sommelier surface hides a working example of fuzzy ontology — the academic ancestor of Retrieval-Augmented Generation, published eleven years before anyone said “RAG” out loud.

01 /

Fuzzy Wine Ontology

Every wine in Alko's public catalog — roughly 3,000 entries — tagged with crisp attributes (price, region, grape) and fuzzy ones: degrees of body, sweetness, acidity, tannin, oak. Not yes/no. Degree.

02 /

Matching engine

A weighted aggregation operator, descended from Robin's 2014 thesis, ranks every wine against your meal with a transparent per-dimension score. Roughly 150 lines of TypeScript. Math hasn't changed.

03 /

Conversational layer

Claude reads your free-text question, parses it into structured intent, and after the engine ranks the candidates, writes the explanation the way an experienced sommelier would. Warm, specific, no jargon.