Data Requirements per Feed Type
Track 1 - Foundations · Module 1.2
Fresh analyst
Course home
Learning ObjectivesModule 1.2 · ~30 min
Name all 14 data feed types the program tracks, what each represents, and its usual source.
Assign the correct data status to a readiness scenario, including the three off-ramps.
Explain the sign-off gate mechanic: all feeds Validated leads to the Data sign-off, and Design + Data sign-offs together start the 8-week Build clock.
The 14 feed types

Every cell's Data sheet tracks the same 14 feed types (the list is derived from tbl_DataTypes on the Control sheet - never hard-coded). Learn them as a checklist; a cell cannot reach Data sign-off until every one of them is resolved:

FeedWhat it isUsual source
salesOffline sell-out value, volume and units - the model's target comes from hereNielsen retail measurement
kantar_salesPanel sales for retailer sets outside the Nielsen universe - the hard and soft discountersKantar panel
ecomm_salesE-commerce platform sales, modelled as its own separate readClient / retail-platform extracts
distributionDistribution series - the program models on TDP (Total Distribution Points)Nielsen
promotionPromo decomposition: promo TDP, promo price (or trade spends where available)Nielsen; trade spends in-house
competition_salesCompetitor value/volume for the top 5-6 category playersSame syndicated source as own sales
traditional_mediaTV, OOH, print, radio, cinema - spends plus GRPs/impressionsMedia agency (Mindshare)
digital_mediaDigital video, display, paid social, search, streaming audio - spends plus impressionsAgency and publisher exports
boosted_influencerInfluencer activity amplified with paid boostingAgency / publisher
organic_influencerInfluencer activity with purely organic viewsPublisher / in-house tracking
ecomm_mediaRetail-platform display and search media, tagged against e-com salesRetail platforms / agency
competition_mediaAggregated competitor media spends per channelSyndicated ad-intelligence trackers
bgsBrand-health tracker carrying the MDS pillars (Meaningful, Differentiation, Salience) that feed the long-term modelKantar branded (BTS) data
macroMacro-economic series: CPI, household income, consumer confidence, GDP, unemploymentPublic statistical sources
The lifecycle and its off-ramps

Each feed carries one status from tbl_DataStatus. The happy path is Pending → Received → Validated, and the gap between the last two is where the real work sits: Received means a file landed; Validated means it survived the checks - right granularity, full history, consistent hierarchy (sub-brands re-sum to brand), no unexplained gaps or duplicates. A feed can sit at Received for weeks while issues are chased.

Three off-ramps exist, and they mean different things:

  • Granularity Issue - data exists but at the wrong grain for this cell's read. The recurring example: brand-health (bgs) data is captured at brand level only and gets duplicated across sub-brands and variants. A one-year-old variant cannot really be "salient", but it inherits the brand's salience because that is the only brand-health repository there is. The client is informed and it goes in the caveats - but if the cell's read depends on sub-brand granularity that does not exist, the feed is flagged here.
  • Blocked - data should exist but cannot be obtained: an access request stuck with a data owner, an agency that has not responded, a licensing gap.
  • Not in Scope - a deliberate scoping decision that this cell does not need the feed. This is a recorded call, not a shrug.
Granularity recurs as a blocker because sources capture data at the level economics allow, not the level the client question sits at. Always check grain against the cell's read level on day one - it is the cheapest possible time to find out.
Validation judgement calls you will actually face

Nielsen vs Kantar

Nielsen carries the overwhelming majority of sales coverage - roughly 98% Nielsen to ~2% Kantar in a typical market. Kantar's genuine contribution is the hard and soft discounter retailer sets that sit outside the Nielsen universe; they are summed together, never modelled separately. The judgement call: if the Kantar share is negligible, do not merge it - tell the client it adds difficulty rather than value and run on Nielsen alone. Merging tiny panel volumes into a census-scale read buys noise, not accuracy.

The TDP decomposition check

The distribution feed arrives as three series, and they must reconcile: Total TDP = Promo TDP + Non-Promo TDP. If the identity fails, the promo decomposition downstream (promo TDP index, promo price index) is built on sand - the feed stays at Received until the source explains the gap.

The e-commerce overlap trap

In markets where retailers run their own online and click-and-collect operations (the UK and US, for instance), the offline Nielsen read already contains e-commerce sales. You cannot add ecomm_sales to sales to get total brand sales - that double counts. The prescription is structural: a separate offline read and a separate e-com read, each with its own media tagged against it, never additive. This is why ecomm_sales and ecomm_media are their own feeds rather than columns in the main ones.

The sign-off gate

Data readiness is not an ambient state - it is a gate. When every one of the 14 feeds reaches Validated (or is formally parked at Not in Scope), the cell earns its Data sign-off. Alongside it sits the Design sign-off - agreement on scope, model granularity and competitor set. Only when both sign-offs are in place does the committed 8-week Build clock start. That is the whole point of the gate: the build window is a promise, and the program refuses to start the clock on a cell whose data can still surprise it. Chasing feeds happens in Preparation, on a variable timeline, precisely so the Build phase does not absorb the risk.

Check Yourself
The brand-health tracker arrives on time - but it is brand-level only, and this cell's read is at sub-brand level. Status for bgs?
Why: this is the canonical granularity case from the KT sessions - BTS/brand-health exists only at brand level and misleads when duplicated onto variants. It is not Blocked (nobody is withholding anything); the right grain simply is not collected.
The e-com media export needs a platform access grant; the request has sat with the client's data team for three weeks. Status for ecomm_media?
Why: Pending is the neutral waiting state; Blocked is the flag that makes the obstacle visible and chase-able. De-scoping a feed to dodge an access problem would silently change the cell's design.
Kantar's discounter coverage turns out to be ~0.3% of category volume; the team and client agree to run the cell on Nielsen alone. Status for kantar_sales?
Why: the negligible-share rule: when Kantar adds almost nothing, merging it makes the read harder, not better. That is a deliberate, client-agreed scoping call - exactly what Not in Scope exists to record. Validated would falsely claim the data passed checks and feeds the model.
The distribution file lands, but Promo TDP + Non-Promo TDP does not sum to Total TDP for eleven weeks. Status for distribution?
Why: Received vs Validated is exactly this distinction. The TDP identity is a validation check; until it reconciles, the promo decomposition downstream cannot be trusted, so the feed cannot be stamped Validated - but nothing is blocking receipt.
Sources
Authored from:
  • Root MASTER_SCHEMA.md: Data sheet section (14 feed types from tbl_DataTypes, tbl_DataStatus lifecycle and off-ramps), Delivery sheet section (Design + Data sign-offs, 8-week Build clock)
  • UL - KT.docx (2 Jun session, Harishma S): Nielsen ~98% / Kantar ~2% coverage, hard/soft discounters, negligible-share rule, TDP = Promo + Non-Promo decomposition, e-commerce/offline overlap ("click and collect" already counted offline), brand-level BTS granularity limitation
All quiz scenarios are synthetic; status values quoted exactly from tbl_DataStatus.