Prototype

Quality & resilience scores are experimental and still being calibrated — they'll move as we dial in the math.

Math is hard. I'm a bartender. Relax.

Platform

Ingredient Topology

Every ingredient mapped by structural role, chemical properties, and competitive relationships. The foundation of recipe intelligence.

Substitution Explorer

Filter by structural role, then compare chemical profiles side by side.

ABV
40 % v/v45 % v/v
Within range
Brix
0 °Bx0 °Bx
Within range
Acid
0 g/L0 g/L
Within range
Freeze Point
14.4 °F delta16.2 °F delta
Within range

Compatible Substitution

Chemical profiles are within acceptable tolerance across all tracked properties.

Reference values sourced from CRC Handbook and industry standards.

9 Structural Roles

Every ingredient in a cocktail serves a structural purpose. The topology engine classifies each ingredient into one of nine roles that determine how it interacts with the rest of the recipe.

Anchor

The base spirit. Drives ABV, defines the cocktail's identity. Usually 1.5–2.5 oz.

Bourbon, gin, rum, tequila, vodka

Modifier

Adjusts and shapes the anchor. Adds complexity without dominating.

Vermouth, amaro, Cointreau, Chartreuse

Bridge

Connects anchor and modifier flavors. Creates coherence between disparate ingredients.

Maraschino, Bénédictine, elderflower

Accent

Small-dose flavor spikes. Dashes and rinses that add dimension.

Bitters, absinthe rinse, saline, tinctures

Sweetener

Balances acid and bitterness. Affects viscosity and mouthfeel.

Simple syrup, honey, agave, demerara, orgeat

Acid

Primary balancing agent. Defines the sour/tart profile.

Lemon juice, lime juice, citric acid solution

Bittering

Adds depth and complexity through bitterness. Stimulates palate.

Angostura, Peychaud's, Campari, Fernet

Aromatic

Engages the nose. Garnishes, expressed oils, aromatic liqueurs.

Orange peel, mint, rosemary, lavender

Lengthener

Extends volume without overpowering. Usually carbonated or dilute.

Soda water, tonic, ginger beer, sparkling wine

Chemical Properties

Each resolved ingredient carries a chemical profile used by the simulation engine.

PropertyUnitUsed For
ABV% v/vFreezing point depression, proof calculation, dilution targets
Sugar Contentg/LViscosity, freezing point, balance scoring
Acid Concentrationg/L citric eq.Acid ratio calculation, sour balance
Densityg/mLVolume-to-mass conversion for batch scaling
Brix°BxRefractometer-verifiable sugar measurement
pHpH scaleAcid strength via mixed-acid charge balance

Entity Resolution Chain

Recipes from the wild use inconsistent naming. “Lemon”, “lemon juice”, “fresh lemon”, and “fresh squeezed lemon juice” all mean the same thing. The resolution chain normalizes every ingredient through 5 stages.

1
Raw Input

Original ingredient text from recipe: "fresh squeezed lemon juice", "2 dashes Ango"

2
Alias Matching

Match against known aliases. "Ango" → Angostura aromatic bitters. "Simple" → simple syrup 1:1.

3
Category Assignment

Assign structural role (anchor, modifier, acid, etc.) and chemical category.

4
Spirit Resolution

For spirits: match to specific entity with ABV, proof, origin, mashbill where known.

5
Enrichment

Attach chemical properties: sugar content (g/L), acid concentration, ABV, density.

Substitution Validation

Not all swaps are safe. Replacing lime with lemon changes the acid profile. Replacing simple syrup with honey changes viscosity and sweetness perception. The substitution engine validates every swap against chemical compatibility, re-runs the simulation, and reports the quality impact before committing the change.

Competitive Topology

Ingredients compete for dominance within a recipe. Two strong modifiers can clash; an accent can get buried by an aggressive sweetener. The competitive topology maps these relationships — identifying which ingredients amplify each other, which compete, and which are structurally redundant.

This is the structural model the menu-engineering worksheet runs on: if two cocktails use the same anchor + modifier pair with similar acid/sugar ratios, the engine treats them as structurally equivalent regardless of the garnish or name.

Try it on the Menu Engineering worksheet