A multi-lens data-quality read of the catalog — and where it leads.
This is a real EKOM catalog analysis, with the brand's identity removed. The client is a fashion footwear and apparel brand selling direct to consumers — women's and men's footwear, a substantial clothing line, and accessories, all under names it owns rather than resells. EKOM ran a full-catalog quality read with no schema supplied and surfaced 40 flagged items — 34 of which are real, actionable catalog issues, the kind standard validation misses, because it checks whether a field is filled, not whether the value is right.
Third-party brand and model names are kept as they appeared; only the brand's own identity, product names and asset paths have been removed. Where a defect is best shown by the broken value itself, that value is quoted verbatim.
Where the 34 actionable findings concentrate, by theme.
| Theme | Count | Who feels it |
|---|---|---|
| Wrong-product imagery | 6 | Shoppers |
| Specification typos | 4 | Shoppers |
| Tag token hygiene | 4 | Shoppers + ops |
| Measurement mislabels | 3 | Shoppers |
| Brand & vendor fragmentation | 3 | Ops + brand partners |
| Size picker integrity | 3 | Shoppers |
| Color value integrity | 2 | Shoppers |
| Fiber & material claims | 2 | Shoppers + compliance |
| Product type misassignment | 2 | Ops |
| Collection routing | 1 | Shoppers |
| Bundle structure | 1 | Shoppers + ops |
| Copy contradiction | 1 | Shoppers |
| Color & rebrand drift | 1 | Shoppers |
| URL & handle integrity | 1 | Ops |
The critical findings, in the order a customer meets them.
The evidence is a filename naming another style, inside a catalog where the convention otherwise holds. That is strong — but a filename can survive a re-shoot or a rename, so it is not proof of what renders on the page. EKOM flags it and says so rather than asserting it, and the report recommends a human open the affected pages before anything else happens. Naming the limit is what lets the rest of the language be blunt.
Both colorways of one dress state their composition as 55% rayon 45% rayon — the same fiber named twice at two different percentages, which cannot describe any garment. Almost certainly a copy-paste that overwrote a second material. Fiber content is federally required to be accurate on US apparel; whether a facially impossible declaration crosses a line is a question for counsel, but it is not one to leave sitting on a live page, and it travels to every channel the record reaches.
Two leather colorways of the same style open their specifications with Suede upper material, while their own sibling colorway correctly states Leather upper material. The product name promises one material and the spec on the same page states another. The sibling is the tell: this is a data error, not a product difference — and the resolution arrives after delivery, as a return.
The remaining critical findings — defects that keep a live, in-stock product from being found, filtered or bought.
Two styles carry the color value BLACK LEAT instead of BLACK LEATHER — both with the standard black-leather color code, confirming what was intended. A truncated value does not match the facet it belongs to, so the product drops out of color filtering entirely. A third style carries SNAKE MULTI | SNAKE MUL, two pipe-separated values where there should be one, which the storefront renders as a second, non-existent color option: a swatch on the page that leads nowhere.
One men's dress loafer — men's tags, men's sizing 7 through 13 — has its product_type set to Women's Shoes, where every other men's style uses Men's Shoes. The field appears to have been populated from a tag value by accident. The page exists and works if a customer lands on it; it simply never appears in the collection a customer would browse to find it. Live and invisible at the same time.
The bundle products use the full product-and-colorway string as the option axis name — <STYLE COLORWAY> (Size) — instead of a proper axis label, with the size ladder jammed into the values of that same axis and no second axis defined. Every bundle also has an empty compare_at_price. This is functional, not cosmetic: the size picker cannot render as its own selector, and with no compare-at price a bundle cannot show the saving that is the entire reason it exists.
A single structural property of the catalog explains an entire class of the findings above.
The busiest defect surface in this catalog is the specification field. It is where heel heights, shaft measurements, upper material, lining, sole and country of origin all live. And they all live there as one run-on string of free text, separated by pipes. Here is one, verbatim: 1 inch heel height | 13.25 inch shaft circumference | 4 inch shaft circumference | Suede upper material | Textile lining | Textile sock | Rubber sole | Imported — a boot whose shaft is measured around twice and along never.
Because it is prose, nothing can validate it. A heel height cannot be range-checked. A material cannot be cross-checked against the product name. A duplicate label cannot be caught. That is precisely why heel eight, heel heigh, heihgt, circumfernce, two conflicting heel heights on a platform shoe, two conflicting shaft circumferences on a boot, a bag measured 4.5in H x 9.5in W x 3.25in H, and suede specs on leather shoes all survived into the live catalog. They are not eight unrelated mistakes. They are one unstructured field, eight times.
The word Imported is carrying that disclosure at the tail of a prose field, where nothing can assert it, audit it, or vary it by product. Structuring the specification field does not just fix today's list — it closes the class, and it gives the brand somewhere to put an origin claim that can actually be checked.
Two other fields show the shape at lower stakes. The brand's own name is stored three ways in the vendor field — all-caps, spaced, and camel-cased — and because that field is case-sensitive, one brand becomes three buckets across collections, filters and reporting. In the tag field, a single stray space after a colon puts six women's styles outside every collection rule that matches the correct token exactly; elsewhere a color tag written COLOR_BLACK instead of Color:Black excludes an item from black merchandising, and a stray style-group tag pulls a denim crop top into a shoe style-switcher.
Six of the 40 flagged items came from a heuristic layer that flags any column holding more than one kind of information — and on review, not all of them are the brand's. Four are withdrawn outright. The other two are real, and are kept below as structural recommendations rather than counted as defects. None of the six sits inside the 34. Calling that out here, plainly, is part of keeping this analysis honest.
| Flagged field | Verdict | Why it isn't reported |
|---|---|---|
| option2_values | Withdrawn | The size ladder reads as one joined cell only because EKOM collapsed variants into a single record per style for this analysis. In the live catalog these are separate variant records. Nothing is wrong on the brand's side — and the tell is in the finding itself, which "splits" one column into exactly one child, a no-op. |
| tags | Withdrawn | Tags are natively a multi-value list; joining them into one cell was EKOM's own serialization. The taxonomy problems inside tags are real and are reported — the non-atomicity is not. |
| product_url | Withdrawn | Not a defect in any sense. A URL is supposed to be one string. |
| option1_name | Folded in | The condition detected here is the bundle option-axis breakage already reported as critical. It is a defect on specific bundle products, not a catalog-wide property, and counting it twice would inflate the total. |
| details | Kept | Genuine structure on the brand's side — the specification field, and the origin of most of the spec defects in this analysis. |
| title | Kept | Genuine naming convention on the brand's side: style name and color/material packed into one string. |
No file handoff, no credentials, no integration — and no manual tuning at any step.
A sampled spot-check would have caught some of this and missed the most valuable part. The wrong-image findings are only detectable because the engine first learned what the brand's filenames normally look like and then read enough of the catalog to know that this style is the exception rather than the rule. Convention-relative defects are invisible to a sample by definition — there is nothing to compare against. Reading in full is what makes the next step precise: EKOM knows exactly which records need correction and which are already sound.
EKOM's first read of this brand's catalog. The pipeline profiled it with no schema and no manual setup, then read the catalog in full rather than sampling. The findings here are that read, with the brand's identity, product names and asset paths removed. Four of the 40 flagged items were withdrawn on review; two more are kept as structural recommendations rather than counted as defects.
This pass read and diagnosed. The same structural understanding powers the work that follows — turning a diagnosed catalog into one that reads right everywhere it's seen.