Two full-catalog reads, one month apart — what the first found, what the brand did with it, and what a blind second pass found underneath.
This is a real EKOM catalog analysis, with the brand's identity removed. The client is a sleepwear and loungewear brand — pajama sets, robes, sleep shirts, and a large print-driven seasonal range, sold direct through its own storefront. EKOM ran a full-catalog quality read with no schema supplied and surfaced eleven analytical findings, ten of which are real, actionable catalog issues. The eleventh was checked, disproved, and removed.
Then something happened that makes this case study different from the others: the brand read the report and acted on it. A month later EKOM ran the catalog again — deliberately blind, with the pipeline told nothing about the first pass or about any remediation — and compared the two afterwards by hand. That second read is what most of this document is about.
Where the first read's findings landed a month later.
| Finding from the first read | Type | A month later |
|---|---|---|
| A hoodie and a cardigan typed as generic long-sleeve tops | Defined change | Fixed |
| Sets typed with a singular where the standard is plural | Defined change | Fixed |
| A permanent URL contradicting its own product | Defined change | Fixed |
| Cross-sell tags pointing at the companion top | Defined change | Fixed |
| Color facets fragmented by capitalization | Defined change | Still open |
| A legal disclaimer stored as a selectable option | Defined change | Still open |
| A gifting range carrying no product type | Brand's call | Still open |
| Internal style codes used as permanent URLs | Brand's call | Still open |
| A one-size variant in a fitted size run | Brand's call | Retired |
Each of these is invisible on the product page and fatal to the collection page.
Several sets are typed with a singular where the catalog standard is plural — the difference between one letter and none. Storefront collection rules match exactly, so each of those products drops silently out of the collection it belongs to, and out of every filter built on that collection. This was the single most-affected field in the catalog.
Newer items publish color values in capitals; legacy and sale items use mixed case. The same hue therefore appears twice in a color filter, as two separate entries each holding roughly half the inventory. A shopper who picks one sees half of what exists and reasonably concludes that is all there is. Nobody complains about this, because a shopper who can't find something doesn't file a ticket — she just buys less.
One garment is published at a handle describing a different garment type entirely, while its title, product type, and description all agree on what it actually is. Handles are permanent, indexed, linked, and shared — the one field that cannot be quietly corrected later without a redirect, and the longer it sits indexed under the wrong garment the more it costs to change.
Not carelessness — a catalog that has been maintained for years, by people who improved their conventions and never went back to update what came before.
The capitalization split in the color facet is not a typo. It is a dividing line in time: items published recently follow one convention, older and sale items follow the one it replaced. Both are internally consistent. Neither is wrong on its own. Together they fragment every affected color into two half-empty filter entries — and the same shape repeats in the product-type drift, where the dominant plural form coexists with a handful of singular survivors.
A subset of items use internal style codes as their permanent handle, where the rest of the catalog uses descriptive slugs. This is almost certainly the older standard left in place. It is flagged at medium rather than high severity for one honest reason: the fix is easy, but the decision isn't, because rewriting a handle that already ranks can cost more than leaving it alone. That is a call worth making deliberately rather than in a bulk pass.
Two bottoms carry the grouping tag belonging to their companion top — the tag that drives the "complete the set" recommendation. The pattern used for every comparable pair in the range is correct; these two are not, so they surface incorrectly in the exact feature that exists to build the outfit. This is what convention drift looks like at the point of data entry rather than at the point of a standard changing.
One product stores a full legal disclaimer as a selectable option value — it renders as an unusable dropdown choice and lands in any index that reads option values. Another offers a one-size variant alongside a standard fitted size run, inconsistent with every comparable garment. Both are the kind of thing that happens once, works well enough not to be noticed, and stays.
The second read was run blind — the pipeline was told nothing about the first pass, and nothing about remediation having occurred. The comparison was made afterwards, by hand.
On the singular/plural drift, EKOM had advised aligning the handful of singular outliers up to the dominant plural. The brand did the opposite: normalized the entire catalog down to the singular. Every surviving product of both affected types was retyped — not a sample, not a drift, a deliberate bulk change. The storefront collections were updated alongside it, and nothing dropped out.
That is a better outcome than compliance would have been: a team that applies a specified change in the direction suiting their own conventions has understood the finding rather than executed it. The forward consequence is the part worth carrying — the plural forms no longer exist anywhere, so any collection rule, feed mapping or partner integration still written against them now matches nothing, silently. Storefront collections were updated; anything downstream that wasn't is where to look.
On every headline measure, the color-capitalization problem looked substantially improved between the two reads: fewer mixed-case values, a smaller share of the catalog affected. The first draft of the second report said exactly that — a partial fix, underway.
It was not a fix at all. The products carrying that defect were mostly legacy and sale stock, which is precisely the inventory a seasonal catalog retires by itself. Of the affected products still published, not one had been corrected. The class shrank because the range turned over, and the fragmentation that remains is not a residue being worked through — it is the whole original defect, on every product that survived.
Every verdict on page three is therefore decided the same way: on surviving products only, matched on stable identifiers rather than URLs — a URL-keyed comparison scores a successful rename as a deletion. It cuts both ways; the same test is what makes the singular/plural verdict safe to state strongly.
The first read saw the product feed. The second also captured the product pages themselves, and went back through the feed at the level of individual variants rather than whole products. A different layer came out.
Every product page publishes a machine-readable summary alongside itself — the block that rich results, shopping feeds and AI shopping assistants read. Measured across the full capture, it carries price, availability, barcode, shipping terms, size and color, and no material, no pattern, no category and no weight: those properties are populated nowhere in it. For a brand whose product is print and fabric, the systems increasingly mediating discovery can read what a garment costs and whether it's in stock, and nothing about what it actually is.
This is the finding that reframed the rest. The brand publishes thorough garment specification on its product pages: composition, care, country of origin, style number, detail bullets, at better than 97% coverage on every one of those fields. It lives in storefront metafields, which the product data feed does not expose at all. So the facts a machine consumer needs already exist, fully maintained, one mapping away from the place anything downstream would look for them. That is a far cheaper problem than creating the content — and it was invisible to an instrument reading only the feed.
A seasonal-weight filter tag missing a single letter, so the garments carrying it are dropped from that filter without an error anywhere. Physical garments recorded with a shipping weight of zero. Composition strings that run two fiber percentages together without the separating comma, so nothing downstream can split the components. A product whose every image references a different style's asset code. Each is one field on a handful of records, and each is the kind of thing a sampled check averages away.
This is normally the part that stays inside the building. It is here because it is the most useful thing in this case study about how EKOM works — and because it has now happened twice, in two consecutive reports on the same catalog.
Two passes in, the shape of the work is clear. Diagnosis is the cheap part. What a catalog on this cadence actually needs is a standard that holds between drops.
Two full-catalog reads of the same brand, one month apart. Both were auto-profiled with no schema and no manual setup, and both read the full live catalog rather than a sample. The second was run blind — the pipeline received the data and nothing else, no prior findings and no hint that remediation had occurred — and the comparison was made afterwards by hand, scored only on products present in both reads. One high-severity pattern from the first read was checked against live variant records, disproved and excluded; one characterization in the first report was corrected in the second. The findings here are what remained, with the brand's identity removed.