Resolution Layer Case Study  ·  Read & Diagnose

A direct-to-consumer
occasion-wear brand.

A full-catalog quality read across dresses, knitwear, swim and accessories — the defects a shopper meets, and the ones the warehouse does.

Scope
Full storefront catalog  ·  2,049 styles, 11,435 variants
Lead finding
A teal bridal swatch filed under the navy filter
Findings surfaced
128 analytical  ·  40 critical
Method
Zero-setup read  ·  live public catalog, no schema supplied
Vertical
DTC Women's Occasion Wear — dresses, bridal party, knitwear, swim
This pass
Read & diagnose — step one of the arc
Prepared by
EKOM
Type
Case study — client anonymized

What this is.

This is a real EKOM catalog analysis, with the retailer's identity removed. The client is a direct-to-consumer women's occasion-wear brand — dresses first, plus bridal-party pieces, knitwear, outerwear, swim, footwear and accessories, largely its own designs rather than resold brands. EKOM read the live public catalog in a single automated pass, with no login, no file handoff and no list of known problems to check against, and surfaced 128 analytical findings, 40 of them critical — the kind standard validation misses, because it checks whether a field is filled, not whether the value is right.

What makes this catalog unusually informative is that the brand encodes garment type into its own SKU prefix. That convention is a genuine discipline, and it is the reason the highest-stakes class here is detectable at all: when a code says "dress" and the product is a cardigan, the contradiction is machine-checkable. A catalog with opaque identifiers hides exactly these errors.

Product style names have been generalised, since a proprietary style name identifies the brand as surely as its logo. Everything else is verbatim — the SKU patterns, the tag values, the prices and the copy fragments are quoted exactly as they appeared.

These are machine-surfaced findings meant as a triage signal, not a verified defect list — a share will turn out to be intentional. Even so, the concentration and specificity of what surfaced is a strong read on catalog health.

What's inside

At a glance.

Where the 128 analytical findings concentrate, grouped by defect class. A separate set of structural observations describing how variant data was packed for analysis was excluded rather than reported — those describe the analysis file, not the storefront.

128
Analytical
findings
40
Critical
(31%)
113
High severity
or above
59%
Ship with a machine-
applicable fix

By defect class

Defect classCountWho feels it
Identifier integrity — codes pointing at the wrong garment29Ops & fulfilment
Missing or blank required data20Shoppers
Format, encoding & typo hygiene18Shoppers + ops
Advertised-price integrity15Shoppers + compliance
Colour identity contradictions14Shoppers
Length, fit & taxonomy facets12Shoppers
Product identity — URL, title and SKU disagree10Ops + shoppers
Internal data published in customer-facing fields5Ops
Cross-wired description copy4Shoppers
Regulated composition disclosure1Compliance
Total128
The count isn't the point. Overwhelmingly these are corrections rather than gaps — the data is present, and specific enough to be checked against itself. That is a considerably healthier starting position than a catalog with empty fields, and it is exactly why the defects that do exist are notable rather than expected.

What a shopper — and a regulator — meets first.

Live on the site, visible without any special effort, and two of the three sitting inside rules that carry statutory penalties rather than conversion penalties.

Highest-Visibility Finding  ·  Advertised-Price Integrity
A struck-through "was" price lower than the price the customer actually pays.
A novelty sweater sells at $62.00 against a reference price of $18.50. A pair of huggie hoop earrings, in both gold and silver, sells at $38.00 against $9.24 — a reference price 76% below the selling price, which is not a discount that can exist; it has the shape of a landed cost entered into a public field. Four full-price dresses each display a reference price of $89.00 against selling prices from $92.00 to $96.00. A separate group renders a strikethrough identical to the selling price, advertising a discount of exactly nothing — including a shimmer gown at $235.00 / $235.00. Others carry a reference price of $0.00, which paid channels can read as a sale price of zero rather than as "no reference price set."
Critical  ·  Regulated Disclosure
A fibre-content disclosure with the fibre missing.
A bikini bottom states its lining as "Lining: 90%, 10% Spandex" — the name of the fibre making up 90% of the lining is simply absent. Its own sibling colourways state a complete composition, "Lining 90% Polyester, 10% Spandex" or equivalent. Under the FTC's Textile Fiber Products Identification Act the generic name of each fibre present at 5% or more is a required disclosure, not a nice-to-have — and swimwear is a category where composition is also the thing a customer is genuinely trying to read.
Critical  ·  Copy Describing a Different Garment
A cream dress whose own description sells "rich green lace."
A midi dress in cream carries its dark-green sibling's copy verbatim: "Rich green lace creates a romantic, elegant look…" An ivory lace ballet flat reads "Black lace adds delicate texture and romantic detail". A black stiletto heel closes with "Versatile tan color complements warm and neutral palettes for seasonless styling." And a jean titled a straight leg is described, three separate times, as a wide leg. Colour and fit are the two things a customer cannot verify until the box arrives, which makes them the two things a description is actually load-bearing for.
How it was caught  ·  the straight-leg jean
Field
What it says
Verdict
title
Names the style a straight leg jean
✓ Straight leg
handle
URL slug contains straight-leg
✓ Straight leg
description
"leopard print wide leg pants feature a relaxed silhouette""wide leg silhouette"
✗ Wide leg
details
First bullet: "Wide leg silhouette"
✗ Wide leg

No external list to check against — just each product read against itself. The name and the URL agree on the fit; the description and the details agree on a different one. One of the two pairs is selling a garment the brand isn't shipping.

What the warehouse meets first.

The class that doesn't show up on the storefront at all. Every page here looks completely normal to the customer — right up until the wrong garment arrives, or the right one turns out to be unbuyable.

Critical  ·  Identifiers Pointing at the Wrong Garment
A pick list is only as good as the code it picks by.
The brand encodes the garment into its SKU prefix — a three-letter style code plus a two-letter type code, so WHI-CA is a cardigan and WHI-DR would be a dress. That makes a wrong prefix a fulfilment problem rather than a cosmetic one. A wide-leg jean in one wash carries SKUs that all begin PAG-PAG-NA-75866-S onward — while its own sibling wash shows the correct pattern, KIR-BO-80600-24. A midi dress carries FLO-SK-71214-S onward: another product's prefix, with SK denoting a skirt, on a dress. A smocked dress in one floral colourway runs on MON-DR-84867-XS while its sibling colourway runs on JOA-DR-66963-XS. A denim jumpsuit is worse than a wrong prefix — it holds two unrelated products inside one listing, JOD-JU-75197-XS for extra-small and DAL-SW-75020-S onward for the rest. One maxi dress splits its own size run across two families, AVE- for XS–XL and SOL- for 1X–3X, so the extended sizes of one dress are tracked as though they were a different product. And a cardigan mixes WHI-CA and WHI-DR within the single listing. Elsewhere a double-breasted coat carries AND-CO-60190-L/ — with a trailing slash that will fail a barcode scan or an API lookup outright.
Critical  ·  Colour Routing on a Group Order
A teal fabric swatch filed under the navy bridesmaid filter.
A tulle fabric swatch whose title names it teal carries the tag bridesmaid-navy. A swatch exists for exactly one reason: so a bride can confirm a colour before eight people order it. Filed under navy, it routes into the wrong filter at the precise moment a group is making a colour decision it cannot easily unwind. In the same class, one smocked maxi dress has a URL that says beige, a title that says Black, and tags reading color-black and bridesmaid-black. A pair of gold pearl earrings is tagged supp-silver while its own description confirms "sterling silver base finished in gold"; a huggie hoop carries both color-gold and color-silver on an item its copy describes as 14K gold-dipped.
Critical  ·  Size Inclusivity the Filters Cannot See
An extended size that exists in the identifier set and nowhere in the size selector.
A back-tie maxi dress lists its sizes as S | M | L — but a fourth variant exists in its identifier set, ending -XL. Running the other way, a knit dress in two colourways carries a size-xl tag with no XL variant behind it, so the XL facet leads to a dead end. And the plus-size range is systematically invisible to filtering: one dress offers 1XL | 2XL | 3XL in its size list while its tags stop at size-xl; two more hold real 1X–3X identifiers with no extended-size tag at all. For a brand that sells size inclusivity as a founding principle, this is the finding that contradicts the mission rather than the margin.

Where it traces back.

Most of what surfaces above traces to one of three structural roots.

A rename that only half-propagated

Freezing a URL after a product rename is standard, deliberate practice — it preserves inbound links and search ranking, and on its own it is not a defect. The defect is that nothing downstream holds the mapping. On several products the URL names one style, the title names a second, and the SKUs agree with the URL rather than the title — so the storefront, the feed, the analytics and customer service each believe a different product is on that page. The cases worth acting on are the ones where all three disagree, not the ones where only a colour word drifted.

Duplicate-to-launch, left live

A run of customer-facing URLs still carry the platform's duplication suffix — and several serve an entirely different garment than the URL names: one ruffle-maxi URL serves a differently-named dress in a different colour, a striped-jumpsuit URL serves a printed one, a pink tulle skirt URL serves a deep-topaz skirt. One is a raw vendor template that was never renamed at all. Duplicating a product to ship a new colourway quickly is a reasonable shortcut; leaving nine of them addressable to customers is the cost of it.

Operational data in fields the storefront publishes

Supplier and purchase-order codes sit in the tag field — MXL01765-Blue-M, RQ-HRB-90808, DES51014-GD — alongside support and testing flags: gorgias_do_not_recommend, PROCESS-TEST, and "Thesting Wide Leg", a misspelling of "testing" that shipped. Bare discount percentages are used as tags with no namespace — 25%, 40%, 60% — so a promotional state is indistinguishable from a product attribute to anything reading the feed. None of this is a mistake, exactly. These are working tools in a field that publishes onward to shopping channels and marketplaces, and the fix is a move, not a deletion.


What we held back.

Separating real defects from formatting artifacts is not a caveat on the findings — it is the difference between a triage list worth acting on and one that wastes a merchandiser's afternoon. Five observations were flagged for confirmation rather than asserted: accented characters inside SKU prefixes (correctly encoded, explicitly not mojibake, but every affected product has a plain-ASCII URL, which leaves prefix-derivation from the display name open); trailing whitespace in option names, which is real in what we read and also the single most common thing a file round-trip introduces; a broad blank-description signal whose underlying field mapping needs confirming before it becomes a number in a report — so it is deliberately never printed as one; and the hidden extended size above, which is high-value and also the shape a de-duplication step can produce. A sixth set — observations about how variant lists are packed — was excluded from the findings entirely, because a flat tag list is how the platform is designed to work.

How EKOM reads a catalog like this.

Why reading records against each other catches what a field-by-field check misses.

1
Read the live catalog
One automated pass over the brand's live public product data — no login, no file handoff, no supplied schema and no list of known issues to check against.
Full catalog coverage, classified as apparel by the profile pass on its own.
2
Read each record against itself
Compare every field on a record against every other field on it, and against its own sibling colourways — which is what surfaces a cream dress selling green lace, or a code that says dress on a cardigan.
Self-contradiction and cross-wiring patterns surfaced without external reference data.
3
Score, group, and hold back
Bind each finding to named products with a stated rationale, a confidence score and — where the correct value is derivable — a proposed fix. Then separate the format artifacts out.
128 findings, grouped into 10 classes; 59% ship with a machine-applicable fix attached.

A completeness check would have passed almost all of this catalog — nearly every field above is populated. It cannot tell that a reference price of $18.50 on a $62.00 sweater isn't a discount, or that a cardigan's identifiers describe a dress. Reading records against each other is what turns "populated" into "correct," and it is what makes the next step precise rather than a rewrite: EKOM knows exactly which records need correction, which need a decision, and which are already sound.

What this means — and what's next.

an estimated19.3%
19.3% of all online sales were expected to be returned in 2025, part of a projected $849.9 billion in total retail returns. Apparel leads every category, and the reason is structural rather than fashionable: colour, fit and size are the three things a customer cannot verify before the box arrives, so the product record is doing the work a fitting room used to do. A cream dress whose copy sells green lace, a straight-leg jean described as wide leg, an extended size that cannot be selected — each one is a return, a lost sale, or a customer who stops trusting the page.
National Retail Federation, "2025 Retail Returns Landscape"
None of this is a copywriting problem. A jean whose identifiers all belong to another product is a pick that goes out wrong, an inventory count that is wrong for two styles at once, and a customer who saw a perfectly normal product page right up until the wrong garment arrived. A swatch tagged navy on a teal fabric is a bridal party ordering the wrong colour eight times over, on the one product that exists specifically to prevent that. An extended size that exists in the identifier set and not in the size selector is revenue turned away from exactly the customer an inclusive size range was built to serve. Each looks small alone; repeated on every new drop that arrives through the same path, they compound into a standing tax on conversion, on returns, and on trust.
The pricing findings are a different category of problem and should be read that way. A struck-through reference price below the selling price is not an imperfect discount — advertised-savings claims are governed, by the FTC's pricing guidance in the United States and by the Omnibus Directive and the Consumer Protection Regulations in the European and UK markets, and a "was" price that was never the price is the specific thing those rules exist to prohibit. A fibre-content string with the fibre missing is a required disclosure that is incomplete. Zero-value reference prices can trigger disapprovals on paid shopping channels, which turns a data error into a paid-media outage. These are live, they are public, and they are the ones to move on first.
Read this as triage, not verdict. These are machine-surfaced findings bound to named products with a stated rationale and a confidence score. A share will turn out to be intentional — a frozen URL kept deliberately for search, a reference price set as an MSRP line, an internal code that means something in the warehouse. Those are the questions worth an hour of a merchandiser's time, and they are called out as questions rather than asserted as defects.

What's next.

This pass read and diagnosed. The same structural understanding powers the work that follows — turning a diagnosed catalog into one that keeps the brand's own promises everywhere it's read.

1  ·  Correct what the catalog already proves
Where a sibling colourway or a product's own title establishes the right value, the fix is deterministic rather than a rewrite — the cross-wired copy, the mislabelled variant dimension, the tag-to-variant reconciliation in both directions. Applied systematically from data already in the catalog, not one listing at a time.
2  ·  Resolve the decisions only the brand can make
Which style name is canonical after a rename, which colour is right where the URL and the title disagree, whether an equal reference price is a deliberate MSRP line, and what the internal garment codes actually mean. One answer each resolves whole classes of finding at once.
3  ·  Hold the line at intake
Keep ongoing intelligence where new product enters, so a duplicate-to-launch shortcut, a frozen URL or a reference price typed into the wrong field can't quietly reintroduce the same class as the catalog grows — rather than re-auditing it a season later.
This is how EKOM moves a catalog from insight to impact —
and keeps every listing reading right as the business grows.
EKOM
The Resolution Layer
ekom.ai
About this analysis

This is EKOM's first read of this brand's catalog. The pipeline read the live public product data in a single automated pass and compared every field on a record against the other fields on it and against its own sibling colourways, so a pattern like one product's identifiers appearing on another surfaced cleanly rather than averaging away. Every finding is bound to named products with a stated rationale and a confidence score. The findings here are that read, with the brand's identity removed and its proprietary style names generalised; all quoted values, prices, tags and identifier patterns are verbatim. Counts are a point-in-time snapshot.

Case Study  —  Client anonymized  ·  The Resolution Layer
EKOM