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.
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 reads | Likely reading | Use when |
|---|---|---|
| Not provided | The brand has no figure | Never measured, or withheld |
| Not applicable | The dimension does not exist | The category has no such spec |
| To be confirmed | A value exists, unpublished | Test 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.
| Dimension | Brand A X1 | Brand B Y2 |
|---|---|---|
| Suction (Pa, hard floor) | 5,000 | 4,200 |
| Runtime (min, standard mode) | 180 | 150 |
| Noise (dB, max power) | 68 | Not provided |
| Surfaces | Carpet, hard floor | Hard 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
| Step | Do this | Owner | Passes when |
|---|---|---|---|
| 1 Pick | The three comparison pages buyers ask about most | Content, growth | Each maps to a buyer question |
| 2 Define | The five to seven dimensions buyers screen on; one unit and test condition per column | Category, content | One unit per column |
| 3 Rebuild | Image to HTML table, th headers, three missing-value labels | Front end | Grid readable with CSS off |
| 4 Blind test | Hand the table alone to a model; record its wording | Content | Three 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.