Skip to content

Lesson 14 — The silent source of most price bugs

Wrong unit-of-measure attribution is the quiet origin of nearly every price anomaly. Solve it first.

Of all the signals in the pack that touch pricing — negative margin, below-internal-price billing, conversion-factor anomalies, cross-site price inconsistency — the single most common upstream cause is incorrect unit-of-measure (UoM) attribution. A material’s pricing looks anomalous; trace back; the root is that the catalogue records the price per box and the consumption records the quantity per unit. Or per vial, or per mg, or per strip.

The signals are correct. The data is broken at a layer the signals cannot see without help.

Three failure modes account for the bulk:

  1. Catalogue UoM vs. delivery UoM mismatch. The supplier delivers in cartons of 10 boxes of 50 units. The catalogue records the price against carton. The hospital consumes in unit. Until somebody computes the divisor, every per-unit cost is 500× off.
  2. Catalogue updates without unit updates. A material’s price is updated when the contract is renegotiated. The unit-of-measure record is not updated because it didn’t change — but the catalogue update overwrote it back to a default. Now the unit is wrong and the math is broken.
  3. Multi-pack-size assortments collapsed into one record. Same molecule, different pack sizes (10-tablet, 28-tablet, 100-tablet) registered as one catalogue item with the most common pack size. Patients receiving the off-pack size produce mis-priced consumption events.

The clinical workflow does not surface these mismatches. A nurse documenting consumption can’t notice that the catalogue says box when she means tablet. The mismatch lives between the catalogue and the consumption record, and only an analyst looking specifically at price ratios will see it.

UoM mis-attribution produces an entire family of derived anomalies:

  • signal_negative_margin fires on a material whose unit cost looks 50× the billed amount. Real explanation: cost recorded per box, billing per unit.
  • signal_billing_below_internal_price fires on a material billed at 1/100 the catalogue price. Real explanation: catalogue per blister-pack, billing per tablet.
  • signal_conversion_factor_anomaly is the one that should catch this directly — and does, when run early. The trick is to run it first, before the downstream signals, so the downstream noise gets suppressed when the underlying issue is known.

The Wisdom motivated three concrete moves:

  1. signal_conversion_factor_anomaly runs first in the signal dependency order. If a material has a UoM-attribution issue, it gets surfaced as such — not as eight downstream price anomalies that all point at the same root.
  2. Pricing signals filter UoM-flagged materials. Materials with active UoM issues are deflated in price-based findings. Once the UoM is corrected, the signals re-evaluate the material on its actual ratios.
  3. Subject Matter 50cents per tenant carries the running list of materials with known UoM-attribution issues and their canonical conversion factors. The analyst’s working knowledge becomes part of the standing data discipline.

The fourth move was procedural: when investigating any price anomaly, the first check is now “is this a UoM issue?” If yes, the price anomaly resolves into a data-quality finding and stops being a financial finding.

Because UoM-attribution is the kind of bug whose surface is price and whose root is units. An analyst chasing the surface for weeks before discovering the root has wasted weeks. The Wisdom anchors the dependency order — check units first — so the analyst’s first instinct on a price anomaly is the right one. The Lesson is that most price anomalies are unit anomalies in disguise, and naming this rule explicitly saves more hours per quarter than any other piece of analytical discipline in the pack.

  • Wisdom: smebit_uom_attribution_pain.yaml
  • Provider: a hospital pharmacist with master-data oversight
  • Anchor signals: signal_negative_margin, signal_billing_below_internal_price, signal_conversion_factor_anomaly
  • Date Wisdom captured: 2026-05-08
jazzisnow jinflow is a jazzisnow product
v0.64.7 · built 2026-09-20 19:48 UTC