Resolution Layer Case Study · Read & Diagnose
Plumbing & heating wholesale.
A catalog read of a regional plumbing, heating and HVAC wholesaler's published list-price catalog — a PDF, and the only product record it publishes — where a contractor's quote is built from the list price on the page, and two pages do not always agree on what it is.
This is a real EKOM catalog analysis, with the client's identity removed. The client is a regional plumbing, heating and HVAC wholesaler selling only to the trade, carrying the manufacturers contractors specify by name. It has no online catalog. Its one published product record is a list-price catalog — a PDF, laid out in sections, with a catalog number and a suggested list price on nearly every line. EKOM downloaded it, turned its pages into rows, ran an automated read over them, and flagged 44 items. 8 are reported here as actionable catalog defects. Thirty-four were withdrawn as EKOM's own artifact — columns the extraction invented, page codes it put in the wrong field — and two were set aside as the catalog's own typesetting conventions. None is in any count below.
What makes this document different is who reads it, and when. A retail price is read once, at checkout, by the person paying it. A wholesaler's list price is read in advance, by a contractor who has not bought anything yet and is building a number for someone else. It gets a multiplier, goes into a bid, and is defended weeks later at the counter. The catalog is not where the sale happens; it is where the contractor's promise to a customer is made.
In most catalogs a wrong field costs a click. Here it costs a bid — and the argument between a contractor and the counter about which page was right.
Manufacturer names are not attached to individual defects here, because on a distributor's catalog a manufacturer, model and defect together can identify the distributor. The client's catalog numbers, page codes, section names and exact prices have been removed or generalized; counts, ratios and the direction of every disagreement are exact.
What's inside
- At a glance — the severity split, where the findings concentrate, and how a printed document was read.
- What a contractor runs into first — one catalog number at two list prices, twenty-five times, and the pattern that says why.
- The receipts — prices the tables themselves refute, and a number that names three items.
- Printed is not the same as right — what a document typeset for the eye tells a system that is not a person.
- Where it traces back, and what's next — the four mechanisms the findings collapse into, and the order to fix in.
Nothing was supplied and no internal system was touched. Everything below was read from the catalog the wholesaler publishes on its own website, and the headline values were checked against the rendered pages.
8
Actionable findings
(44 flagged)
25
Catalog numbers at
two list prices
Where the 8 concentrate
Theme
What it is
Findings
One number, two list prices
Twenty-five catalog numbers printed on two pages at two prices
1
Prices the tables refute
A tank at four times the largest in its family; two motors at ten times their siblings
3
A number that is not an identity
One drain number, three finishes, three prices; three numbers each shared by two unrelated items
2
A format a machine misreads
Prices under a dollar printed as bare cents at the end of the leader dots
1
Placement
One manufacturer's part printed in another manufacturer's parts list
1
How EKOM read this catalog
1
Read
The published PDF, downloaded the way any customer downloads it — no file handoff, no credentials, no integration. Its text layer was read page by page.
Every catalog page carries a section code and a date; nearly every line a catalog number and a list price.
→
2
Profile
Infer what each column is for from how the catalog itself uses it, then hold every line to that — across pages.
The catalog number is the key the document is organised on. Most findings test the rest against it.
→
3
Analyze
Surface defects, rate severity, bind each to the numbers, pages and values behind it — then check it against the print.
8 findings, 5 defect classes, 4 causes.
Machine-surfaced signals from a cold read, not a verified defect list. A printed document is a harder read for a machine than a web page, and the analysis knew it: most of what it first flagged described EKOM's own extraction, and was withdrawn before anything was written. What remains was checked against the catalog's own text, and the headline values against the rendered page.
What a contractor runs into first.
The lead finding is about the list price itself — the one figure a contractor takes from this document — and about a catalog number that appears on more than one page and does not agree with itself.
Critical · One catalog number, two list prices
A combination boiler that lists nearly $300 lower in the heating section than in the water-heater section.
The water-heater section and the hydronic-heating section both carry the same manufacturer's combination-boiler table — the same two models, the same specification rows, the same feature bullets, word for word. The prices are not the same. Both boilers list about 7% lower on the heating page; the manifold kit beneath them lists at almost twice the price on one page as on the other, a single digit apart.
Line
What the two pages print
Verdict
The larger boiler
one list price on the water-heater page; nearly $300 less on the heating page
disagree
The smaller boiler
a little over $250 apart, the same direction
disagree
A valve kit on the same tables
the same price on both pages, to the cent
agree
A contractor who prices the boiler from the heating section and a counter clerk who looks it up under water heaters are both reading the catalog correctly, and they arrive at different numbers. Neither page says it is the one to trust.
Of the catalog numbers printed on more than one page, most agree to the cent. Twenty-five do not — and the disagreements are not scattered. They sit where the catalog reprints a table, or quotes a price outside its home table.
Where the second price comes from.
All twenty-five disagreements fall into four shapes, and each shape has a direction. The direction is what turns a list of typos into a mechanism.
Pages that print the same number
How the prices differ
Numbers
The water-heater section and the heating section — one manufacturer's table reprinted
The reprint is lower on the equipment; the accessories beneath differ by cents, with the reprint ending in a zero
6
An equipment page and a parts or tools page — a kit, a thermostat, an element, a vent
Wherever they disagree, the parts page is the higher
7
A product table and a note printed beneath another product
The note is the lower figure — two valves, each at two-thirds of the price three tables print for them
2
The same fitting or supply listed in two sections — crimp rings, ferrules, connector hoses, flood guards
Higher by a dollar or two, up to seven and a half; or lower by cents
10
The parts pages run above the equipment pages wherever they disagree. The reprinted heating table runs below the original. That is the signature of a catalog whose sections were repriced at different times and never reconciled against one another.
The mechanism is EKOM's reading of the pattern; the wholesaler's pricing record settles each pair in a lookup. What the pattern already says is that the fix is not twenty-five edits. It is one rule — one number, one price, wherever it is printed — applied to every reprinted table and every price quoted in a note, before the next edition is set.
The count is a floor: every line that pairs a catalog number with a list price was compared across pages, and a number the text layer did not separate cleanly from its leader dots would not be in it.
Prices the tables themselves refute.
Three printed list prices sit in tables whose neighbours make them impossible. Each was checked against the rendered page, not just the text layer: the print says what the analysis said it says.
Line
What the page prints
Severity
A mid-size well tank
Listed at roughly four times the price of the largest tank in its own family, between a smaller sibling at about a sixteenth of the figure and a larger one at about a seventh. It is the only price in the table printed without a thousands comma — the mark of a value typed by hand
critical
A furnace blower motor
A five-figure number with no decimal point and no cents, in a list where every other motor of its series is a three-figure price
critical
A one-horsepower variable-speed motor
Ten times the three-quarter-horsepower motor printed directly above it, again without the thousands comma its neighbours carry
high
Critical · Impossible prices
A catalog's list price is quoted, keyed and multiplied before anyone questions it.
A contractor who prices a well system from that table carries a five-figure tank into a bid, or stops and calls — either way the catalog has cost a transaction its trust. A clerk who keys the motor's printed figure gets a five-figure error, not a rounding one. Neither value survives a glance from someone who knows the products. The point is that a price list is read by people, and by systems, that do not know the products.
The analysis itself first read the decimal-less motor price as a normal three-figure one and had to be told not to correct what it saw — which is how the defect was found at all. A reader that "fixes" the number hides it; a reader that takes it as printed quotes it. Neither is the right outcome, and only the print can be.
A number that is not an identity.
A catalog number is supposed to name one orderable thing. In two places in this document it names a family, or two unrelated things at once.
Critical · Identifier does not name the item
A lavatory drain with three finishes, three prices and one catalog number.
On one accessories page, three drains and a kitchen strainer are each followed by their finish lines — nickel, chrome, bronze, black — each with its own price, the most expensive finish at more than twice the cheapest. The number does not change with the finish. An order that quotes it does not say which drain, or which price. Fourteen finish-priced lines sit under four numbers on that one page.
Line
What the record holds
Verdict
A drain, three finishes
one catalog number; the finish only in a text line beneath it
three items, one number
A faucet trim, three finishes
a finish code in the number itself — that manufacturer's convention, used elsewhere in the same catalog
one item, one number
The catalog is not unaware of the problem. On its faucet pages a finish is a suffix on the number — the convention exists in the document. It was not applied here.
High · Identifiers not unique
Three catalog numbers that each name two unrelated items.
A plastic drain fitting and a thermal limit switch share a number, at different prices, in different sections. So do a wall hydrant and a chrome adapter; so do a faucet plunger kit and a valve seat, three pages apart in the same parts section. Two manufacturers' part numbers met, and nothing in the document tells them apart. A fourth pair — a gauge printed at two prices under two descriptions — may be one item or two, and the study holds it rather than counting it.
Printed is not the same as right.
One idea about the findings rather than more findings — because a document typeset for the eye is now read by things that do not have eyes.
A web catalog has a layer written for machines beneath the one a person sees. This catalog has one layer: the PDF's text, laid out for a reader — columns side by side, prices at the end of a row of leader dots, section codes in the corner. Whatever reads it — a search engine, an assistant, a quoting tool, EKOM's own extraction — reads that. Where the typesetting is regular, a machine reads it well. Where it is not, the machine reads something else.
Medium · A price format a machine misreads
Prices under a dollar are printed as the cents alone.
An escutcheon is priced .62; a crimp ring .57. No dollar sign, no leading zero — and the decimal point sits at the end of a run of leader dots, where it is one more dot. More than a hundred lines print this way, roughly three-quarters of them in the pipe, valves and fittings section. A person reads sixty-two cents because the item is an escutcheon. A system reads a number, and the number it finds is sixty-two dollars. The analysis's first pass produced exactly that error on a run of tubing prices, and the analyst withdrew it as a reading of the dots rather than the catalog. The reading is the finding: the format guarantees the misread for anything that is not a person.
What else a reader that is not a person gets
Lines from side-by-side tables merge in the text layer, so a part can be read under its neighbour's heading. A price with no decimal point is a five-figure price to anything that takes the digits as printed — and a three-figure one to anything that "corrects" them, which hides the defect instead. A hand-formatted value with no thousands comma reads differently from the rest of its column to any rule that expects the comma.
Thirty-four of the analysis's own first-pass signals were about reading the document, not about the document. That is not a failure of the read; it is the finding about the format. A record that exists only as a page image with text behind it will be read wrongly by every system that tries, in the same places, for the same reasons — and those are the places this study reports.
Eight findings across a few dozen lines sounds like a few dozen corrections. They collapse into four upstream mechanisms — and a mechanism can be fixed once and stopped from recurring. Each tell below is a pattern in the document; the mechanism is EKOM's reading of it.
Tables reprinted by hand, section by section
The tell: where a number appears twice, the two printings differ in the direction of a repricing — parts pages above equipment pages wherever they disagree; the reprinted heating table below the original; accessories off by cents with one side rounded; a note quoting a price its own table has left behind. It produced all twenty-five two-price numbers.
Values typed, not generated
The tell: the three impossible prices are the three values formatted unlike their neighbours — two with no thousands comma in tables that carry them, one with no decimal point in a column that has them.
An identity convention applied on some pages and not others
The tell: faucet trim carries its finish in the number; the drains carry it only in a text line under a shared number. Two manufacturers' part numbers meet three times with nothing to tell them apart. It produced the drain finding and the three collisions.
A document typeset for the eye
The tell: sub-dollar prices as bare cents; the decimal indistinguishable from the leader dots; side-by-side tables that merge in the text layer. It produced the format finding — and most of what the analysis first flagged and withdrew.
Correcting twenty-five lines by hand corrects this edition. Reconciling every reprinted table against the pricing record before the next edition is set corrects those, and every one the next repricing would create.
33%
In a survey of 750 professional buyers across manufacturers, wholesalers, distributors and retailers, a third reported order errors caused by inaccuracies on a supplier's web store, and three in four said they would switch suppliers for a smoother online experience. This wholesaler's published record is a price list rather than a web store, and the inaccuracies sit exactly where a contractor's number is built: the list price, the catalog number and the finish.
Sana Commerce B2B Buyer Report, published January 2025; fieldwork by Sapio Research, September 2024
A wholesaler's catalog sells certainty as much as inventory. The contractor on the phone used to be answered by someone at the counter who knew the price. On paper — and in whatever reads the paper — the lines carry that alone. These findings are what happens when a document is assembled section by section from a record that moved underneath it. Nobody decided a boiler should list at two prices. It was never anybody's job to check the two pages against each other.
What this class of defect costs is not a sale — it is the argument after the sale. A contractor who bid from the heating page and is invoiced from the water-heater page has a problem of nearly $300 that is not his, and he has it with the counter. A clerk who keys the decimal-less motor has a five-figure order to unwind. A customer who ordered the drain by its number may have wanted the bronze and been shipped the chrome. None of these is a pricing decision the wholesaler made; each is a copy of a decision that drifted.
A second clock runs underneath. The contractor pricing a job increasingly starts by asking a tool — a quoting system, a portal, an assistant — and the tool reads the only document there is. It does not know an escutcheon costs cents, or that a tank cannot cost ten thousand dollars. It takes the catalog at its word, and on these pages its word is sometimes wrong. Those are wrong answers, and they do not correct themselves.
Three moves, in order. The first needs no new data at all — and the one that looks most mechanical deliberately waits.
This pass read and diagnosed. The same structural understanding powers what follows — turning a document a contractor has to second-guess into a record everyone reads the same way.
1 · Apply the corrections the document already answers for itself
Give every sub-dollar price its leading zero and its decimal point clear of the leader dots. Correct the three impossible prices from the ladder and the list around them. Approved as patterns, not line by line.
2 · Settle the questions that gate the rest — starting with which printing is current
Reconciling the twenty-five pairs looks mechanical, and it waits on one answer per pair: which page the pricing record agrees with. So does the drain — whether the record carries finish codes the print dropped, or needs them. Whose number a colliding number is comes from inside the business first.
3 · Hold the line at the next edition
Run the same read on the next catalog file before it is published — every reprinted number compared, every price checked against its ladder, every number checked for a twin — so these findings become a list of things that did not happen.
This is how EKOM moves a catalog from insight to impact —
and keeps every list price reading right as the business grows.