About this project
This started with a simple question that had an annoying answer. Ask the internet what goes with mezcal and you get opinions. Ask 1,857 written recipes and you get a count.
Nearly every cocktail resource is organized backwards
They are all organized by drink. You look up a Negroni, you get a Negroni. Which is fine when you already know what you want, and useless when you are standing in front of a shelf holding a half empty bottle of Cynar.
The useful question runs the other way. Given this ingredient, what do people actually put it with, and how often? That is a question about what shows up together, and what shows up together is a graph. Every ingredient is a node. Every time two ingredients land in the same recipe, the edge between them gets one heavier. Draw that as a chord diagram and the shape of the drinking canon falls out: a dense citrus and spirit core, a sweet periphery, and a long tail of things that appear once and never again.
How the wheel gets built
The connection wheel runs on an ingredient association matrix, which is a square grid of 300 ingredients where each cell holds the number of recipes that the row and the column share. It carries 1,902 connections that are not zero. I keep the matrix as its own artifact rather than recomputing it from the current recipe collection, so the picture stays stable as the collection grows, and so the diagram can still be compared against the original version of this chart.
Ordering is the only thing I do to the matrix. Ingredients get grouped by family so related arcs sit next to each other on the ring, which turns an undifferentiated hairball into something with visible regions. No cells get dropped, merged or rescaled. Six cells that are not zero sit on the diagonal, meaning an ingredient paired with itself, which is an artifact of how the matrix was originally put together. I keep them rather than quietly zeroing them out, because deleting inconvenient data is how charts start lying.
The Connections control ranks every edge by weight and keeps the top however many. Ingredients left with no surviving edge get removed from the ring instead of drawn as lonely orphan arcs, so what you see on the wheel is always what is still connected.
How ingredients get sorted into families
The ten families on the outer ring come from a taxonomy of 823 ingredient names. Most entries are inherited straight from Bar Assistant's ingredient tree, which records a real hierarchy, as in a London dry gin is a gin and a gin is a spirit, along with strength, category and color. Names the tree does not cover get matched by word against a rule list. Anything containing "liqueur" or "crème de" is a liqueur, anything containing "bourbon" or "rye" is dark liquor, and so on down.
About 99% of ingredients land in a family this way. The rest are brand names that show up once or twice with no clue in the string itself, and they sit in "other ingredients" rather than getting guessed at. The split between dark and light liquor is editorial, and it follows how a spirit behaves in a recipe. Aged, barreled, sipped over ice versus clear, mixed, shaken with citrus. It is not a legal category.
Families get added when the data argues for one. Bitters were filed as a flavoring until a count turned up 357 appearances across the collection, which puts them third behind spirits and citrus and ahead of wine and beer combined, all while sitting in the same bucket as soy sauce and crushed ice. They are their own family now, and "other ingredients" shrank by more than half as a result.
What this cannot tell you
Showing up together is not the same as being compatible. The wheel records what people wrote down, and that gets shaped by fashion, by whatever distributors were pushing, and by which books the compilers happened to own. A pairing can be frequent because it is genuinely delicious, or because some template from the 1800s made it the default, or because one brand ran a good ad campaign in 1955. The chart cannot tell those apart. Neither can anybody reading it.
The collection is also not balanced. American drinks from the middle of the last century are heavily represented because one of the four sources is a bartender's guide from 1935. Crowdsourced entries bring shots and novelty drinks in numbers no working bar would recognize. Curated modern sets lean toward craft cocktails and the current fashion for amari. None of that makes the data wrong. It makes it a record of particular books and particular websites, which is a different and smaller thing than a record of drinking.
Measurements are approximate out of necessity. Where a source gives a real quantity I use it directly. Where it says "a dash" or "to taste", the recipe breakdown estimates a volume so that every ingredient still gets a visible slice. Those estimates are marked in the interface and should not be read as specifications.
What Gourmet Data is
Gourmet Data makes artistic diagrams about food and science. The recurring idea is that a lot of everyday knowledge about eating and drinking is really pattern knowledge that nobody ever wrote down as data, and once you do write it down, a picture answers questions a paragraph cannot.
This is the third of these built around the same question of what goes with what. Scent chords asks it about perfume, drawing every pairing between the most common notes across 24,059 fragrances, and it is the project this one is descended from. The dessert database asks it about sweets, across 7,486 recipe rows, with the same ingredient pairings and flavor families. The wheel you have been looking at is the same instrument pointed at cocktails.
There is also a weekly newsletter, which is where the longer pieces go: harvest calendars, what data centers do to food production, why we should probably eat more liver. Juweek.studio is the studio behind all of it.
Colophon
Built in React with d3 chord for the ribbon geometry, and nothing else on the client. All 1,857 recipes ship with the page, so searching the collection makes no network request and no API call. Your searches stay on your machine. The data pipeline is a Python script that merges the four sources and regenerates the taxonomy. I run it by hand rather than on a schedule, and the collection records the date it was last refreshed, which was 19 September 2026.
Gourmet Data is a project about using data and careful visuals to explain ordinary things. Back to the cocktail chords, or read where the data comes from.