LL COST LAB

Construction cost monitor · ground-up vs conversion · MasterFormat spine ·
The Read —

The Spread — input costs vs what GCs charge

Inputs to new nonresidential construction vs bid prices, % change YoY

The gap is contractor margin compression — the negotiable cushion. BLS PPI, monthly.
Input costs (PPI WPUIP2312001) Bid prices (PPI 236222)

Input-cost pressure by project type

Synthetic input baskets, % YoY — published as ranges, not points

Weighted commodity + wage PPIs. Band = labor share ±5pts (weights are estimates until SOV data refines them). Compare to bid line above: the difference is what a hungry market absorbs.
Ground-up basket Conversion basket

MasterFormat division exposure

DivScopeDriver series (PPI) YoYGround-up wtConversion wtRead

⚠ Counter-thesis watch

Pass-through catch-up: the input-vs-bid gap is . Historically this gap closes with a snap once backlogs stabilize — today's soft bids are a window, not a regime. If the bid line turns up while inputs hold, the window is closing.

  • Capacity exit: compression kills subs before it cuts prices. Falling bidder counts in the bid log = pricing power returning. Prequalify aggressively; the cheapest bid from a dying sub is the most expensive line in the GMP.
  • Bid validity: subs quoting 30-day validity expect inflation; 90-day validity is softness talking. Log it per bid.
  • Exclusions creep: a GMP that got cheaper and longer on exclusions didn't get cheaper.

Memphis

MSA construction employment (000s, BLS CES)

Market indices (quarterly/monthly releases, parsed — dates as noted)

Bid log — the proprietary layer

Awaiting Memphis rebid. Each trade package logs to the MasterFormat spine: {division, scope, price, bidders, spread_pct, validity_days, exclusions[], escalation_line, date, market, project_type} — G703/SOV lines are parsed and mapped to divisions on ingest. Three projects in, this becomes the only Memphis-specific cost index in existence. Bidder counts and validity periods feed the counter-thesis watch above.