GEO-066·Issue 06·Technical Foundation·66 / 132

Machine-Readable Comparison Tables

A comparison table is a matrix a model reads cell by cell. Fix units, name missing values, pair HTML with schema, and blind-test what gets extracted.

5 min readGEOTechnical Foundationcross-border

Issue focusMake the Shortlist: Comparisons, Use Cases, and Pre-Purchase Decisions

Consider a composite scene. A DTC floor-care brand’s German comparison page leads with a three-panel PNG: “X1 vs. Y2,” suction, runtime, noise, composed in a design tool. Asked which unit handles pet hair on carpet, an assistant names three models; the brand’s row ends with “no verifiable data on suction or carpet performance.” The 5,000 Pa figure sits on that image, twelve pixels tall and invisible to the model.

A comparison table is a data matrix, not a layout: one object per row, one field and one unit per column, missing values named — break any of the three and a model answers “not provided” no matter how complete the specs are.

A model reads rows and columns, not design

To an extraction step, a table is a two-dimensional array: rows are objects, columns are fields. Row headers answer “whose value is this”; column headers answer “which field, which unit.” With both, a cell becomes quotable; without them, a number floats on a page.

The acceptance test is unforgiving: lift one cell out and ask whether it still answers who, which field, which unit, and under what conditions. A table that falls apart when a cell is lifted reads fine to a person and gets skipped by a machine.

That is why comparison pages are harder than product pages: several objects, many fields, one shared definition per column. When definitions drift, a model does not correct cell by cell; it abandons the column, preferring “specs differ” to a guess.

Three breakpoints: units, missing values, structure

Mixed units void a column. Wh beside mAh, kg beside lb: nothing compares. Put the unit in the header — “Battery capacity (Wh)” — and numbers alone in the cells. Write ranges as “45–60” and explain the test condition below the table, which beats “about 50.” A conversion note goes under the table, never in a cell.

A blank cell is a false value. Empty cells, dashes, and slashes read as zero, as “not applicable,” or as “this product lacks the feature.” Separate the three.

Cell readsLikely readingUse when
Not providedThe brand has no figureNever measured, or withheld
Not applicableThe dimension does not existThe category has no such spec
To be confirmedA value exists, unpublishedTest booked, result pending

Broken structure loses the column mapping. Use thead and th, not bolded td, and avoid rowspan/colspan, which erase which column a cell belongs to. Keep the header row as text. Do not let mobile JavaScript redraw the table as viewport cards: CSS-hidden columns survive in source, script-drawn ones never exist there.

The common counter-example: three stat panels stitched into one image captioned “see below.” It earns no citation; there is no cell to lift.

Example: the same specs, two ways

Example — brands and figures invented; no real product is described.

Before: a PNG. The cells read “5,000 Pa,” “~180 min,” and a dash.

After: a real table.

DimensionBrand A X1Brand B Y2
Suction (Pa, hard floor)5,0004,200
Runtime (min, standard mode)180150
Noise (dB, max power)68Not provided
SurfacesCarpet, hard floorHard floor only

Three changes only: units and test mode in the headers, the dash replaced by “not provided,” the image by a table. Asked whether the unit is loud, an assistant now answers “Brand A, 68 dB at max power; Brand B provided no figure.” The old version said “no data for either” and dropped both brands.

HTML and schema split the job

The table makes a fact quotable; schema makes it identifiable — which row is which Product, which Offer carries price and availability. Build the table first, then describe the same facts in markup. A price in the cell and another in the Offer means whichever the model picks may be wrong, and the loss is credibility, not rank.

An ItemList wraps the compared products, Product and Offer carry price and stock, additionalProperty carries table-specific dimensions — naming the field, never validating the value.

Schema is not a rich-result switch: more markup lowers the chance of being misread, but does not put your table into an answer.

Four steps and one blind test

StepDo thisOwnerPasses when
1 PickThe three comparison pages buyers ask about mostContent, growthEach maps to a buyer question
2 DefineThe five to seven dimensions buyers screen on; one unit and test condition per columnCategory, contentOne unit per column
3 RebuildImage to HTML table, th headers, three missing-value labelsFront endGrid readable with CSS off
4 Blind testHand the table alone to a model; record its wordingContentThree questions right twice running

Step 2 gets skipped. More dimensions is not better; more comparable is better. Prefer dimensions competitors also publish: one only you measure belongs in body copy, and empty cells lower parseability for the whole table.

For step 4, give the model only the table’s HTML and ask: which product each row is, which field and unit each value belongs to, which cells are missing. Repeat two or three runs; single runs fluctuate, the discipline an AI visibility baseline applies.

Where this breaks

First, the dimensions are not comparable. Custom furniture, handmade goods, made-to-measure anything: forcing them into a grid manufactures false conclusions. Write the applicability conditions instead.

Second, the difference lives in experience. Scent, fabric hand, fit. A table states what is present, never whether it is good; reviews and UGC carry that.

Third, the sale happens inside a marketplace. Platform fields decide the comparison; your own table’s marginal return is low. Fix the listing and reviews first.

Fourth, master data is already inconsistent. When ERP, feed, and page disagree, a table only arranges the contradictions more neatly. Align the product graph first.

Fifth, compliance limits disclosure. Some markets constrain performance and energy claims. State conditions instead of absolute figures, and never fill a cell with a number you cannot substantiate.

Content decides which dimensions matter; engineering decides whether each can be lifted cell by cell. Skip either and the table rots. Comparability is also the gate into the shortlist, covered by this issue’s lead, AI shortlists only 3–5 names; the rest of the line sits on the technical foundation hub. The reason this layer matters is upstream, in four AI entry points.

This month, take the comparison page buyers ask about most and rebuild it as an HTML table: five dimensions, units in the headers, blanks replaced with “not provided,” “not applicable,” or “to be confirmed.” Run one blind test; file every cell the model got wrong as a ticket.