[ Case study ]
Supplier catalogs arrived as PDFs and spreadsheets with incompatible structures. Enriching the store's 8,000 products — dimensions, materials, care, compatibility — was a two-person-quarter job that never happened, and incomplete listings demonstrably didn't sell.
CLIENT a specialty online retailer — FOCUS Normalize supplier formats into one schema
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
Eight thousand products across a specialist catalogue, each one expected to carry dimensions, materials, care instructions, and compatibility notes that suppliers publish inconsistently or not at all. The retailer's merchandising is one experienced person with strong opinions about accuracy, and the suppliers — dozens of them — send catalogs as PDFs and spreadsheets in structures that change mid-season. The store platform is stable and loved; the data feeding it is the problem, and everyone knows exactly which listings sell badly because their spec fields are empty.
Supplier catalogs arrived as PDFs and spreadsheets with incompatible structures. Enriching the store's 8,000 products — dimensions, materials, care, compatibility — was a two-person-quarter job that never happened, and incomplete listings demonstrably didn't sell.
We proposed an extraction pipeline that maps each supplier's format — however arrived — into the store's product schema, flags every conflict with existing data into a review queue, and merges only what the merchandiser approves. Nothing overwrites silently, and re-runs are idempotent so mid-season supplier updates can arrive as often as they like. The design accepts the PDFs suppliers actually send instead of wishing for structured feeds, because two suppliers would have complied and thirty wouldn't. Accuracy beats completeness: a field left empty costs a sale, a field filled wrongly costs a return and a complaint.
Just as important is what we ruled out, and why:
Each supplier format got an extraction mapping into the store's product schema, with per-supplier quirks documented as code, not tribal knowledge.
Where the AI's extraction disagrees with existing data, the record goes to a review queue — the system never silently overwrites the merchandiser's decisions.
Seasonal re-syncs merge by product identifier with a change log, so running twice never doubles anything.
Delivered by the systems pod — engineer + automation specialist over 8 weeks, with working increments reviewed with the client every week.
Obstacle
The first full run flooded the review queue — not because extraction was wrong, but because years of existing catalog data were wrong, and the pipeline correctly flagged every clash.
Handled: We triaged the queue by bestselling SKUs, let the merchandiser set per-field trust rules for categories she knew were sound, and worked the remainder down over two weeks.
Obstacle
Two suppliers shipped their mid-season catalog updates with new column names and no changelog, which the first design would have merged as new attributes.
Handled: Format checks now diff every supplier file against its last version, and unmapped columns hold the record in review instead of inventing fields.
The headline: products with complete specification data, over the 8-week enrichment run — 38% → 91%, read from Catalog completeness report. A second check: specification-related return reasons, next quarter at −22%.
The merchandiser describes her job differently: she curates instead of excavating. Complete listings stopped being a seasonal aspiration and became the default state of the catalogue, and the returns ledger stopped adding the same dimension-and-material complaints every season — a cost the finance side stopped carrying before anyone said it aloud. The returns conversation with customers changed shape too, from apologizing for guesses to answering questions the listings now preempt. When she is on holiday, the queue holds without her, which the previous two enrichment attempts never managed.
The result was read from Catalog completeness report against the pre-engagement baseline over the stated window, with a guardrail check on specification-related return reasons, next quarter. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would have started with the ten best-selling categories — completeness gains there move revenue first, and we learned that from the queue analytics.
[ Related service ]
[ Related builds ]
45 min 4 minAverage handling time per invoice batch (human review only), measured over the first full month
44% 71%Tier-1 tickets resolved without human touch, month two post-launch versus month before
[ Next step ]
Next case study