All posts
Ray Iyer
Ray Iyer
Co-founder, Anglera

The one-day attribute audit before you trust any planning report

A one-day audit for fill rate, cardinality, consistency, and staleness before you trust any attribute-driven forecast or assortment report.

The one-day attribute audit before you trust any planning report

A planner opens Monday's assortment report and sees demand for "moisture-wicking" tees running 22 percent below plan. Before anyone reacts, someone should ask a duller question first: how many SKUs in that rollup actually have a populated, correctly-tagged fabric attribute, and how many are hiding under "N/A," a typo, or a value nobody's touched since a 2022 catalog migration? Most planning teams never ask. They build the report, trust the axis, and move on. That's how a data problem becomes a business decision.

The fix isn't a data governance program. It's a one-day audit, run before you build (or re-trust) any planning report that aggregates by attribute — color family, fabric, fit, category tree, size curve, whatever dimension the model slices on. Master data management exists precisely because flawed master data misleads analytics — the classic example is a system that reads "Rice 50kg," "50kg Rice," and "Rce 50kg" as three different items and quietly understates real demand for all of them. Attribute fields have the same failure mode, just less visible because nobody eyeballs them SKU by SKU.

Why "mostly complete" isn't the bar

The instinct is to check fill rate and stop there. That's the trap. A field can be 98 percent populated and still be useless for forecasting if a third of those populated values are wrong, stale, or defined three different ways across categories. Data quality frameworks generally separate completeness from accuracy for exactly this reason — they measure different failure modes, and a report can pass one while failing the other completely.

Quadrant: fill rate versus accuracy, where high fill with low accuracy is the 95-percent-complete trap

The bottom-right quadrant is where most retail and distribution catalogs actually live: fields that look done in a completeness dashboard because someone bulk-filled a default value, a copy-paste from a similar SKU, or a legacy code nobody remapped. High fill rate, low accuracy. It passes every audit that only checks for blanks.

Five checks, one day

None of these require a data science team. They require someone willing to pull a sample, run a pivot table, and look at pictures next to text for twenty minutes. Here's the sequence, in the order that catches the most damage first.

CheckWhat it catchesHow to run it
Fill rate by category and season-cohortBlind spots that hide inside a healthy overall average — new categories, discontinued seasons, recently onboarded vendorsPivot fill percentage by category and by launch season, not just overall; a 92 percent global fill rate can mask a 40 percent fill rate in this season's new-vendor SKUs
Value cardinalityFree-text explosion — "Navy," "navy blue," "NVY," "Navy/Blk" all meaning one colorCount distinct values per attribute; if a bounded field like color or fit has hundreds of unique strings for what should be a controlled list of 20-30, it's not usable as a grouping key
Cross-source consistencyText that contradicts the product itselfSample 30-50 SKUs, pull the primary image or tech pack, and check whether the attribute value matches what's actually shown — sleeve length, closure type, material, silhouette
StalenessValues frozen at first entry and never revisited as the product or its data source changedCheck the last-modified timestamp on the attribute field, not the record; a SKU touched last week for a price change can still carry an attribute value nobody has reviewed in three years
Definition drift across categoriesThe same attribute name meaning different things in different category trees, corrupting any cross-category rollupPull the attribute's allowed values or format for each category branch and diff them; "sleeve length" measured in inches in one taxonomy branch and as a size code in another will break any forecast that sums across both

Cardinality is the one planners underestimate most. A model treats every distinct string as a separate bucket unless something normalizes it first, so 40 spellings of the same color don't dilute the "navy" signal, they erase it — the demand history splits 40 ways and every bucket looks thin. The forecast doesn't fail loudly. It just quietly under-forecasts the color that actually sells.

Where the line is

Not every gap needs a project. The judgment call is whether an attribute is safe to aggregate on as-is, or needs enrichment before it goes near a planning model.

SignalSafe to aggregateEnrich first
Fill rate (worst cohort, not average)Above roughly 90 percent in every category-season slice you plan to report onAny slice materially below that, especially new launches or recent vendor additions
Cardinality vs. expected value setDistinct values within roughly 1.5x the controlled list sizeDistinct values several multiples of the controlled list — a sign of free text standing in for a dropdown
Cross-source match rate on sample90 percent-plus of sampled SKUs match imagery/specMeaningful mismatch on a 30-50 SKU sample, which almost always generalizes
StalenessAttribute touched within the last major catalog or PIM syncLast touched before a system migration, vendor change, or category rename
Definition consistencySame field, same format, same allowed values across every category branch in the rollupField means different things (units, granularity) depending on category

If two or more of these fail on the attribute your forecast leans on hardest, that's not a report to ship yet. It's a backfill project, and a bounded one — a single attribute across an existing catalog is a matter of days, not a quarter, once the source documents and images already exist to extract from.

Making the audit continuous

The honest problem with a one-day audit is that it's a snapshot. New SKUs onboard, vendors send inconsistent spec sheets, someone bulk-edits a field in the PIM without checking format, and the catalog drifts again within a quarter. Running this manually as an annual project means planning teams spend eleven months trusting numbers built on data nobody's re-checked since January.

This is the part that should be automated rather than calendared. Anglera sits on top of whatever PIM, MDM, or flat-file catalog a retailer or distributor already runs and continuously extracts, normalizes, and quality-scores attributes against the source documents, images, and reviews behind them — flagging conflicts instead of silently overwriting, and surfacing fill rate, cardinality, and staleness by category as an ongoing signal rather than a once-a-year fire drill. Your PIM still stores the data. The audit just never has to wait for someone to remember to run it.

Ray Iyer

About the author

Ray IyerCo-founder, Anglera

Ray is a co-founder of Anglera, building the product-data infrastructure for agentic commerce — turning messy catalogs into structured, AI-readable data that buyers and answer engines can find. Previously product at Uber; Stanford CS.

See it on your own SKUs.

A 30-minute walkthrough on your categories and your supplier data.

Book a demo