How the cohort comparison and savings math work
[Materials on HQ](/help/hq-materials-overview) shows your network's median price for a material next to a "cohort median," an Above Cohort count, and a dollarized Savings Opportunity. [Top opportun…
On this page
- What this article is for
- What "above cohort" actually means
- How your network's own median price is set
- How the cohort median (p50) is set
- The per-material annual savings figure
- Worked example
- The total Savings Opportunity figure
- When a material has no comparison to show
- When the whole page is thin or empty
- How often the numbers refresh
- Related articles
What this article is for
Materials on HQ shows your network's median price for a material next to a "cohort median," an Above Cohort count, and a dollarized Savings Opportunity. Top opportunities turns that same read into a ranked list of the specific items driving the biggest gap. Both of those articles describe what you see. This article describes what's underneath it: exactly what "above cohort" means, exactly how the cohort's median price is computed, and exactly how the per-material and total annual dollar figures are derived from your network's own invoice data. None of it is a black box. It is a fixed formula, run against real numbers, that you can check by hand.
If you're looking for the privacy mechanics, who the cohort is and why a single-location price never becomes a network row, that lives in What HQ sees: the network privacy boundary. This article assumes that boundary and focuses on the arithmetic that happens once a material has cleared it.
What "above cohort" actually means
A material is marked above cohort when exactly one condition holds: your network's median unit price for that material is strictly greater than the cohort's median unit price for the same material, and both numbers exist.
That has two consequences worth being precise about:
- Equal to cohort does not count as above. A material priced exactly at the cohort median reads "at or below cohort" in All materials, not "above cohort." The comparison is a strict greater-than, not greater-than-or-equal.
- No cohort, no verdict. Until a cohort median exists for a given material (see the next section for what has to be true before it does), that material cannot be marked above or below anything. It still appears in All materials, just with its plain unit label ("per Gallon," "per Sheet," and so on) standing in for a comparison that isn't available yet, rather than a false "at or below cohort" read.
The Above Cohort figure in the hero band is simply a count of how many of your benchmarked materials meet that condition. It is not a percentage, a weighted score, or an average of anything, it is the number of materials where your median price is higher than the cohort's.
Note
"Above cohort" is a description of a price comparison, not a judgment. A material can be above cohort because of a regional cost difference, a smaller-volume supplier relationship, or a specification your network runs deliberately. It's a prompt to check the specific item, not a verdict on your buyers.
How your network's own median price is set
Your network's median price for a material is computed from your locations' own connected supplier invoices, specifically the line items tagged as material purchases, over the trailing 12 months.
Here's the path a price takes from an invoice to the number you see:
- 1Match the line to a canonical material. Every material line item's description and unit gets matched against Verinode's shared material catalog (the same catalog that names the item on the page: a specific drywall thickness, a specific paint product, and so on), not left as a raw invoice description.
- 2Normalize the unit. A material's canonical catalog entry has one default unit (gallon, sheet, square foot, pound, roll, and so on). If a location's invoice line was priced in a different unit, for example a 5-gallon pail rather than a single gallon, the price is converted to the canonical unit using a shared conversion table, so every price entering the comparison is priced the same way. This is why the page can promise "a gallon is always compared to a gallon" even though your locations don't all buy in the same package size.
- 3Pool every qualifying line, from every location, into one list. Every normalized unit price for that material, from every location in your network, over the trailing 12 months, goes into a single pooled list. This is not an average of each location's own median; it's every individual priced purchase, combined.
- 4Take the median of the pooled list. The network median unit price is the 50th percentile of that pooled list, computed by the standard interpolated-percentile method (the same technique behind every percentile-based figure on the platform, including the cohort side below).
One consequence of step 3 worth knowing: a location that buys a material often, and therefore contributes more priced lines, has a proportionally larger say in the network median than a location that buys it rarely. The network figure is a median of purchases, not a median of locations.
The network's total annual spend on a material, the dollar figure used in the savings formula below, is built the same way: every qualifying line item's actual invoiced total (or, when a line has no total on file, its unit price times quantity) is summed across every location and the full trailing-12-month window. The Network Spend figure in the hero band is, in turn, just the sum of every individual material's annual spend, added together.
How the cohort median (p50) is set
The cohort median is the other half of every comparison on this page: the typical price operators outside your network pay for the same canonical material. It comes from a completely separate pipeline than your own network's number, one that never reads your invoices and that your network never contributes into for its own comparison.
- 1Pull anonymized price observations for the material, from operators outside your network. These are individual priced observations already contributed to Verinode's shared intelligence layer by operators across the platform, matched to the same canonical material and the same normalized unit as your side of the comparison.
- 2Match the world. A demo network's cohort is drawn only from other demo data; a real, live network's cohort is drawn only from real operator data. The two worlds never mix, so a cohort figure never reflects a blend of test and production numbers.
- 3Count distinct contributing operators, not rows. An operator who has contributed many observations for a material still counts once toward the cohort's headcount. This matters because the next step gates on that headcount, not on the volume of data behind it.
- 4Clear the anonymity floor before publishing. The cohort median for a material does not exist, and is not shown, until enough distinct operators outside your network have contributed a price for it. Below that floor there is no cohort reference at all for that material, not a thin one with a caveat, described further in the section below.
- 5Compute the median (and the p25/p75 band) the same way your own median is computed. Every qualifying observation across every contributing operator is pooled into one list, and the interpolated-percentile method produces the p25, p50 (the median shown on this page), and p75 of that pooled list.
The cohort p50 is the only cohort figure this HQ page shows. The underlying rollup also carries a p25 and p75 for each material (the same wider range IQ's own Price vs Peers shows as a band bar with your dot inside it), but this network-level page keeps the comparison to a single reference point: your network's median against the cohort's median. If you want the fuller band-and-dot picture for a specific material, that view lives on the operator side, not here.
Note
The exact number of contributing operators required to clear the anonymity floor is deliberately not published in the product or in this article. What you can rely on is the shape of the rule: it is a floor on distinct contributing operators, it is stricter for a small, thin cohort than a well-populated one, and a material below it shows no cohort reference rather than an unreliable one. See What HQ sees: the network privacy boundary for the full mechanics of how that floor is enforced platform-wide.
The per-material annual savings figure
Once a material has both a network median and a cohort median, and the network median is the higher of the two, the page computes one more number: the dollarized annual savings opportunity for that specific material. The formula is:
Savings = (Network median − Cohort median) ÷ Network median × Network's annual spend on that material
In words: work out what fraction of your network's price is above the cohort's price, then apply that same fraction to what your network actually spent on that material over the trailing year. The result is rounded to the nearest cent.
A material where the network median is at or below the cohort median gets no savings figure at all (it's left blank, not zero), because the formula only ever runs when there's a real gap to dollarize.
Worked example
Say your network's median price for a specific 5/8-inch fire-rated drywall is $58 per sheet, the cohort median for the same product is $46 per sheet, and your network's total invoiced spend on that exact product over the trailing 12 months is $198,300.
- 1Gap: $58 − $46 = $12 per sheet.
- 2Gap as a fraction of your price: $12 ÷ $58 ≈ 20.7%.
- 3Apply that fraction to actual spend: 20.7% × $198,300 ≈ $41,000.
That $41,000-a-year figure is exactly the sub-line dollar amount you'd see on that material's tile in Top opportunities, which uses this same $58 / $46 drywall example. The math behind the tile is nothing more than those three steps, run once per material, every time the page's underlying data refreshes.
The total Savings Opportunity figure
The Savings Opportunity figure in the hero band, and the "~$[X] a year opportunity" note under each family tile in Spend by family, are both simple sums of the per-material figure above: every material with a real (non-blank) savings figure, added together, either across the whole network or across the materials that belong to one family.
Because a material only carries a savings figure when it is above cohort (the same strict condition described earlier), the set of materials contributing dollars to the total Savings Opportunity figure is exactly the same set of materials counted in the Above Cohort figure. The two hero numbers are two views of the same underlying set: how many materials, and how many dollars.
Heads up
Savings Opportunity is a ceiling, not a forecast. It's the total if every above-cohort material moved all the way down to its cohort's exact median price, holding your network's actual purchased volume constant. Real negotiated outcomes land somewhere below that ceiling, not above it, so treat the figure as the size of the opportunity, not a number you should expect to bank in full.
When a material has no comparison to show
Two different gates sit in front of a material before it can carry a cohort comparison at all, and they protect two different things.
- Your own network's floor. A material bought by only a small handful of your locations is held back from the entire page (hero count, Top opportunities, Spend by family, and All materials alike) rather than shown, because a network-wide price attached to a near-single-location group would effectively reveal that location's own purchasing by elimination. The mobile version of this page states the plain-language version of this rule directly in its empty-state note: materials are "hidden until at least two locations buy them." As more of your own locations buy a given material, it clears this bar on its own and the row appears, fully computed, with no action required from HQ.
- The cross-network cohort's floor. Separately, even a material your own network buys widely needs its own qualifying cohort of contributing operators outside your network before a cohort median exists for it at all (the anonymity floor described above). A material can clear your own network's floor and still show no cohort comparison, because the outside cohort for that specific item hasn't formed yet. When that happens, the material still appears with your network's own median price, just without an "above cohort" or "at or below cohort" read attached.
Neither gate is something HQ configures or can override for one material. Both are structural: they depend on how many locations and how many outside operators have actually contributed a price for that specific item, and they resolve themselves automatically as that data accumulates.
When the whole page is thin or empty
The empty states described in Materials on HQ ("Network material prices appear here as your locations' supplier invoices come in.") and Top opportunities ("No material savings opportunities found yet. They appear as locations contribute invoices and cohorts form.") are direct consequences of the mechanics above: no materials have cleared your own network's floor yet, or none of the materials that have cleared it also have a formed cohort with your network priced above it. Nothing about the formula changes in that state; there simply isn't yet a qualifying pair of numbers to run it against.
How often the numbers refresh
Every figure on this page, your network's own median and spend, the cohort median, and the resulting savings figures, is precomputed on a schedule rather than calculated live when you open the page. The same nightly aggregation job that builds every other HQ rollup (rosters, compliance, vendor spend, and the rest) recomputes the materials rollup for your network as part of its run. Opening the page always shows you the most recent completed computation, not a live query against your locations' invoices.
Related articles
- Materials on HQ: your network's supplier-price intelligence, the full page tour: hero, Top opportunities, Spend by family, and All materials.
- Top opportunities: where your network overpays most, the ranked list this article's worked example is drawn from.
- What HQ sees: the network privacy boundary, the anonymity floor and entity-model mechanics referenced throughout this article.
- Price vs Peers, the operator-side view of the same idea, with the fuller p25 to p75 band and your own dot on it.
- Network benchmarks: how the section works, including the Benchmarks hub's own, differently-scoped Materials pill.
- HQ overview, orientation to the full HQ sidebar.
Data sources
- 1.Your network's own locations' connected supplier invoice data, aggregated. Your network.
- 2.Network-wide anonymized peer material-price contributions. Verinode network.