One sofa, thousands of buildable variants — and the data lives in a PDF price list. Why cover, color and dimension belong in linked attributes, not thousands of flat articles.
A corner sofa in a showroom looks like one product. In your data, it isn't. It is a cover collection with forty fabric qualities, each in a dozen colors, across three or four seat depths, in a left- or right-facing module layout, with a price-group surcharge that changes per fabric. Multiply that out and a single model is not one article — it is thousands of buildable combinations. Upholstered furniture is the most configurable corner of the furniture assortment, and its data behaves accordingly.
Product data for upholstered furniture is a configuration, not a catalog of finished articles. Cover, color, dimension and module are options that combine — and the moment you treat each combination as its own flat product, the range becomes unmaintainable. This is a sub-segment of the broader furniture-retail data challenge, and it is the one where the configuration and delivery-format problem bites hardest.
The variant explosion in upholstery comes from stacking independent option dimensions, each of which multiplies the last:
Each dimension is small on its own. Multiplied together they produce thousands of buildable combinations from one model — which is exactly why you must not store them as thousands of separate articles.
Upholstery manufacturers describe their range the way it is sold: as a price list. A cover-group table, a dimension table and a price-group matrix express the whole configurable family on a handful of printed pages — far more compactly than a machine feed with one row per combination ever could. So the master data lands on your desk as a PDF, sometimes hundreds of pages, occasionally an Excel that is really a printed layout in disguise.
The problem is that a PDF is unstructured. The configuration logic is there — cover groups, dimensions, surcharges — but it is trapped in a layout meant for human eyes:
Reading all of that back out by hand — and re-doing it every time a collection changes — is the real cost. The fix is to extract the structure out of the PDF once, into machine-readable attributes.
There are two ways to represent a configurable sofa, and only one of them scales. Flattening means one article per buildable combination; linking means one product with cover, color and dimension as connected attributes.
| Aspect | Flat articles (one per combination) | Linked attributes (one configurable product) |
|---|---|---|
| Record count | Thousands per model | One product plus its option lists |
| Price-group change | Edit thousands of rows | Change the group once, all combinations update |
| New color in a collection | Create hundreds of new articles | Add one option value |
| Shop / configurator | Unusable variant list | Clean option pickers |
| Maintainability | Breaks at the first update | Scales with the range |
The linked model is the whole point. Cover, color and dimension become option lists attached to one product, and the price is derived from the cover group and dimension rather than stored a thousand times. Change a collection once and every combination follows.
Productbay runs the same three-step job the rest of the furniture range needs — but tuned for the configuration and PDF reality of upholstery:
The result is a single upholstery family maintained from one source of truth: change a cover collection, and every channel updates. For the rest of the assortment — case goods, dining, lighting — see the furniture-retail overview. Productbay is built for specialist retailers running multi-supplier, multi-channel catalogs, powered by its PIM core.
Cover groups, dimension tables, price-group surcharges — all locked in a PDF. See how Productbay reads it, turns it into a linked configuration and publishes the whole upholstery family in a 30-minute walkthrough.
Get started