Revomo Industry BriefAutomotive Aftermarket Distribution
The customer asks for a repair. Which line fills it sets the margin.
A vehicle application arrives at the counter, not a part number. Several stocked lines can legally fill it at different costs, warranty terms and core liabilities, and the one sold is usually whichever the catalogue ranks first. Revomo binds transactions to coverage, shows what each fill route earns, and publishes a governed policy.
Warehouse distribution · jobber & store networks · integrated retail
Method
Commercial pattern analysis, public filings, and the platform’s mechanics
Status
Living document · Series 2026
RV·2026·IND·04 · EXECUTIVE ASSESSMENT
The aftermarket does not sell part numbers. It fills applications.
Demand arrives as a vehicle and a failed component, not a SKU. The catalogue turns that into qualified part numbers, several already on the shelf at different costs. Choosing between them moves hundreds of basis points, thousands of times a day.
Substitution is the structure of this market, not a grey practice, and a public filer states it plainly. LKQ describes buyers of vehicle replacement products choosing among "primarily four sources": new OEM, aftermarket, salvaged and reconditioned, the last three of which it calls "alternative parts".1
Mechanisms that set the outcome
Line discount
Channel price levels
Matrix cost bands
Line changeover
Private label
Core charges
Stock adjustments
Vendor programs
Supersession
Buyouts
Fill rate
Generic distribution has a timing problem it can see. The aftermarket has an identity problem it cannot: the ERP stores the part that was sold and never the application that was asked for, so the counterfactual does not exist in the record by construction.
01
The decision unit is the application, not the part number
Margin here is analyzed by part number and by customer, and both start from the number that was sold, the one thing the decision did not choose. Which other lines could have filled the request is not in the record.
02
Availability is what the professional account is buying
The shop’s habit of calling you first is the commercial unit, and depth of stock buys it. Availability is a ladder: the counter holds fast movers, a hub the next tier, a DC the tail. The specimen runs the same ratio, smaller.
O’Reilly reports domestic stores averaging approximately 24,000 SKUs, hub stores 63,000, and distribution centres over 156,000.2
03
Most of the network is somebody else’s company
A distributor publishes a price to a branch it owns and a program to an independent, then watches what that independent does with it. Neither instrument reaches a reseller’s own resale decision.
Genuine Parts serves 6,864 US and Canadian locations, approximately 35% company-owned and 65% independently-owned.3
04
Program income is a receivable, not a discount
At the warehouse step, vendor programs are frequently the margin: volume rebates, growth tiers, co-op, stock lift. Earned on purchases already made and settled later, so program-inclusive economics rest on money not yet arrived.
Genuine Parts recorded $160 million of non-recurring charges in the fourth quarter of 2025, primarily credit losses on volume purchase rebates due from a vendor that filed for Chapter 11.4
The stack & the controls
The stack it runs on, and the controls around it.
Two systems of record here do not join: one knows what was sold, the other what fits. The decision needs both, and the outcome lands where orders are priced.
ERP / DMS
Counter transactions, order pricing, where changes land. Examples:
Epicor Vision
Epicor Eagle
Autologue
MAM Autopart
Infor SX.e
SAP
Oracle
Microsoft Dynamics
NetSuite
Catalogue & fitment
Application coverage and attributes, as a source:
ACES & PIES
VCdb / PCdb / Qdb
MOTOR
TecDoc
Nexpart
PartsTech
Data platform
Transaction and coverage history, as a source:
Snowflake
Databricks
BigQuery
Redshift
Commercial files
The records with no system, that move the decision:
The matrix
Supplier price sheets
The line card
Program trackers
Core logs
Return books
Data is ingested through scheduled connectors into Revomo’s governed store, and governed outputs are written back where orders are priced. Warehouses are sources, not the store of record, and so is the catalogue: Revomo does not author fitment data.
The controls are platform-wide.
AccessSingle sign-on, SCIM provisioning and role-based access, isolated per banner or region.
PolicyThe fill-rate floor, safety hold and coverage rule are platform objects, not a ruleset built for one refresh.
ApprovalsThresholds route the exception to the right approver, with the deltas attached.
Lineage & auditEvery figure resolves to its record; every price, ranking and program change is logged.
Effective datesChanges carry the date they apply from, so a default and a contract file cannot silently disagree.
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.
What Revomo AI sees in an aftermarket distributor.
This spine starts at a vehicle, not a supplier cost file. What the counter can reach and what the account resolves to meet at one fork.
Foundation
Commercial Context
The record that exists nowhere else: the application, bound to every qualified line, level, program and core window. Coverage is an ingested source; Revomo does not author fitment data.
Coverage & stocking feedbackthe input to the next fill
Commercial Context
RV·2026·IND·04 · ASSESSMENT
Where Revomo AI would focus first.
Ranked by how directly the decision moves margin and how fast a distributor can act. Not the macro page’s order: cost recovery ranks last here, not second.
01Line Selection & Substitution Margin
Which line should fill each application by default, and at what margin against today’s?
Why it is hardThe transaction system stores the part number sold, never the application asked for. Reconstructing the alternatives needs the catalogue, a different system on another cycle.
Which of these are pricing, which stocking, which data defects, and what is each worth?
Why it is hardThe buyout looks like service, the credit memo like accounting, the stale cost like data. None appears as a pricing decision, so the margin report is accurate and the conclusion wrong.
Which of our own price records governs this line, and why that one?
Why it is hardThese are not discounts off one list. They are positions in a supply chain, each a different business with its own resale margin, so moving an account changes who that account is.
What allowance and core balance do we hold, and what expires this quarter?
Why it is hardThe return right is capped at a percentage of annual purchases and expires. The core is a deposit against a unit travelling back through three companies. Neither usually has an owner.
What is the true margin once every program settles, and how much will arrive?
Why it is hardSupplier statements arrive in a different period, unit of measure and part grouping from the purchases they settle, so reconciliation is a quarterly project rather than a running balance.
Which parts pass through at cost, which absorb, and what happens to the bands?
Why it is hardBecause the counter price is computed from cost by a matrix band, a dollar passed through as a dollar defends profit in dollars, dilutes the rate, and moves parts across bands so the multiplier changes too.
The quarterly coverage and supersession refresh lands. On 34,800 applications a line the group already stocks has gained qualified coverage, 4,260 numbers are superseded and 1,180 discontinued. Nobody will make 34,800 decisions, so the counter follows whatever the catalogue ranks first. Depth runs 25,900 SKUs at a store, 66,500 at a hub, 168,000 at a DC.
IllustrativeIllustrative scenario · demonstration mechanics · not customer results
34,800 applications · 11,600 candidate numbers · 7 lines · 5 channel levels · 8,240 accounts · one governed model
03AnalyzeWhere did the margin actually go?
cell 03governed queryrefreshed
Affected book · $96.4M annualized · gross margin by fill route · bar is share of margin
Premium line$16.13M
Mid line$10.79M
Private label$6.58M
Reman + core$3.15M
Outside purchase$0.56M
Gross margin$37.21M · 38.6%
18,600 lines · $6.03M
Outside purchases against parts a hub or DC already held6.3% of the book’s revenue and 1.5% of its gross margin, at 9.3%. A stocking failure filed as a service win.
7,920 applications · $21.1M
Filled from a higher-cost line where a stocked line has equal coverageSelected by catalogue rank, not margin. The counter follows the only ordering on the screen.
1,526 of 4,260
Superseded numbers still priced off the pre-supersession costCost understated by 4.8%, so the matrix computed every channel level from a base that no longer exists.
2,140 units · $147K
Core liability with the supplier window inside 90 daysA deposit against a unit travelling back through three companies. Each closed window turns it into a write-off.
04DecideWhich line fills each request, inside which guardrails?
cell 06predictivetrained
Accept the refreshed ranking everywhere.
Costs nothing and hands the decision to a vendor’s ranking. The negative number is the point: the refresh moved 6,340 applications onto a line costing 2.6 points more, so no change is itself a change.
Default to the cheapest qualified line wherever coverage and contract allow.
Takes the most margin per line and gives back what the account is buying. Fill falls 3.3 points because the cheapest qualified line is often not on the shelf, and the model prices the line lost, not the first call.
Solve line selection, stocking and margin as one problem under a fill floor.
Recovers 81% of the pure-margin case while raising fill, because the buyout and the line selection are one decision made twice. Not the highest-margin answer, and the one 180 counters will execute.
Optimize
cell 09optimizationsolved
ObjectiveMaximize annualized gross margin on the affected book, under a hard fill-rate floor and complete coverage on every candidate line
Branch fill-rate floor92.0%, binding
Coverage completenessSubmodel, engine and position
Safety-critical holdFriction, steering, restraint, wheel end
Warranty parityNot shorter than the incumbent
Core-bearing shareCapped at the current share
Channel-level integrityNational account files held to term
Change rate5,500 applications per week
Margin thresholdNo change below 150 bps
Recommended line-selection set · by applicationscroll for all columns
Segment
Applications
Lines / yr
Move
Recovery
Why this action
Premium duplicated by a stocked mid line
7,920
116,300
Default to mid line
+$792K
Equal coverage and warranty, 3.9 points cheaper.
Non-safety-critical, coverage verified
5,480
73,300
Default to private label
+$622K
Highest-margin fill, coverage confirmed at submodel.
Safety-critical groups
7,070
97,000
Hold incumbent line
$0
These do not move on a margin argument.
Repeat buyouts against stock already held
3,630
54,100
Stock at branch
+$540K
A stocking decision priced at 9.3%, net of carrying cost.
Superseded numbers on a stale cost
1,526
25,500
Reprice to current cost
+$544K
One correction repairs every level under it.
National account files in force
4,180
67,800
Hold to term
$0
Excluded by agreement and effective date.
Total
29,806 of 34,800 · 434,000
+$2.50M
Annualized, net of modeled volume response
05Govern & executeWhat is allowed, and who signs it?
RULESET · LINE SELECTION · AFTERMARKETCorridors as decision tables · approval routing as decision trees · precedence as an explicit chain
Rule
When
Then
Approval
LS·COV
Coverage incomplete at submodel, engine or position
Ineligible to become the default
Auto
LS·SAFE
Application sits in a safety-critical group
Default holds on the incumbent line
Auto
LS·WAR
Candidate warranty term is shorter than the incumbent
Sign-off with the delta
Category Manager
LS·FILL
Modeled branch fill rate falls below 92.0%
Block until stocking is set
Auto
LS·CORE
Change raises core-bearing share above current
Core liability review
Controller
LS·CHAN
Application sits on a national account file
Hold the channel-level price to term
Auto
LS·MARGIN
Margin improves by less than 150 bps
Do not re-default
Auto
Precedence chain
Contract channel level
Safety-critical hold
Coverage completeness
Fill-rate floor
Core liability cap
Margin threshold
Catalogue default
The draft was backtested against twelve months of counter transactions and shadow-run beside the live catalogue ranking in two hubs before publishing. The rule participates before the change is proposed, so a coverage-incomplete candidate never reaches an approver and "why this line" is a record rather than an argument.
ExecuteWhere does the decision have to land?
Automations · AUT·AAM·FILL · line selection
TriggerTriggerOn system event · Dataset refreshed
Competing coverage addedYes / No BranchReads Application Coverage 2026 Q2Data ChangeA stocked line gains qualified coverage on an existing application
NoYes
Mark default unchangedActionFill Route → "Catalogue default holds"
Ask CopilotActionReads the affected application set"Which of these can move to a lower-cost line without losing coverage, warranty or fill? Cite the applications."
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.
DraftD+2
ValidateD+6
ApproveD+11
PublishD+15
MonitorD+30
Lands inElectronic catalogue line rankingBranch, hub & DC stocking parametersChannel-level price filesPOS supersession tableCore liability registerSupplier stock-adjustment claim
There is no supplier effective date here, which is what makes it easy to postpone. The clock is how fast a counter forms a habit: once 180 stores have learned a default, changing it again costs more than setting it right did. The run also claims $1.42M of discontinued stock before its window closes.
06MeasureDid the fill hold?
IllustrativeIllustrative realized outcome · week 16 · not customer results
Modeled margin
+$2.50M
annualized
Realized at week 16
+$2.15M
86% capture
Fill adherence
88.4%
modeled 95%
Branch fill rate
93.6%
modeled 94.1%
Buyout lines
12,850
modeled 11,900
Variance to plan
−$350K
fully attributed
The $350K gap decomposes to three causes and no residual. $213K from adherence below plan at 22 branches where staff kept quoting the incumbent from memory, a training problem rather than a pricing one. $92K from 1,180 applications where private-label coverage proved incomplete. $45K from a core window closing on 660 units.
The next decision starts with the outcome of this one.
SPECIMEN RUN · AUTOMOTIVE AFTERMARKET · LINE SELECTIONIllustrative scenario · demonstration mechanics · not customer results
RV·2026·IND·06 · RECOMMENDED BLUEPRINT
A practical Revomo blueprint for aftermarket distribution.
An adoption order, not a catalog. Each tier produces an artefact the next depends on, starting with the join nothing else performs.
Monitoring the coverage refresh, core window and allowance expiry. Live changes cross a governed transition.
Where to start
Where we would start.
Revomo enters through one decision. Here that is usually one category on one banner, because the coverage join can be proved on a single friction book. That holds on one DC or on several ERP instances: commercial transformation decomposes into decision systems, and this one has the shortest path to a published change.
Bring one category. See which line should be filling the request.
Bring a slice of counter transactions and the coverage file you license. We will bind them, decompose margin by fill route, and turn the finding into a governed default.
Research basis4 primary sources · SEC filings, federal statistical agencies and public company disclosureView sources
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.