[ Case study ]
The catalog had accreted for eight years: duplicated attribute sets, category rules that contradicted each other, and reindex jobs that took the site's search down during business hours. Merchandisers worked around the system instead of with it.
CLIENT a mid-market industrial manufacturer — FOCUS Audit the attribute and category debt first
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.
A mid-market manufacturer of industrial components, selling through distributors and directly to large buyers, with an Adobe Commerce catalog that had accreted for eight years across product managers, agencies, and one memorable rebrand. Thirty thousand SKUs carry technical attributes — tolerances, materials, compatibility codes — that buyers filter by. Category pages drive roughly a third of revenue through search traffic. The merchandising team of three knew the workarounds better than the admin: which reindexes to avoid before lunch, which category rules to never touch.
The catalog had accreted for eight years: duplicated attribute sets, category rules that contradicted each other, and reindex jobs that took the site's search down during business hours. Merchandisers worked around the system instead of with it.
We proposed a debt-first cleanup with two guardrails fixed from day one: category URLs would never change, and the ERP's nightly feed would never break mid-window. Every attribute set and dynamic category rule would be inventoried and mapped, duplicates merged under a written naming standard, and rules consolidated before anything was deleted. Indexing would move to scheduled partial-update windows outside business hours, ending the lunchtime search outages. Every merchandising change would run behind a URL-equivalence check, so tidiness could never quietly cost a ranking.
Just as important is what we ruled out, and why:
Every attribute set and dynamic category rule was inventoried and mapped, with duplicates merged under a written naming standard before anything was deleted.
Indexers moved to a scheduled partial-update routine with cron-managed windows, ending the lunchtime search outages.
Every merchandising change ran behind a URL-equivalence check so rankings were never traded for tidiness.
Delivered by the systems pod — 2 engineers over 14 weeks, with working increments reviewed with the client every week.
Obstacle
There was no staging environment with search parity, so indexer changes could only be validated against production — exactly the system the reindexes had been taking down.
Handled: We built rehearsal protection instead: indexer changes ran in low-traffic windows behind a search proxy that could fall back to the last good index within seconds.
Obstacle
Merging duplicate attribute sets surfaced products whose history pointed at records the naming standard wanted to retire, and deleting them risked the ERP feed rejecting the rows.
Handled: Retired sets became mapped aliases for the feed rather than deleted entities, and the merge proceeded in monthly slices the ERP team verified between windows.
The headline: full catalog reindex duration, with business-hour search interruptions eliminated — 38 min → 4 min, read from Indexer logs over a 30-day window. A second check: category-page url changes across the cleanup at 0.
Merchandisers deleted their workaround spreadsheets in month two — the admin now does what the spreadsheets did. Adding a product means choosing one attribute set from a list that makes sense, and category rules can be read top to bottom by one person in an afternoon. The lunchtime search outage passed into folklore; the team schedules edits for convenience rather than fear. The ERP manager, initially protective of the feed, now requests catalog changes through the same mapping documents we left behind.
The result was read from Indexer logs over a 30-day window against the pre-engagement baseline over the stated window, with a guardrail check on category-page url changes across the cleanup. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would have built the staging search parity first — we validated index changes against production because there was nowhere safe to rehearse.
[ Related service ]
[ Related builds ]
3.1% 4.6%Checkout conversion rate, the two months after cutover versus the two months before, like-for-like traffic
−87% 0Gift-checkout failure reports, in the two gift seasons after launch versus the two before
[ Next step ]
Next case study