Muntin Research

The menu-pricing playbook

Of 100 ingredients, 37 have held steady enough to print their price, 19 want a cushion, 7 should float, and 37 are withheld for thin evidence — and for 24 this playbook joins all four layers: pricing, edible cost, cheapest month, and which swap saves nothing.

The Ingredient State Record

Everything the desk holds on one ingredient, assembled: pricing posture, yield after the knife, the record’s cheapest month, a stand-in that moves with it, and — for the ones that carry it — the 2010–2025 US import stream. Type a name; every layer we lack is simply not drawn. Descriptive, never a forecast or a delivered price.

How each number is computed

Every layer is a formula over the open data — inspect it. Open any one for the calculation and a worked example with real numbers.

The ±band → print, cushion, float, or withhold

Each ingredient's band is the half-width of its wholesale reference around its own recent normal: ±X% means a typical week sits within X% of center. It measures predictability, not price level, and it is a wholesale reference — never your delivered price. Posture takes two things, not one: how tight the band is and whether it has proven out. A band that is both tight and has held across enough recent weeks prints (lock); a tight band that has not yet proven gets a cushion — price to the top of it; a wide band floats; too little recent history → withhold (unproven, not unstable). That is why a tighter ±2.9% band (chicken thigh) can be a cushion while a wider ±4.9% one (pork shoulder) prints: the wider band simply had more proof behind it. Worked: ribeye's band is ±5.8% → lock; romaine's is ±21.8% → float.

True cost = 1 ÷ edible yield (the trim tax)

An invoice price is per pound bought; a plate price is per pound served. Trim tax = 1 ÷ edible yield converts one to the other. Romaine keeps 75% after trim → 1 ÷ 0.75 = ×1.33: every invoice dollar is $1.33 on the plate. Whole crab keeps just 25% → ×4.00. Always multiply by the item's own yield, never a category average. Caveat: these are generic book yields (raw edible trim only). They exclude cooking loss and, for a frozen-then-thawed cut, thaw purge; and for anything you juice or use as garnish the edible-flesh figure won't match your real use. Treat the trim tax as a starting estimate and verify it against your own fabrication.

When a cheapest month is real, not noise

A cheapest-month window is named only when the trough clears the noise: (1) the cheap month's median beats the dearest month's own 25th-percentile week, and (2) the peak-to-trough swing is at least the ordinary within-month spread. Save% = (dear median − cheap median) ÷ dear median. Whole turkey fails both — its monthly medians scatter and a typical January already undercuts a typical February — so it earns no window and prices year-round. Descriptive of the tracked record, never a forecast. Why an item can be "withheld" yet still name a cheap month: the ±band scores an item's recent weeks, while the seasonal low reads its deep multi-year history — two different windows, so thin recent evidence and a real long-run cheap month can honestly coexist.

When a swap only mirrors the rise (k of n)

For each item we count how many of its notable moves a neighbor shared — k of n. Pork shoulder and ground pork shared 6 of 6: every notable move moved together, so the swap is a mirror, not a hedge. Below half shared → the swap is a real hedge. This is co-occurrence, never cause — a shared growing region or shipping lane, not one item pushing the other.

The steepest-trim single items
Steepest single-item trim taxes
#IngredientEdibleTrim tax
1Whole crab25%×4.00
2Corn on the cob28%×3.57
3Whole lobster30%×3.33
4Clams30%×3.33
5Lime35%×2.86
6Mussels35%×2.86
7Artichoke40%×2.50
8Lemon45%×2.22

A menu price is a bet you print and then live with for months, so pricing a menu well is less about the number on any one invoice than about knowing which numbers hold still. This playbook joins four data layers on each ingredient to answer that in order: whether a cost has held steady enough to print, what a portion actually costs once you pay for the trim, when a cut sits at the bottom of its own year, and whether the obvious swap saves a dollar or just moves the same rise to another line. Of 100 scored ingredients, 37 have held steady enough to print, 19 want a cushion, 7 should float, and 37 stay withheld for want of evidence.

The interactive cards and the 100-row table carry the raw numbers; this page teaches the decision those numbers feed. One honesty note governs all of it: every band here is a wholesale reference read against each ingredient's own normal — how steady the number has run, never the delivered price you pay. Above wholesale is normal, not overpayment. The posture on each card — lock, cushion, float, withhold — is a read on predictability, not a claim about how expensive the item is.

The one decision: print the price or float it

Every ingredient sorts into one of four postures, and the posture is about predictability, not price level. Thirty-seven print. Nineteen cushion — price to the top of the band and let the room absorb the wobble. Seven float — market price, or a rotating special that carries no printed number. And 37 stay withheld: too little evidence to call, so treat them like a float until the record fills in.

Print 37Cushion 19Float 7Withhold 37
Of 100 scored ingredients: 37 print, 19 cushion, 7 float, 37 withheld for thin evidence.

The band is the mechanism underneath the posture. It is a wholesale reference read against the item's own recent normal — a half-width that says how far the number has wandered, not how high it sits. A lock is a band tight enough that a printed price still reads true a month later. A float is a band so wide that any printed price is stale by the next delivery. The card hands you the width; the width picks the posture.

Withhold is the one to read carefully, because it is easy to misread as danger. Withhold is not "unstable." It is "not enough history to say." A withheld line behaves like a float on the menu — market price, or off the printed card — but for the opposite reason: not because it swings, because it is unproven. Whole crab is a withhold; so is much of the fish case. Treat those as market-price until they earn a band, not as risks to flee.

Your biggest cost line is your most printable

Here is the counterintuitive part. Proteins — usually the top of the invoice — mostly hold their week-to-week price. Of 27 proteins scored, 9 lock, 2 cushion, and none float. The steady end of the board is thick with proteins: whole turkey holds one of the tightest bands anywhere at plus-or-minus 0.8% — level with pantry staples like red potato, and steadier than almost all produce — with pork loin at plus-or-minus 1.6% and short rib at plus-or-minus 1.8% close behind. The scary line item is the calm one.

Steadiest — they print

Bananas±0.6%
Red potato±0.8%
Whole turkey±0.8%
Cilantro±1.2%
Pears±1.3%

Wildest — they float

Broccoli±26.4%
Yellow squash±25.0%
Raspberries±24.6%
Green leaf lettuce±22.3%
Romaine lettuce±21.8%
each item's own normal+
The steadiest wholesale bands are staples and proteins; the widest are all produce.

The wild week-to-week swings live in produce, down at the cheap end of the invoice: broccoli at plus-or-minus 26.4%, yellow squash at plus-or-minus 25%, raspberry at plus-or-minus 24.6%, green leaf lettuce at plus-or-minus 22.3%. A printed broccoli price is stale inside a month; a printed short-rib price holds. The dollar risk on the plate and the volatility of the wholesale reference point in opposite directions.

So trust the print list even for the pricey cuts, and aim the market-price flexibility at produce. The instinct to float the expensive thing because it scares you is backward — the expensive thing is often the steady thing. Point the rotating special and the market-price line at the salad, not the steak. This is a read on the width of the band, the predictability of the number; it is a separate question from when a cut sits cheapest in its own year, which is the seasonal window covered further down.

Price on what reaches the plate, not what crosses the back door

An invoice cost is a cost per pound you buy. A plate cost is a cost per pound you serve. The gap between them is trim, and it works as a multiplier on the reference: 1 divided by the edible yield. Call it the trim tax. A romaine head at 75% yield carries a 1.33 trim tax — every dollar of romaine on the invoice is $1.33 of romaine on the plate. Price on the invoice number and you underprice the dish by a third.

edible share of one invoice poundtrim tax
citrus46%×2.16
shellfish58%×1.72
stalks59%×1.70
herbs59%×1.68
seafood68%×1.47
meat83%×1.21
mushroom88%×1.14
Trim tax by category — the multiplier from an invoice pound to a plated pound.

Category means run from citrus at 2.16x — all that peel and pith — down to mushroom at 1.14x, which nearly all cooks down onto the plate. The steepest single item is whole crab at 4x: only 25% of the purchased weight is edible, so a crab invoice quadruples on its way to the guest. The trim tax is often larger than any week-to-week price move, which is why it belongs in the price before the market ever moves.

The discipline is to multiply the reference by the item's own trim tax, never the category average. Two greens in the same category trim differently; two fish in the same category trim very differently. The category mean orients you to the neighborhood — proteins and roots run low, citrus and whole fish run high — but the item's own yield is what prices the specific dish on your specific menu.

The hidden season of meat: the cut is cheapest after its rush, not during

Proteins have a real buying season, and it runs backward from intuition — a cut bottoms out after its peak season, not during it. Eight proteins carry a buying window worth timing in the tracked record. The deepest: whole chicken cheapest in May, about 47% under its own yearly high; chicken breast in November, about 42% under; striploin in September, about 40%; chicken thigh in January, about 40%; ribeye in August, about 26%; pork shoulder in October, about 21%. These are not small gaps between months — they are the difference between a cut's cheap season and its dear one.

−40%Chicken thigh
Jan
Feb
Mar
Apr
−47%Whole chicken
May
Jun
−20%Beef tenderloin
Jul
−26%Ribeye
Aug
−40%Striploin
Sep
−21%Pork shoulder
Oct
−42%Chicken breast
Nov
−18%Pork loin
Dec
Eight proteins with a buying window worth timing — each set in the month it troughs, after its own peak.

Read ribeye and striploin together to see the shape. Both are summer-grill cuts, and both bottom out in August and September — after the summer grilling months, not during them. In the tracked record the trough arrives on the far side of the grilling season. The window opens after that season, which is exactly where nobody is looking, because the calendar instinct says buy the grilling cut in grilling season.

The freeze angle is the whole point. The season matters more for a protein than for produce for one reason: you can freeze a protein. A real August ribeye trough is a buy-and-hold play a produce trough can never be, because the lettuce will not keep. That is the layer that turns a low month into inventory on your shelf, and it is why the seasonal read earns its place on the pricey cuts specifically — the same cuts that already print steady enough to hold a menu price.

A real season has to be told apart from noise, and the gate is strict. A cheapest-month window is named only when the trough is real: the cheap month's median has to beat the dear month's own cheap-week — its 25th percentile — and the peak-to-trough swing has to be at least as large as the ordinary month-to-month scatter. Whole turkey is the trap. Folk belief says buy it cheap at Thanksgiving; the wholesale record shows no readable window — its monthly medians scatter, and a typical January week already buys under a typical February. Turkey also holds the steadiest band on the board at plus-or-minus 0.8%, so the honest read is the opposite of a calendar play: its price barely moves, print it year-round. Most seafood carries too little multi-year history to read a season at all, so those stay withheld, not timed. All of this is descriptive of where a cut has sat, month by month — never a forecast that a given month will come in cheap. Act on it two ways: at a cut's window month, lock a freeze buy; ignore any cheap month that does not clear the gate.

The swap that isn't: when substitution only mirrors the rise

The reflex when a price jumps is to swap to a cousin ingredient. The co-movement layer shows when that reflex saves nothing. It reads, for each item, how many of its own notable moves each other item shared — moved the same way within a short window of each other. A high share means the two lines rise together; a low share means the substitute has a life of its own.

Pork shoulder6/6Ground pork
Chicken breast5/6Chicken thigh

of the first item's notable moves, how many its neighbor shared — full bar = a mirror

Co-moving protein families — a within-family swap trades one rising number for another.

The tightest pairs move as one. Pork shoulder and ground pork shared 6 of 6. Chicken thigh tracked chicken breast on 5 of 5; chicken breast tracked thigh on 5 of 6. Across the lettuces it is the same story: red leaf and iceberg 5 of 6, romaine and red leaf 5 of 6, iceberg and red leaf 5 of 6. Swap within a pair like that and you trade one rising number for another that is rising with it — a mirror, not a hedge.

This is co-occurrence, never cause — a shared growing region, a shared shipping lane, a shared aisle, not one item pushing the other. But the menu lesson holds either way: a swap only hedges when the replacement moves largely on its own. If the cousin keeps close company with the thing you are fleeing, the swap saves nothing. Look for a substitute with a low shared count, not the one that feels closest on the plate.

Four layers, three dishes: worked examples

Start with ribeye, a lock that carries a real window. The card reads bucket lock, band plus-or-minus 5.8%, trim tax 1.33 at 75% yield, cheapest August at minus 26%, no strong swap. Layer one says print it — a plus-or-minus 5.8% band holds a printed price. Layer two says your plate cost is your own invoice times 1.33, because a quarter of the ribeye is trim. Layer three says August is the freeze month: buy and hold at roughly 26% under its own yearly high. Layer four says there is no mirror-free swap to chase, so do not. Print the steak, freeze in August, leave it alone.

Now a produce float. Romaine's card: float, band plus-or-minus 21.8%, trim tax 1.33, cheapest January at minus 47%, and a 5-of-6 co-mover in red leaf lettuce. Broccoli's: float, band plus-or-minus 26.4%, trim tax 1.54, no readable seasonal window because its monthly prices scatter, and only a 3-of-6 tie to cauliflower. Layer one says print neither — market-price the salad or rotate it. Layer two still bites: broccoli's 1.54 trim tax means a third of the head is stalk you paid for. Layer three splits them — romaine has a January trough you can lean a feature into for a few weeks, broccoli has no window, so time nothing. Layer four says a romaine-to-red-leaf swap mostly mirrors at 5 of 6, while broccoli-to-cauliflower is a looser 3-of-6 tie and the marginally better hedge. Neither leaf freezes, so none of this is buy-and-hold; it is a this-week call.

Close with whole turkey, the steady band with no season. Its card: lock, band plus-or-minus 0.8%, trim tax 2.0 at 50% yield, no readable window. The folk move times it to Thanksgiving; the record says its months scatter and it barely moves at all. So the four layers land as: print it year-round, price the plate at twice the invoice because half the bird is frame and trim, time nothing, swap nothing. Set that beside whole crab — a withhold with a 4x trim tax: no band to print against yet, and only a quarter of it edible, exactly the line that belongs at market price with the trim math done before it reaches the menu. And note onion (a lock, cheapest December at minus 44%, 1.14 trim tax) against chicken breast (a cushion, cheapest November at minus 42%, priced to the top of its plus-or-minus 5.3% band): the same four questions, four different answers each time.

Print the steady lines, float the swingy produce, freeze-buy a protein at its own trough, and skip the swap that only mirrors the rise.

All 100 ingredients, at a glance

Sorted by pricing posture (print → float). The band is a wholesale reference against its own normal, never the delivered price.

IngredientPricingBandTrue costCheapestFutile swap
Acorn squashPrint±6%×1.43Dec −26%
BananaPrint±0.6%×1.54Apple
Beef tenderloinPrint±3.5%×1.18Jul −20%
BeetPrint±6.1%×1.33Aug −21%
Bok choyPrint±5.8%×1.25Mar −34%
Butter (AA, bulk)Print±4.4%May −22%
Butter lettucePrint±5.8%×1.54Green leaf lettuce
Butternut squashPrint±3.8%×1.43Jan −19%Red onion
CabbagePrint±6.6%×1.25Kale
Cheddar cheesePrint±2.5%
CilantroPrint±1.2%×1.43Jan −19%
Daikon radishPrint±4.4%×1.18
DillPrint±2.9%×1.54
EggplantPrint±7.1%×1.23Jan −33%Red onion
GarlicPrint±3.6%×1.15Jun −17%
Ginger rootPrint±4.4%×1.18Sep −32%
GrapefruitPrint±3.4%×2.00Apple
Habanero pepperPrint±3.9%×1.18Jul −23%
LeekPrint±1.5%×2.00Artichoke
LemonPrint±7.1%×2.22Mar −40%
MintPrint±6%×1.43
OnionPrint±5.4%×1.14Dec −44%Short rib
PearPrint±1.3%×1.28Mar −18%
PineapplePrint±5.3%×2.00Nov −36%
Poblano pepperPrint±2.9%×1.25
Pork bellyPrint±3.2%×1.11
Pork loinPrint±1.6%×1.18Dec −18%
Pork shoulderPrint±4.9%×1.33Oct −21%Ground pork
Red onionPrint±5.8%×1.14Butternut squash
Red potatoPrint±0.8%×1.18Jun −26%
RibeyePrint±5.8%×1.33Aug −26%
Russet potatoPrint±4.5%×1.23Apr −55%
Short ribPrint±1.8%×1.54Onion
StriploinPrint±3%×1.25Sep −40%
Vegetable oilPrint±5.1%
Whole chickenPrint±5.7%×1.67May −47%
Whole turkeyPrint±0.8%×2.00
AppleCushion±19.6%×1.28Grapefruit
ArtichokeCushion±11.5%×2.50Aug −45%Leek
AsparagusCushion±16.7%×1.82Mar −32%
AvocadoCushion±16.8%×1.33Nov −32%
Bell pepperCushion±14.4%×1.22
CantaloupeCushion±11.5%×2.00Aug −26%
Cherry tomatoCushion±12.7%×1.00Oct −28%Yellow squash
Chicken breastCushion±5.3%×1.05Nov −42%Chicken thigh
Chicken thighCushion±2.9%×1.11Jan −40%Chicken breast
Corn on the cobCushion±16.1%×3.57May −16%
CucumberCushion±12.6%×1.05Jul −40%Zucchini
Green beansCushion±18.9%×1.14Mar −51%Cherry tomato
Napa cabbageCushion±14.6%×1.25Jun −33%
OkraCushion±19.2%×1.18Aug −36%
ParsleyCushion±8.3%×1.43Mar −30%
Red leaf lettuceCushion±18.2%×1.43Jan −44%Iceberg lettuce
Snow peasCushion±13.7%×1.11Mar −46%
SpinachCushion±19%×1.33Jun −39%
WatermelonCushion±19.4%×2.00Oct −29%
BroccoliFloat±26.4%×1.54Cauliflower
Brussels sproutsFloat±21.2%×1.25Mar −38%
Green leaf lettuceFloat±22.3%×1.43Jan −51%Iceberg lettuce
RaspberryFloat±24.6%×1.00Jun −50%Romaine lettuce
Romaine lettuceFloat±21.8%×1.33Jan −47%Red leaf lettuce
Serrano pepperFloat±20.1%×1.18Feb −45%
Yellow squashFloat±25%×1.05Jul −44%Cherry tomato
BasilWithhold×2.00
BlueberryWithhold×1.00Aug −57%
Button mushroomWithhold×1.11
CarrotWithhold×1.22Rutabaga
CauliflowerWithhold×1.67Sep −30%Broccoli
CeleryWithhold×1.33Sep −52%
ClamsWithhold×3.33
Collard greensWithhold×1.54Leek
EggsWithholdJan −80%
Green onionWithhold×1.54Jun −68%
Ground beefWithhold×1.00
Iceberg lettuceWithhold×1.35Jan −63%Red leaf lettuce
JalapeñoWithhold×1.18
KaleWithhold×1.43Cabbage
LimeWithhold×2.86Nov −64%
OctopusWithhold×2.22
OreganoWithhold×1.82
RosemaryWithhold×2.00
RutabagaWithhold×1.28Carrot
Salmon (skin-on fillet)Withhold×1.25
Salmon filletWithhold×1.05
ScallopsWithhold×1.00
Shrimp (head-on)Withhold×2.00
Shrimp (P&D)Withhold×1.00
Shrimp (shell-on)Withhold×1.18
SquidWithhold×1.25
Sweet potatoWithhold×1.33
TarragonWithhold×1.82
ThymeWithhold×2.00
TomatoWithhold×1.10Mar −47%Cherry tomato
Tuna loinWithhold×1.18
Whole crabWithhold×4.00
Whole halibutWithhold×2.00
Whole lobsterWithhold×3.33
Whole salmonWithhold×1.82
Whole troutWithhold×1.82
ZucchiniWithhold×1.05Apr −42%Cucumber

39 kitchen profiles — no price band yet

Ingredients we track for prep but do not yet publish a wholesale price for (the new staples + yield-only items). Verified yield, storage, season, and substitutes; the price lights up when the index covers it.

IngredientEdibleCookedKeepsA swap that helpsBest season
Brown ricenew100%×34 dwhite riceyear-round (dried pantry staple)
Corn tortillanew100%14 dflour tortillaYear-round; eats best within a day of pressing, straight off the comal
Cotija cheesenew100%28 dparmesan (or grana-style hard cheese), gratedYear-round
Dried black beansnew100%×2.44 ddried pinto beansYear-round shelf-stable; new-crop (fall-harvested) beans cook fastest and taste best, ideally within ~1 year
Dried pinto beansnew100%×2.54 ddried black beansYear-round shelf-stable; new-crop (fall-harvested) beans cook fastest and taste best, ideally used within ~1 year
Farronew100%×2.54 dpearled barleyyear-round (dried pantry staple)
Flank steaknew90%76%5 dskirt steakYear-round
Masa harinanew100%2 dfresh masa (masa preparada / prepared nixtamal dough)Year-round shelf-stable; best used within ~9-12 months of milling
Mozzarellanew100%5 dlow-moisture mozzarellayear-round (fresh mozzarella eats best within a day or two of its make date)
Olive oilnew100%canola or vegetable oillate fall — new-harvest (olio nuovo) is the freshest, greenest, and most peppery
Parmesannew95%45 dGrana Padanoyear-round (aged 12-36 months; steady supply)
Queso fresconew100%7 dfeta, mild and rinsed to cut salt/tangYear-round (best eaten very fresh)
Quinoanew100%×34 dcouscousyear-round (dried pantry staple)
Skirt steaknew72%5 dflap meat (sirloin flap / bavette)Year-round
Spring mixnew95%5 dbaby spinachspring and fall (cool weather; summer heat turns baby lettuces bitter and bolts them)
White ricenew100%×34 djasmine or basmati (aromatic long-grain white)Year-round shelf-stable; US new-crop is milled after the late-summer/fall harvest
Arugula95%5 dwatercressspring and fall
Cremini mushroom90%45%7 dwhite buttonyear-round (commercially cultivated indoors)
Fennel65%10 dceleryfall through early spring, peaks in cool weather
Ground pork100%70%2 dground turkeyyear-round (US commodity pork holds consistent quality all year)
Ground turkey100%75%2 dground chickenyear-round (farm-raised, no growing season)
Lamb shoulder65%65%5 dleg of lambspring — traditional 'spring lamb' eats best from early spring to early summer
Leg of lamb70%75%5 dlamb shoulderspring — traditional 'spring lamb' eats best from early spring to early summer
Mango68%5 dripe papayalate spring through summer (May-September)
Mussels25%4 dsmall clams (littlenecks / Manila / cockles)Fall through early spring — cooler months, when farmed mussels are plumpest
Orange50%21 dtangerine or mandarin (juice + zest)winter (Dec-March) for navels; Valencia peaks spring into summer
Oyster mushroom90%5 dshiitake capsyear-round (commercially cultivated indoors)
Parsnip85%21 dcarrotlate fall through winter, sweetest after frost
Portobello mushroom85%45%7 dlarge creminiyear-round (commercially cultivated indoors)
Pumpkin70%5 dbutternut squashfall (October)
Radish85%10 ddaikonspring (also a fall crop)
Salmon Skin On90%80%year-round
Shallot85%30 dyellow onionsummer at harvest; available year-round from storage
Shiitake mushroom85%7 dcremini or portobelloyear-round (commercially cultivated indoors)
Strawberry89%5 draspberrieslate spring to early summer (April-June)
Swiss chard92%7 dbeet greenssummer through fall
Turnip78%14 drutabagafall (also a spring crop)
Whole branzino35%80%2 ddorade (Mediterranean sea bream / orata)Year-round (farmed, Mediterranean)
Yukon Gold potato85%45 dred potatofall harvest; stored year-round

Cite & download (CC BY 4.0)

This playbook joins four Muntin open sets per ingredient — lock-or-float and co-movement, yields (CC BY 4.0) and seasonal normals (CC0). The joined 100-ingredient table is released under CC BY 4.0: reuse it, with attribution.

Cite Muntin Cost Index — Menu-Pricing Playbook dataset. muntin.digital/cost-index/menu-pricing/. CC BY 4.0.

menu-pricing.jsonmenu-pricing.csvAll the open data →

Joins four Muntin open sets — lock-or-float and co-movement (CC-BY), yields (CC-BY), and seasonal normals (CC0) — each a wholesale-reference read against the ingredient's own baseline, not the delivered price. Descriptive, never a forecast; co-occurrence, never cause.

Food-safety recall history

No recall in the openFDA window (since 2020). FDA-regulated foods only — USDA/FSIS meat, poultry and egg recalls are absent here, so an empty record is not an all-clear.