Revomo Industry BriefMRO & Industrial Supplies

Nobody set this price.
A rule caught the line.

An MRO distributor prices a few hundred negotiated items by decision and hundreds of thousands by rule. Every other line falls to whichever mechanism reaches it first: a contract basket, a category discount, a sell matrix, a vending program, or a counter sale. Margin moves when the mix of those mechanisms moves, which no file announces and no approval records.

  • Price source
  • Contract basket
  • Sell matrix
  • Programs
  • Spot buys
  • Realization
Assessment
Revomo AI
Scope
Fasteners · abrasives · cutting tools · safety & PPE · JanSan · lubricants · hose & fittings · welding
Method
Commercial pattern analysis, public filings, distribution ERP documentation, and the mechanics of the Revomo platform
Status
Living document · Series 2026
RV·2026·IND·02 · EXECUTIVE ASSESSMENT

Margin can fall while every route improves.

MRO margin is reported by customer, product, branch and seller, almost never by the mechanism that set the price. Read the wrong way, a mix shift looks like a pricing failure and is answered with a price change.

MSC Industrial offers approximately 2.5 million active, saleable SKUs. No filing states the consequence, and none needs to: at that scale most items cannot get an individual pricing decision in a year, so they are priced by a rule. The rules carry the book.1

Mechanisms that set the outcome
  • List / catalog price
  • Discount-off-list matrix
  • Cost-plus multiplier
  • Contract basket price
  • Category discount
  • GPO schedule
  • Consumption program price
  • Spot buy / counter
  • Non-stock & direct ship
  • Web price
  • Last price paid
  • Customer-specific price record
  • Supplier purchase rebate
  • Customer volume rebate
  • Savings commitment
  • Freight policy

Sixteen mechanisms, and on most lines nobody selects among them. The line arrives and the first match wins.

01

The mix decides, not the rate

A blend can fall while every route holds or improves. It is a composition effect, so no route owner has anything to explain and no review catches it.

Arithmetic on Grainger's own FY2025 segment tables, not a Grainger conclusion: High-Touch gross margin fell 17 basis points, Endless Assortment ROSE 48, and the blend still fell 28, because the lower-margin route grew 15.7% against 2.0%. Hold both 2024 rates constant, apply 2025 sales, and about 88% of that decline is mix.2

02

The service model sets the margin

Route richness varies far more than product margin does, which is why a shift between routes moves the blend hard.

Fiscal 2025, overlapping MRO categories: 29.9% at Grainger's transactional Endless Assortment, 40.8% at MSC, 41.7% at Grainger High-Touch, 45.0% at Fastenal, 54.9% in DSG's rep-managed Lawson. Four companies, different product mixes, so the 25-point spread is evidence about service models, not a like-for-like comparison.3

03

The agreement is not a price list

It is a negotiated item basket, a category discount for everything outside it, a documented savings obligation, and often an upfront payment to win it. Compliance is scored on the basket, which is a few hundred items.

Fastenal reports approximately 74% of its 2025 consolidated sales with customers under a contractual agreement, national accounts alone 65%, and that many contracts carry savings expectations with a stated review interval.4

04

The disclosure cannot separate it either

MSC's net-sales bridge carries one line footnoted as changes in customer and product mix, discounting and other items. A well instrumented public distributor reports price, mix and discount as one number, and the internal report usually cannot separate them either.

Arithmetic illustration, not a Revomo outcome: the same 28 basis points is $1.4M on $500M of contract revenue and $14M on $5B. Only the count of mechanisms, units and currencies changes.1

The stack & the controls

The stack it runs on, and the controls around it.

MRO distributors are rarely short of systems. What is missing is one governed commercial context connecting the decision across them, and here the missing object is the price source on the invoiced line. The argument is not to replace a pricing engine, but to make what it already does legible, then govern it.

ERP & pricing configuration

Where the matrix lives, and where a governed change lands. Examples:

  • Epicor Prophet 21
  • Epicor Eclipse
  • Infor Distribution SX.e
  • SAP
  • Oracle
  • Microsoft Dynamics 365 Business Central
  • NetSuite
  • Acumatica

Customer procurement

Where the price the buyer sees is published, and where a publish quietly fails. Examples:

  • Hosted catalogs (CIF)
  • Punchout (cXML)
  • OCI
  • EDI 832
  • The distributor's web store

Data platform

Transaction and program history, connected as a source. Examples:

  • Snowflake
  • Databricks
  • BigQuery
  • Redshift

Commercial files

The records that never had a system, and usually move the decision:

  • Matrix workbooks
  • Contract price files & savings reports
  • Supplier rebate terms
  • Device and throughput records
  • Freight tables

Data is ingested through scheduled connectors into Revomo's governed store, and governed outputs are written back to the systems where transactions occur. Warehouses are sources, not the store of record. The systems above are examples, not a packaged-integration list.

The controls are platform-wide.

AccessSingle sign-on, SCIM provisioning and role-based access, in isolated workspaces per business unit, region or team.
PolicyThe precedence chain, the floor and the movement cap above are platform objects with version history.
ApprovalsThresholds route the exception with the mix decomposition attached, and a certification breach blocks rather than warns.
Lineage & auditEvery figure resolves to its record, including the mechanism that priced the line.
Effective datesMatrix cells, agreement terms and program prices carry the date they apply from.
Your dataSOC 2 Type II, GDPR-aligned handling, isolated per workspace. Revomo never trains models on your data: it improves through feedback on outcomes, not by absorbing your data into shared models.
Governance & security in detail
RV·2026·IND·02 · COMMERCIAL SYSTEM

What Revomo AI sees in an MRO distributor.

This spine is not a price build-up. It is a routing tree: a line enters at the top, and the first mechanism whose conditions it satisfies decides the number. Margin is determined by the branch taken, and almost nothing records which branch that was in a form anyone can aggregate.

Foundation
Commercial Context

One foundation carrying the invoiced line, the agreement it fell under, the matrix cell that priced it and the program that fulfilled it, so margin reads by mechanism.

Explore Commercial Context
Every node resolves against
  • Price source
  • Customer
  • Agreement
  • Product class
  • Branch / site
  • Program
  • Order type
  • Time
RV·2026·IND·02 · ASSESSMENT

Where Revomo AI would focus first.

Ranked by how much of the margin movement each decision explains, and how fast a distributor can act with data it already has. Note what is not first: cost recovery, the parent industry's opening move, is fourth here, because in MRO the mechanism costs more than the rate does.

01Mechanism-Mix Drift

How much of the movement is mix, how much is rate, and which mechanism should have caught the lines that moved?

Why it is hardNone of the usual cuts moves when the mix moves, so the trend appears without a cause and the natural answer is a price change that was never the problem.

Explore Margin Leakage & Price Realization
02Precedence Nobody Can Read

Which mechanism may price this line, in what order, and when did that order last change?

Why it is hardThe precedence exists inside the ERP as a library sequence or a price-type hierarchy, undocumented outside the vendor manual and one person's memory. The complaint is rarely that the engine cannot express a price. It is that nobody can see or bulk-edit what it already does.

Explore Customer-Specific Pricing
03Compliance Without Economics

What share of the account now sits outside the basket, at what realized margin, and will the committed savings certify on time?

Why it is hardCompliance is scored on the basket, so it stays perfect while realized economics decay. Both sides of the table know the basket does not cover the account, and neither measures what happens outside it.

Explore Contract Pricing & Compliance
04The Tail Nobody Owns

Which cells are priced against a cost basis that has moved, which sit under the floor, and which overrides outlived their reason?

Why it is hardNo tail line is large enough to trip a margin report, and the matrix has no owner whose job is to re-cost it. The everything-else cell catching unclassed and new items can price below cost, and being a fallback rather than a decision it is reviewed on no cadence.

Explore Cost, Tariff & Freight Recovery
05Front-End Decisions, Back-End Consequences

What does a front-end pricing or substitution decision do to buy-side tier position and sell-side accrual, while there is still time to act?

Why it is hardTier position is often calculated at quarter or year end, by which point buying behaviour can no longer reach the next threshold, so the front-end gain books immediately and the back-end loss lands a quarter later against a different owner. On the sell side, volume rebates and sign-on payments reduce net sales across the term, and nothing recalculates when the volume assumption misses.

Explore Rebates, SPAs & Chargebacks
SPECIMEN RUN · MRO & INDUSTRIAL SUPPLIES · MECHANISM-MIX DRIFT

Nothing arrived. Nothing expired.
The margin moved anyway.

ONE NATIONAL AGREEMENT · $8.40M ANNUAL SPEND · 62,000 LINES · 265,000 ORDERABLE SKUs

A national agreement with a multi-site manufacturer reaches its annual review in year three of five. Compliance is perfect, the savings commitment is nearly documented, and realized margin is 2.9 points below signing. No price was cut and no cost file landed: the customer's consumption moved between the mechanisms that price it. The same decomposition runs on one agreement under one ERP and on thousands across business units, regions and currencies. More mechanisms, more drift, one decision architecture.

IllustrativeIllustrative scenario · demonstration mechanics · not customer results
01SignalWhat changed?
AGR·NAT·2024·118National agreement · multi-site manufacturer · year 3 of 5Annual review in 30 days · savings certification due
Basket compliance
340 of 340
at or below committed price · PASS
Committed annual savings
$300K
$283K documented year to date
Annual spend
$8.40M
62,000 lines · $135 average line
Realized gross margin
21.9%
24.8% at signing
Margin against signing
−$244K
annualized · −2.9 points
Inbound events
None
no cost file, no expiry, no dispute

The file lands as a governed dataset rather than a spreadsheet in an inbox, so everything below computes on the same records the business runs on.

02ContextWhich mechanism priced each line?
Live on the spineBound by CopilotEvery figure cites a governed record
ERPinvoiced lines · 36 mo · price sourceAGRbasket · discounts · savings termsMTXsell matrix & cost-plus, last-changedPRGdevices · modeled vs actual throughputCOSTlanded cost, inbound freight & dutyFRToutbound freight actualsCATpublished catalog file versions
62,000 lines · 5 price mechanisms · 340 committed items · one governed model. The binding that matters is the price source, and in MRO that field usually already exists: distribution ERPs commonly stamp which mechanism produced the price. Nobody aggregates it. Phase one is coverage, because historical and overridden lines lose the stamp.
03AnalyzeWhere did the margin actually go?
cell 03mechanism-mix decompositionrefreshed
AGR·NAT·2024·118 · margin bridge, signing to now · bars are each cause's share of the 2.9-point decline · cost to serve allocated
GM at signing24.8%
Mechanism mix−2.18 pts
Matrix staleness−0.65 pts
Spot cost to serve−0.21 pts
Private label+0.09 pts
Basket price effect+0.03 pts
Program rate+0.02 pts
Realized GM now21.9%
48% → 29%
Contract basket · 340 negotiated items$2.44M on 11,600 lines at 27.6%, route up 0.1 points, all 340 items at or below committed price. The basket describes where this customer bought in the 2024 baseline, not where it buys now.
19% → 27%
Sell matrix · the unnegotiated tail$2.27M on 17,700 lines at 16.1%, down 2.4 points, last re-costed 26 months ago. 4,900 sit under the 14.0% margin floor, priced by the default cell rather than by anyone. The thin lines are the ones nobody negotiated.
4% → 13%
Unplanned spot & non-stock$1.09M on 11,700 lines at 10.4% once fulfilment is allocated, average line $93. Much ships same day on absorbed freight against an agreement that never priced it. That allocation is a model, not a measured cost.
21% → 23%
Agreement category discount$1.93M on 11,000 lines at 24.6%, up 0.4 points on private label. 120 of them now sit in the customer's benchmark set, visible to procurement although never negotiated.
8% → 8%
Consumption program$0.67M on 10,000 lines at 31.2%, the richest route and the only one whose share did not move. Average line $67: the device replaces the pick, the pack and the call.
04DecideWhich lines move, to which mechanism, inside which limits?
cell 05predictivetrained
Reset the basket, the discounts and the savings commitment to where the account actually buys.

The only response that fixes the agreement rather than its symptoms, which is why a business two years from renewal might take it. It also invites the customer to re-benchmark everything, so the recovery is net of a counter-move and lands lowest.

Leave the routing alone. Refresh multipliers to current landed cost and repair every line under the floor.

Recovers well for the effort and fails the certification at $283K against a $300K commitment, which on a five-year agreement is a contractual miss. It also raises price on the 120 items the customer benchmarks.

Convert the highest-frequency spot lines into the program, re-cost the matrix outside the benchmark set, negotiate the 120 benchmarked items into the basket.

Recommended. It clears the $300K commitment with $10K of headroom and lowers price on the 120 items procurement watches. The page sits in one row of it: on a spot buy the customer pays a bad price and the distributor earns a bad margin because neither chose the routing, so converting it is not zero-sum. Total spend still rises 1.2%, which is why the basket expansion belongs inside this option.

Optimize
cell 08optimizationsolved
ObjectiveMaximize annualized realized margin on AGR·NAT·2024·118, subject to the constraints below
Savings certificationmust clear $300,000
Basket itemsnone above committed price
Benchmark exposureno increase on 120 items
Matrix movement cap5.0% per item per event
Margin floor14.0% on the computed price
Device availability6 devices · 2 sites · 90 days
Recommended action set · routing and price, by mechanismscroll for all columns
SegmentSpendLinesMoveRecoveryWhy this action
Contract basket · 340 committed items$2.436M11,600Hold to committed$0Committed for the term. Compliance is measured here, and stays green.
Category discount · 120 benchmarked items$0.780M4,800−2.1% into basket−$16KBuys $16K of certification and clears the benchmark exposure at a price we choose.
Category discount · remainder$1.152M6,200Hold$0Inside the negotiated discount. No headroom to take.
Sell matrix · re-costed$1.866M12,800+4.2%+$78KMultipliers restored to current landed cost, inside the cap and outside the benchmark set.
Sell matrix · default-cell floor breaches$0.402M4,9006.7% → 14.0%+$34KPriced at 6.7% by the fallback cell, not by a decision. Floor repair outranks the cap.
Consumption program · existing$0.672M10,000Hold$0Program price current, throughput at plan. Nothing to take.
Unplanned spot · converted to program$0.588M6,300Route · price −1.8%+$77KA routing change: 10.4% to 24.0% in year one, after device and stocking recovery.
Unplanned spot · retained$0.504M5,400Freight & MOQ reset+$20KSame-day handling absorbed against an agreement that never priced it.
Total$8.400M · 62,000 lines+$193KAnnualized, net of modeled volume response
05Govern & executeWhich mechanism is allowed to price a line, and in what order?
RULESET · MECHANISM PRECEDENCE · MRORouting as a decision tree · the floor as a decision table · precedence as an explicit, versioned chain
RuleWhenThenApproval
MX·BASKETItem sits on an in-force agreement basketBasket price wins, no mechanism may overrideAuto
MX·BENCHItem is in the customer's declared benchmark setPrice may not increase within the termAuto
MX·FLOORComputed price falls below the 14.0% margin floorReprice to floor, flag the cell that produced itAuto
MX·CAPMatrix move exceeds 5.0% in one event, other than a floor repairRoute with the mix decomposition attachedPricing Manager
MX·CERTProjected certified savings falls below the commitmentBlock publishVP Finance
MX·ROUTEItem exceeds 40 unplanned lines a year at one sitePropose consumption-program conversionBranch & account owner
Precedence chain
  1. Agreement basket price
  2. Benchmark-set hold
  3. Category discount
  4. Consumption program price
  5. Sell matrix
  6. Margin floor
  7. Quote override

The chain was backtested against four quarters of invoiced lines and shadow-run beside the live matrix before publishing, which is how a precedence change is proved not to reprice something nobody intended. The rule participates before the action is proposed, so the recommendation already respects the certification constraint. The version history is the artefact most MRO distributors have never had: the ERP knows the sequence, but not when it last changed or who changed it.

ExecuteWhere does the decision have to land?
Automations · AUT·MRO·ROUTE · routing drift
TriggerTriggerOn record state change · Agreement review milestone
Routing has driftedYes / No BranchReads price source on invoiced linesData ChangeBasket share of spend moved more than 10 points since the last review
Mark within toleranceActionRouting Status → "Within tolerance"
Ask CopilotActionReads the account's 36 months of invoiced lines"Which lines left the basket, which mechanism caught them, and what did that cost us and the customer? Cite the records."
Submit for approvalTransitionVerb "submit" · the policy decides if it is legal

The agent reasons. It does not publish. Reasoning does not confer authority: the state change is a governed transition, and policy decides if it is legal.

  1. DraftD+2
  2. ValidateD+6
  3. ApproveD+11
  4. PublishD+16
  5. MonitorD+30 review
Lands inSell matrix cellsCustomer-specific contract pricingThe customer's procurement catalog fileConsumption-program item listsBranch & counter guidance

The third target fails quietly. Until the republished file is accepted by the customer's procurement system their buyers keep transacting the previous prices, and the lag runs in the customer's favour: a decrease reaches them at once, an increase waits on validation. Revomo publishes the governed price and flags a stale catalog version. It cannot make the customer's system accept a refresh, which is why Measure carries this as a variance rather than a solved problem.

06MeasureDid the routing actually change?
IllustrativeIllustrative realized outcome · week 12 · not customer results
Modeled recovery
+$193K
annualized
Realized at week 12
+$172K
89% capture
Realized gross margin
23.7%
modeled 23.9%
Basket share of spend
36%
modeled 38%
Lines under the floor
0
of 4,900 repaired
Certified savings
$306K
commitment cleared

The $21K gap decomposes to two causes, both on the record. $15K is device lead time: two of the six units are not yet installed, so roughly 1,200 lines a year are still routed to spot at $12 of recovery each, which is why realized spot lines are 6,600 against a modeled 5,400. $6K is catalog lag, about 1,100 re-costed lines a year still transacting at the previous price. Neither is a pricing error. Both are routing, and both are inputs to the next review.

The next decision starts with the routing this one left behind.

SPECIMEN RUN · MRO & INDUSTRIAL SUPPLIES · MECHANISM-MIX DRIFTIllustrative scenario · demonstration mechanics · not customer results
RV·2026·IND·02 · RECOMMENDED BLUEPRINT

A practical Revomo blueprint for MRO and industrial supplies.

An adoption order, not a catalog. Each tier produces an artefact the next depends on, and the first one here is unusually specific.

01

Foundation

Nothing else here is computable without it.

ProducesPrice source on the invoiced line

Commercial Context

Invoiced lines, agreements, matrix configuration, programs, landed cost and freight on one foundation, with the mechanism that priced each line carried as an attribute rather than inferred.

02

See the economics

Separate mix from rate before changing anything.

ProducesMechanism-mix decomposition

Analytics & Insights

Realized margin by price source, agreement and order type, with mix and rate separated so a falling blend has a cause.

03

Manage the core

Make the mechanism legible, then govern it.

ProducesPrecedence chain & decision tables

Price Management

The matrix as decision tables with effective dates and version history, and the precedence between basket, discount, program, matrix and override as an explicit chain, shadow-run before publishing.

04

Decide

The best actions are often routing changes, not price changes.

ProducesTrained model & solved action set

Notebooks

Analysis, predictive and optimization cells on the same records, each declaring what it computed and its state.

Decision Optimization

Actions solved inside the floor, the cap and the savings certification, so a recommendation arrives compliant with the agreement.

05

Automate and plan

A decision with no event needs something watching for the absence of one.

ProducesRouting-drift monitor & agent trace

AI Agents & Automation

A scheduled condition on basket share of spend, read from the price source. Agents reason and propose; live changes cross a governed transition.

Revomo Copilot

Grounded explanation of which lines left which mechanism, cited to the records that carry them.

Planning & Forecasting

Agreement-level margin and savings plans, so a forward commitment is planned against rather than reported after.

06

Extend

Genuinely relevant to MRO, and not yet the proof.

ProducesAgreement, program and quote records

Rebates & IncentivesEarly Access

Buy-side tiers and sell-side incentives held against the transactions they attach to. Early access: analytics first, not settlement.

Contract Pricing & RenewalsAlpha

Baskets, discounts, escalators and savings terms read as entitlements before a price publishes. Alpha, design partners only.

Where to start

Where we would start.

Commercial transformation decomposes into high-value decision systems, so Revomo enters through one of them. In MRO the highest-yield first decision is not a repricing programme. It is the mechanism-mix decomposition on the twenty largest agreements: it uses records that already exist, and it ends in a governed action rather than a report.

Recommended first use case
Margin Leakage + Mechanism Mix
  • The raw material is usually already in the ERP, which commonly stamps which mechanism priced a line. Coverage is measurable in the first week.
  • It answers a question nobody currently answers, rather than reproducing a report that exists.
  • It separates mix from rate, which decides whether a price change is the right response at all.
  • It ends in a governed action on the matrix, the agreement or the routing, not in a slide.
Adoption pattern
  1. 01See
    Commercial ContextPrice-source coverageAnalytics & Insights
  2. 02Govern
    Price ManagementPrecedence chainMargin floor
  3. 03Decide
    NotebooksDecision Optimization
  4. 04Expand
    Agents & CopilotPlanningRebatesContracts

One agreement, one decomposition, one governed action. Then the same decomposition across the book.

Commercial models

The priorities change with how you serve the line.

MRO is not one motion. These four serve overlapping product through different mechanisms, and the mechanism decides which part of the platform carries the first phase.

01

Broad-line catalog MRO

Breadth is the offer, the matrix prices nearly everything, and the web price is public.

Revomo emphasis
Price ManagementMix analyticsWeb vs contract priceMatrix governance
02

Integrated supply and on-site

You run the customer's crib, price and service are one number, and the savings commitment is the contract.

Revomo emphasis
Commercial ContextPlanning & certificationProgram economics
03

Consumption-led VMI and vending

Devices and bins are the routing mechanism, the margin is the service, and throughput against the install model is the dataset.

Revomo emphasis
Program throughputCost to serveOptimization
04

Technical and application-led specialist

Margin is earned on application expertise and private-label conversion, and the tail runs the tightest matrices in the industry.

Revomo emphasis
Margin AnalyticsPrivate-label mixOptimizationRebate tiers

Bring one agreement.
See which mechanism took the margin.

Start with 24 months of invoiced lines, the agreement terms behind them, and whatever price-source field your ERP carries. We will decompose margin by mechanism, separate mix from rate, and show how Revomo turns that into a governed routing and price action.

Research basis4 primary sources · SEC filings, federal statistical agencies and public company disclosure

Externally sourced figures on this page, in order of appearance. Every other number is specimen data inside the decision story and is labelled illustrative where it appears.

  1. 1MSC Industrial Direct Co., Inc. Annual report on Form 10-K, fiscal year ended 30 August 2025 Filed October 2025
  2. 2W.W. Grainger, Inc. Annual report on Form 10-K, fiscal year 2025 Filed February 2026
  3. 3Distribution Solutions Group, Inc. Annual report on Form 10-K, fiscal year 2025 Filed March 2026
  4. 4Fastenal Company. Annual report on Form 10-K, fiscal year 2025 Filed February 2026
Plate IND · Series 2026 · MRO & Industrial Supplies · RV·2026·IND·02
Plate B2 · Series 2026