Price spreads

How to annualize an invoice price gap without overstating it

· by the Candor team — operators auditing real restaurant invoices

Turning a price gap into an annual dollar figure is easy arithmetic — and easy to inflate without noticing. On a documented comparison from our own 2026 Phoenix invoices and quotes, the full observed spread annualizes to $3,120 a year; the figure we publish for that line is $2,730. Here are the rules that keep an annual estimate defensible, and why the smaller number is the one we stand behind.

The worked example

The inputs, from that same data:

  • Boneless chicken breast — highest quote from a broadline distributor: $3.60/lb
  • Same spec, best price found (Restaurant Depot), same week: $3.20/lb
  • Usage at one of our locations: about 150 lbs a week

The tempting arithmetic takes the full spread: $0.40 × 150 × 52 = $3,120 a year.

The figure we publish for that line is $2,730, computed on $0.35/lb instead. That's a deliberate haircut on the spread — not an engine output, and not an average of the two prices above, which don't average to $3.55. Nothing in the data picks five cents over three or eight. It's a judgment call, and we'd rather say so than dress it up as arithmetic. What's worth explaining is why you'd discount at all.

The reason is what those two numbers are: a highest quote set against a best price found. That's the widest gap the inputs can produce by construction. Treating the maximum observed spread as the steady-state gap is how an annual figure stops being defensible — and on this one line, it's the difference between $3,120 and $2,730.

That's the by-hand version. Our audit engine gets to an annual figure by a different route — a 30-day rate scaled by twelve — and the rules it enforces are worth walking through, because they're the ones that decide whether a figure holds up.

Why not annualize the biggest gap you found?

Because a single observation is the weakest input in the calculation. One quote at $3.60 tells you what one distributor offered that week. It doesn't tell you what you pay across a quarter.

The engine encodes this rather than leaving it to judgment. When it compares an item against a cheaper source, it computes the gap from the average price you paid across your invoice lines for that item at that distributor — not the highest one it can find. Where a price moved around during the period, averaging pulls the result below what the peak reading would have produced. That's the intended direction.

The same principle applies by hand: annualize the portion of the gap you'd be comfortable defending across the whole period, not the widest single reading.

What counts as "usage"?

Observed quantity over the observed window — not a typical week from memory.

The engine sums the quantity actually present on your invoice lines, then pro-rates it into a 30-day rate: total quantity × 30 ÷ the number of days your invoices span. A closed week inside that observed window can lower the recorded purchasing rate, and with it the estimate. Annual savings are that monthly figure × 12.

One guard matters here: if your invoices carry only a single date, the substitute check uses the observed quantity as-is instead of scaling it up to a month. Extrapolating a month of purchasing from one delivery would inflate the number in exactly the direction that destroys its credibility.

Prices are compared per base unit — pound, gallon, or each — never per case. Pack sizes differ between distributors and between item codes at the same distributor, so a case-to-case comparison can invert the answer. Reading the invoice correctly is the step before any of this arithmetic.

How current does the comparison price have to be?

Within 90 days. The substitute check accepts a reference price when its effective date falls within 90 days of the invoice line it's compared against, and discards it otherwise.

A quote from last spring isn't evidence about this month's price, and produce in particular can move enough that a stale reference produces a number you can't defend — swings and creep look alike until you check the dates. The window exists so the comparison is about your price, not about elapsed time.

When should a number not be published at all?

When the observation window is too thin to support it.

For price creep — the same distributor and SKU rising across dates — the engine needs at least two invoice dates to report anything at all. To attach a dollar figure, those dates have to span 14 days or more. When the span is shorter, it still reports the finding, with the prices and dates, marked flagged, not quantified. A price that rose between Monday and Thursday might be creep or might be a weekly market move; the honest output says which one it can't tell you.

Dollar figures are floored to whole dollars rather than rounded, and a substitute finding whose floored monthly savings come to zero is dropped rather than reported. These rules are built to shrink or withhold an estimate when the evidence behind it is thin — which is the trade worth making, because a number that survives scrutiny is worth more in a negotiation than a bigger number that doesn't.

What the number is actually for

A defensible annual figure changes what you can say out loud. "I think we're getting squeezed on chicken" is vague and hard to check. "The highest quote I have on this spec runs $0.40/lb above the best price I found for it — at about 150 lbs a week, that's up to $3,120 a year on one line, and here's the quote and the comparison" is specific and checkable. Notice what that sentence does: it states the documented inputs and the upper bound they produce, and leaves the discount out of the conversation entirely. Whether it moves your price depends on your account, your volume, and who you're talking to — but it puts numbers on the table that can be verified or disputed on their own terms, rather than a feeling that can be waved off. The rep-call script structure covers how to open it.

It also tells you whether the fix is worth the trouble. A number that size may justify a phone call, depending on how solid the comparison is and what the conversation costs you. It may or may not justify adding a cash-and-carry run to your week — that trade involves your truck, your labor, and your time, and the annual figure is what lets you weigh it instead of guessing.

Running the arithmetic yourself is free and takes about an hour for your top items — the self-audit method walks the whole sequence. If you'd rather not: email your last 3 distributor invoices and the free benchmark comes back within 48 hours with your top 3 overpaying items, each finding tied to the invoices it came from — invoice number and date, plus the SKU where your invoice lists one. The annualized estimates in it are built with the rules above.