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.

Walmart Item Setup (Retail Link)
Consumer Unit (UPC-12) 0074000090
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.

Costco Item Setup (Supplier Portal)
Case GTIN-14 00850074000090
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.

UNFI EDI 832 Item Setup
Case GTIN-14 (EDI) 00850074000090
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.

CHP-0009 Calabrian Chili Marinara — one SKU, four packaging levels
Each GTIN-12
0074000090
1 unit · $12.50 MSRP

Consumer unit. Walmart and most grocery retailers key item setup on this GTIN.

Inner Pack No GTIN
Not assigned
6 units

Shelf-replenishment grouping. Not a GS1 trade item — no GTIN required at this level.

Case GTIN-14
00850074000090
24 units
Dimensions: Missing

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.

Pallet SSCC
Logistics ID
40 cases

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.

↓ Download SVG
Rendering diagram…

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.

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.

Canonical figures as of CINDERHAVEN_CANONICAL.md last verified 2026-06-08. 50 SKUs · 6 retailers · 3 distributors + DTC · $32.8M scan revenue.