Everything in this program hangs off one additive equation (Pre-Read slides 5 and 13):
The architecture answers two different client questions with two model families run on the same data spine:
- Short term (ST) - the sales impact landing in the immediate weeks after investment (W0-W4 per the glossary; slide 5 frames it as "typically 1-12 weeks"). Media investment data captures this effect.
- Long term (LT) - the impact that continues after the short-term window (W5+; slide 5 says "typically 14+ weeks"), carried through brand equity. Brand health tracker data captures this effect.
Two footnote definitions from slide 5 do a lot of work in every architecture conversation - learn them verbatim:
And the headline arithmetic the client sees:
The ST family drills from total brand sales down to individual campaigns. Each level's dependent variable is the thing the level above attributed - the hierarchy is a chain of decompositions, not three independent models. Dependent and independent variables per level, from Pre-Read slide 13:
| Level | Grain | Dependent variable | Independent variables | Fallback rule |
|---|---|---|---|---|
ST L1 | Media (channel) level | Sales volume | Base* + Media + Halo (optional) | - |
ST L2 | Platform level | The Media L1 category (that channel's attributed contribution) | Platforms of the respective media | If an L1 category has only one platform: No L2 for that category |
ST L3 | Campaign level | The Platform L2 category - or the L1 category directly, when that channel had a single platform | Campaigns of the respective platform/media | If the category has only one campaign: No L3 for that category |
Short-term channel ROIs are generated after the L1 run, from each channel's incremental sales contribution; platform and campaign ROIs follow the L2 and L3 runs. The fallback rules exist because a decomposition of one thing into one thing is meaningless: a channel that ran on exactly one platform skips L2 entirely, and its L3 model (if it has multiple campaigns) takes the L1 category itself as the dependent variable. Same logic one level down - a platform with a single campaign gets no L3.
target_col_l2 → Contribution_L1 wiring).The LT family starts from what the ST model could NOT attribute to media: the baseline. LT L1 takes the Baseline overall (built using the ST L1 model's intercept and seasonality) as its dependent variable and splits it across the three brand-health pillars of the tracker - Meaningful, Differentiation, Salience - leaving a residual "Baseline actual" (the LT L1 intercept, the brand's un-attributed core strength).
| Level | Grain | Dependent variable | Independent variables |
|---|---|---|---|
LT L1 | Brand health | Baseline overall (= Baseline actual + Meaningful + Differentiation + Salience) | Meaningful, Differentiation and Salience |
LT L2 | Media level (3 models) | Meaningful, Differentiation and Salience - one model per pillar | Intercept + Media |
LT L3 | Platform level (3 models) | Each pillar's "Media L1 category" | Platforms of the respective media |
LT L4 | Campaign level (3 models) | Each pillar's "Platform L2 category" (or the single-platform L1 category) | Campaigns of the respective platform/media |
Two structural points that trip new joiners:
- "3 models" is literal. From L2 downward the LT side runs three parallel model stacks - one each for Meaningful, Differentiation and Salience - not one multi-output model. The dataset evidence backs this: the LT archive's folder structure is literally
LT_L1_Constrained/ → LT_L2_Constrained/ → LT_L3_Constrained/ → LT_L4_Constrained/, and separate per-pillar files (differentiation / meaningful / salience) sit side by side with identical schemas. - The same No-L2 / No-L3 fallback rules apply on the LT side, per pillar: a single-platform channel skips the platform level, a single-campaign platform skips the campaign level.
LT L4 is the deepest grain in the whole architecture - individual creative executions. Its column names encode the entire hierarchy in one double-underscore-delimited string (channel-group, subchannel, creative type, brand, platform, campaign, execution variant), which makes L4 files instantly recognizable.
Sign-constrained vs constrained runs
Where a cell's scope includes e-commerce, the media and base variables for e-commerce ("online") and traditional retail ("offline") channels are modelled as separate model runs, not as a tag on one model. The structural evidence is unambiguous: production output folders carry paired *_l1_online / *_l1_offline files - two parallel L1 models, each with its own hierarchy below it where the platform/campaign depth warrants. When you sketch the architecture for such a cell, draw the whole ST tree twice.
UL_Rapid ROI_Pre-Read_Document 1.pptxslide 5 (core architecture, ROI definitions, Base*/Baseline overall footnotes, Total ROI), slide 13 (full Model Hierarchy backup slide - dependent/independent variables per level and the No-L2/No-L3 fallback rules, transcribed in full), slide 8 (ST/LT window definitions)MathCo Methodology Understanding_UL.xlsxsheetsModelling Equations(hierarchy-as-text) andModel_Iteration_Flow(sign-constrained → constrained run sequence, ST-intercept-to-LT handoff)SOURCE_MAP.mddataset structural notes:LT_Constrained_l1_l2_l3_l4archive folder structure, L4 column-naming convention, three pillar-parallel LT files, and the*_l1_online/*_l1_offlinefile pairs (structure only - no client values used)