Part 1 of 3 — The Problem
Walmart, Costco, and UNFI are not asking about the same product.
The same jar of Calabrian Chili Marinara maps to three different GTINs, at three different packaging levels, across three different item setup forms. A flat product spreadsheet cannot represent this. Most specialty food brands discover that gap during their first retailer rejection.
| Field | Value |
|---|---|
| GTIN / UPC | 0074000090 |
| Unit of Measure | EA |
| MSRP | $12.50 |
| Unit Weight | 1.25 lbs |
| Unit Length | Missing |
| Unit Width | Missing |
| Unit Height | Missing |
Item setup keys on the consumer unit. The each is the sellable item.
| Field | Value |
|---|---|
| Case GTIN-14 | 00850074000090 |
| Case Pack Qty | 24 units |
| Vendor Number | — |
| Case Weight | Missing |
| Case Length | Missing |
| Case Width | Missing |
| Warehouse Price | — |
The selling unit is the bulk case. Costco's GTIN is the case GTIN-14, not the each.
| Field | Value |
|---|---|
| Case GTIN-14 | 00850074000090 |
| Case Pack Qty | 24 units |
| Shipped Weight | Missing |
| Shipped Length | Missing |
| Shipped Width | Missing |
| FOB Price | — |
| Inner Pack GTIN | Not assigned |
Distributors require the full case hierarchy. The EDI 832 transaction asks for both the case GTIN and shipped dimensions.
Same product. Three different GTINs. Three different levels. A flat spreadsheet cannot represent this.
Part 2 of 3 — The Model
Here is the model that prevents this.
One SKU — CHP-0009 — walked from brand through each, inner, case, and pallet. A GTIN assigned at every level that carries one. The attribute set each retailer demands, mapped to the entity that owns it.
Consumer unit. Walmart and most grocery retailers key item setup on this GTIN.
Shelf-replenishment grouping. Not a GS1 trade item — no GTIN required at this level.
case_weight_lbs, case_length_in, case_width_in, case_height_in are NULL for CHP-0009 in the live platform. This is the gap the model in Part 2 closes.
The leading digit of the GTIN-14 (0 in 00850074000090) is a zero-padding convention this brand chose — not a GS1 semantic indicator. GS1 assigns no standardized meaning to indicator digits 1–8.
Shipped unit. Costco's saleable unit; UNFI's EDI 832 keys on this GTIN.
An SSCC tracks the shipment, not a trade item. A pallet carries a GTIN-14 only if it is a standardized orderable unit.
GTIN values are illustrative examples for CHP-0009. Verify against your GS1 Company Database record before publishing to any retailer portal.
The case row states the problem plainly: the shipped dimensions are NULL. Costco and UNFI both require them. The model below assigns responsibility for filling them — one entity per obligation, one source of truth per field.
Annotated view — key columns per entity, with the data gap that drives each "what breaks" callout. CHP-0009 today: seven dimension fields are NULL.
Each entity carries an obligation
What every node in the diagram is accountable for — and what breaks without it.
| Entity | Key Columns | Who Uses It | What Breaks Without It |
|---|---|---|---|
dim_products | skuproduct_namebrandcase_pack_qtymsrp | All retailer item setup forms; Shopify sync; ERP anchor | No canonical SKU list. Every satellite table loses its anchor. Product identity is tribal knowledge. |
dim_packaging_levels | skupackaging_levelquantity_per_levellevel_weight_lbslevel_length_inlevel_width_inlevel_height_in | Retailer item setup forms; 1WorldSync syndication; warehouse receiving | Dimension fields filled by archaeology. case_weight_lbs and shipped dimensions stay NULL — as they are for CHP-0009 today. Every retailer launch rediscovers the gap. Dimension & Weight Integrity ↗ |
dim_gtin_assignments | skupackaging_levelgtingtin_typeindicator_digit | Walmart (each GTIN); Costco (case GTIN); UNFI EDI 832; GS1 registry; 1WorldSync | Each retailer re-derives the correct GTIN level from the wrong source. Item setup rejected. $458K/yr in chargeback exposure attributable to data-quality defects. Product Data Health Audit ↗ |
dim_retailer_attributes | skuretailerattribute_keyattribute_valueattribute_source | Walmart Supplier Center; Costco Portal; UNFI Portal; compliance teams | Retailer-specific attribute requirements stored in tribal knowledge. Attribute drift between retailers goes undetected until a rejection. Item Setup Pre-flight ↗ |
syndication_targets | target_nameprotocolendpointlast_synced_at | 1WorldSync / GDSN pipeline; EDI 832 outbound | No record of where product data was sent. Syndication drift between the GS1 registry and retailer portals is invisible to the brand. |
retailer_portals | retailerportal_namegtin_level_requiredattribute_required | Item setup workflow; new retailer onboarding checklist | Portal-specific GTIN-level requirements and attribute lists re-derived per launch. Each onboarding re-teaches the team what Walmart needs versus what Costco needs. Item Setup Pre-flight ↗ |
Part 3 of 3 — The Evidence
This isn't a whiteboard diagram — it runs.
The model is documented in four Postgres tables. The lineage runs in dbt.
The figures on this page are validated against live Postgres data by
check_canonical.py before every release.
check_canonical.py Validates all published figures against live Postgres before any release. Run in the Cinderhaven platform repo. Annual chargeback exposure at Cinderhaven scale
$458K/yr
Established by the Product Data Health Audit across 50 SKUs and 6 retailers. Attributable to data-quality defects — missing GTINs, NULL dimensions, mismatched case configurations.
The onboarding cost
Each retailer launch delayed by an item-setup rejection adds 4–8 weeks of deferred shelf revenue. At a $15M–$25M brand, that is not a rounding error — it is a cash-flow event. The product master model is the document that prevents the rejection.
This piece is part of the Cinderhaven diagnostic series
Canonical figures as of CINDERHAVEN_CANONICAL.md last verified 2026-06-08.
50 SKUs · 6 retailers · 3 distributors + DTC · $32.8M scan revenue.