muddler
  • App Store coming soon
  • Google Play coming soon

muddler

A cocktail menu scanner that works most of the time.

Point a phone at a menu. It returns the ingredients, a best guess at the measurements, and a flavor profile. Run by one person who keeps finding new ways for it to be wrong.

  • App Store coming soon
  • Google Play coming soon

No. 1

Input, output.

Real menus have more mistakes in them.

The Long Pour

est. somewhere — cocktails, 14–18

  • Old Fashioned14

    bourbon, demerara, ango, orange peel

  • Smoked Rosemary Gimlet16

    gin, lime, rosemary syrup, mezcal rinse

  • Jungle Bird14

    dark rum, campari, pineapple, lime

  • Paper Plane15

    bourbon, amaro, aperol, lemon

  • Corpse Reviver No. 215

    gin, lillet, cointreau, lemon, absinthe rinse

no substitutions · split checks fine

Fig. a — what the camera sees.

scan / the-long-pour / 02

name
Smoked Rosemary Gimlet
family
Sour inferred2
price
$16
glass
coupe
method
shake, fine-strain
ingredients
2 ozginbase
¾ ozlime juicecitrus
¾ ozrosemary syrup1sweet
~0.1 ozmezcal, rinse3aromatic
Fig. b — what comes back.
  1. Match confidence

    All four ingredients matched exactly. Rosemary syrup has its own entry, scored less sweet and far more aromatic than simple syrup, which is why the profile leans the way it does.

  2. Why “Sour”?

    Gin + citrus + sweetener is the structural signature of the Sour family. The ratios are applied as 2 : ¾ : ¾ because the menu didn't list any.

  3. Mezcal rinse

    Marked aromatic rather than base because it was written as “rinse”. A rinse is ~0.1 oz coating the glass before pouring.

No. 2

Why this exists.

Cocktail menus are information design at its worst. Handwriting, ink on black, proprietary names, missing measurements, a bartender's sense of humor. muddler is a mobile app that tries anyway. For clean printed menus it's right most of the time. For chalkboards and cursive, it is humbled regularly.

No. 3

Three phases. Each fails in its own way.

An image becomes text, the text becomes ingredients, the ingredients become a recipe. Any of those steps can quietly be wrong.

  1. Read the image

    Tesseract runs three passes with different page segmentation modes. The highest-confidence result wins. Dark-background detection inverts menus printed on black.

  2. Resolve the ingredients

    Each parsed token goes through an eight-tier matcher: exact, alias-exact, alias-substring, substring, category, sequence similarity. Brand names and common OCR misreads are mostly covered.

  3. Infer the specs

    Menus rarely list measurements. muddler classifies each cocktail into one of seven structural families and applies the standard ratios for that family.

No. 4

Every cocktail is one of these underneath.

Modern bartending is mostly recombination. Most cocktails fit. The weird ones are flagged as weird.

  1. Sour 2 : ¾ : ¾

    base / citrus / sweet

    As in: Whiskey Sour, Daiquiri, Gimlet

  2. Spirit Forward 2 : 1 : dash

    base / modifier / bitters

    As in: Manhattan, Negroni, Boulevardier

  3. Highball 1 : 3

    base / long mixer

    As in: Gin and Tonic, Moscow Mule

  4. Collins 2 : 1 : 1 : 2

    base / citrus / syrup / soda

    As in: Tom Collins, John Collins

  5. Fizz 2 : 1 : ¾ : top

    base / citrus / syrup / soda

    As in: Gin Fizz, Ramos Gin Fizz

  6. Tiki blend

    rums / citrus / orgeat or falernum

    As in: Mai Tai, Jungle Bird, Zombie

  7. Spritz 3 : 2 : 1

    sparkling / aperitif / soda

    As in: Aperol Spritz, Hugo Spritz

No. 5

Things we found in ten thousand ingredients.

An incomplete tour of the weirder corners.

  1. Seven spellings of falernum

    Three are wrong. Two are regional. Two we can't explain. The ingredient normalizer treats all of them as the same thing.

  2. Angostura, 1824

    Angostura Bitters has been in continuous production since 1824. The only ingredient in the database older than most American bars.

  3. Three grenadines

    Three different things are sold under that name. Two contain no pomegranate. One is red dye and corn syrup with a story.

  4. Twelve botanicals

    One Japanese gin lists twelve botanicals, six of which don't appear in any other entry. Yuzu, sansho, kabosu, hinoki, sakura leaf, and something called yomogi that is technically mugwort.

  5. Category: Other

    Quietly absorbs 144 ingredients that nobody could agree on. Egg whites. Toasted coconut. One entry just says “smoke.”

  6. The word “dash”

    Bartender sources disagree on what a dash is by a factor of three. We picked one and documented the choice. Someone will email us about it.

No. 6

What it gets wrong: an incomplete list.

Handwritten menus
OCR confidence drops sharply. Most handwriting gets parsed, some doesn't. Flourished cursive is a war.
Menus rendered as images
A PDF where the menu is an embedded JPEG reads the same as a photograph. Text on the page source doesn't help us.
House specials with no listed ingredients
A cocktail called “The Unicorn” is exactly as useful to us as a cocktail called “The Unicorn.” We pass them through untouched.
New bottles and house-spec names
New product releases and long proprietary names aren't in the database until someone adds them.
Measurement inferences
Bartenders will argue about every one of them. That is fine. The ratios are defensible, not definitive.
Non-Latin scripts
Basic Latin and Latin-1 only for now. Japanese, Thai, Cyrillic, Hangul menus all fail. We know.
Anything photographed in the dark
A menu in a mood-lit bar is functionally unreadable. Flash helps; flash on a laminated menu does not.

No. 7

Availability.

Offline use
A seed subset of the database ships with the app, so browsing and lookups work offline. Scanning needs a connection.
Accounts
Optional. Scanning and browsing work without one. A free account adds custom ingredients and more as the app grows.
Privacy
Photos are never saved. Scan results aren't either, unless you opt in. Details here.
Made by
Sticctape. One person, at a bar, usually.