Unilever MMM Program · Program Management
Field Guide · Concepts & Definitions
00 / Field Guide

How to read the program.

The Control Tower has a lot of moving parts — five reports, a master workbook with fourteen reference tables, ten stages, multiple status vocabularies. This page is the dictionary. Open it before opening anything else; come back to it when a label, status or count looks unfamiliar.

01 / Reports

The five panes of the Control Tower.

The Control Tower is a single page with one sidebar nav. Every pane is generated from Unilever.xlsx and re-rendered on each run of control_tower.ipynb. Reports are independent of each other but share the same cell key — countries, brands and SOWs reconcile across panes.

Mission Control
The landing pane. Aggregates the four sub-reports into three dimensions — Delivery, Commercial, Team — surfaces the prioritised action queue (blocked stages, on-notice exits, overdue SOW follow-ups, data-health findings).
Delivery
Cell × stage status heatmap. Where every cell is in the ten-stage funnel right now: blocked cells, active-by-stage rollup, sponsor breakdown, SOW reconciliation. Generated by delivery.ipynb.
Team Structure
Cell × stage owner matrix. Pillar Ownership card (SteerCo per cluster, Stage Lead per stage), per-person workload, coverage gaps. Generated by team_structure.ipynb.
Resourcing
Headcount and utilisation, sourced from CORTEX Talent IQ. Billing categories, on-notice list (people leaving within 30 days), trend strip. Generated by resourcing.ipynb — the only sub-notebook that writes to the master.
SOW Reports
Full SOW tracker, follow-up schedule, value rollup. Action Center surfaces overdue and upcoming follow-ups. Data Health flags inconsistencies between SOW Summary and Cells. Generated by sow_summary.ipynb.
02 / The Cell

The atomic unit of work.

A cell is one country × category × brand combination — for example Italy / Fabric Cleaning / Coccolino. Every report in the Control Tower aggregates over cells. The four-column key (business_group, country, category, brand) is the canonical join across every sheet; the cell_id slug (e.g. HC-IT-Fabric-Cleaning-Coccolino) is a convenience handle.

Each cell has a sponsor partner — Europe, Unilever, Google, TikTok or Pinterest — that determines who's funding and steering the work. It also has a cell status describing where it sits in its overall lifecycle, independent of the per-stage status detail.

Cell statuses · tbl_CellStatus

Awaiting Confirmation
Scoped but not formally greenlit. No work yet. Often paired with a draft SOW.
Confirmed Start
SOW signed or commitment in writing. Cell is queued; work has not begun in earnest.
In Build
Active work. The cell is moving through one of the ten stages. Most cells live here.
In Support
Build complete. Cell is in refresh / steady-state mode — periodic re-runs against new data.
On Hold
Paused by the client or by us. Different from Blocked at stage level — this is a cell-wide pause.
Closed
Final sign-off received and the engagement is shut. Kept in the master for history.
03 / The Ten Stages

Every cell travels through the same ten stages, organised in four clusters.

The ten stages are the spine of the program. Every cell inherits the same sequence; what varies is who owns each stage (see the Team Structure pages) and what status each stage is in (see the Delivery report). The stage list is held in tbl_Stages on the Control sheet — notebooks always derive it from there, never hard-code it.

Pre-Modeling
Stages 1–2
SteerCo · Pijush / Ashutosh
Modeling
Stages 3–5
SteerCo · Pijush / Ashutosh
Synthesis
Stages 6–7
SteerCo · Sukumaran V
Delivery
Stages 8–10
SteerCo · Vinayak Saxena
i
Design Pre-Modeling
The model brief. Variables in scope, granularity, time period, KPIs, exclusions. Pinned down up front so Data and Modeling have an unambiguous target. The cell's intent, written down.
Cell Leadper cell
ii
Data Pre-Modeling
Sourcing, cleaning and validating every input feed — sales, distribution, promotion, media (traditional, digital, ecomm, influencer), competition, BGS, macro. Status of each feed is tracked separately on the Data sheet (see §05).
Stage LeadGopinath V
iii
Modeling — MMM Modeling
Fitting the marketing-mix model on the prepared data. The core technical step — decomposing volume / value into base, media, price, promotion and external drivers. Run by per-cell modellers; the cell lead coordinates.
Cell Leadper cell
iv
Modeling — PnP Modeling
Price-and-promotion modelling. Calibrates own-price elasticity, cross-elasticity and promotional response. Often runs in parallel with MMM rather than after it.
Cell Leadper cell
v
Optimization Modeling
The "what-if" engine. Takes the fitted model and returns optimal media / price / mix scenarios under client-set constraints. The numbers that end up in the recommendation.
Stage LeadGopinath V
vi
Validation Synthesis
Sense-checking model outputs against priors, business intuition and previous waves. Catches the implausible before it gets in front of a client. Not a rubber stamp — Validation can send a model back for re-fit.
Stage LeadSibasis Dash
vii
Insights & Storyboarding Synthesis
Turning model output into a narrative. Deck spine, key messages, what to lead with, what to defend. The first stage where the Cell Lead is back in the driver's seat — they own the story end-to-end.
Cell Leadper cell
viii
Business Presentation Delivery
Walkthrough with the Unilever business team — typically Marketing Effectiveness and category leads. Internal-to-Unilever, before the local market sees anything.
Cell Leadper cell
ix
Market Presentation Delivery
Walkthrough with the local market team — the operating client. The recommendation lands here; objections and changes that flow back to the model are flagged here.
Cell Leadper cell
x
Final Sign-Off Delivery
Formal acceptance. Cell moves to Closed (one-shot) or In Support (refresh cadence kicks in). Triggers SOW close-out and revenue recognition.
Cell Leadper cell
04 / Stage Status

Six values describe where a stage sits, for any given cell.

Each cell has ten stages, and each stage has a status. The status vocabulary below is fixed and lives in tbl_StageStatus. Read these as the column-language of the Delivery heatmap: every coloured tile in that report is one of these six.

NA
The stage does not apply for this cell. Usually a scope decision — e.g. a cell scoped without PnP modelling carries NA on stage iv.
Not Started
In scope for this cell, but no work has begun. The default for stages downstream of the cell's current position.
In Progress
Active work. The cell's current_stage field on Delivery points at whichever stage is In Progress.
Blocked
Stalled, with an external dependency named in the stage notes. This is the headline status the Mission Control queue surfaces — every Blocked stage becomes an action item.
Done
Stage work is complete from our side, awaiting review or sign-off from the client / next stage owner. Distinct from Signed Off.
Signed Off
Formally accepted. The cell can move to the next stage. Stages 8–10 culminate here for closure.
05 / Data Readiness

Stage 2 is bigger than it looks — it's fourteen separate feeds per cell.

The Data stage on Delivery rolls up a per-cell, per-data-type readiness inventory held on its own sheet. Every cell has fourteen data-type rows; each carries one of six lifecycle values. The stage status on Delivery should match the rollup — when every feed for a cell is Validated, the Data stage is Done.

Happy path
Pending
Received
Validated
Off-ramps
Granularity Issue
Blocked
Not in Scope

Granularity Issue — feed arrived but the cut isn't usable (wrong geo level, wrong period). Blocked — feed not arriving, dependency named. Not in Scope — deliberate exclusion, scoped out at Design.

Fourteen data types · tbl_DataTypes
Sales & Trade
sales · kantar_sales · ecomm_sales · distribution · promotion · competition_sales
Media
traditional_media · digital_media · ecomm_media · competition_media · boosted_influencer · organic_influencer
External
bgs · macro
06 / The Pipeline

One entry point. Four sub-reports. One master workbook.

What runs when you run the Control Tower

control_tower.ipynbsingle entry point
resourcing.ipynbwrites Resourcing sheets
sow_summary.ipynb
delivery.ipynb
team_structure.ipynb
snapshot.ipynbpost-run · dated copy

Each sub-notebook drops two artefacts to the reports/ folder: a standalone HTML (shareable on its own) and a sidecar JSON (the contract back to Mission Control). Sidecars persist between runs — the Control Tower can re-render without re-running everything.

Fail-loud. Any sub-notebook error aborts the whole run; we don't silently skip past failures. The master is opened in headless Excel after each notebook that writes, to recalc cached formula values for the downstream readers.

07 / The Master File

Unilever.xlsx is the single source of truth.

Every report in the Control Tower reads from Unilever.xlsx. The master is bidirectional with CORTEX — revenue flows out to CORTEX, resourcing flows in from CORTEX (via daily Talent IQ pulls into raw/resourcing/). Snapshots are cut daily into snapshots/ for audit and rollback.

Sheets that hold work state. Cells is the catalog (one row per cell, scope and admin). Delivery is the heartbeat — start dates, current stage, per-stage status / date / notes. Team_Structure is the ownership view — three metadata rows above the table for cluster SteerCo and stage leads, plus per-cell role columns. Data is the readiness inventory.

Sheets written by notebooks. Resourcing and Resourcing - Trends are rewritten on every resourcing.ipynb run (delete + recreate, hidden trends sheet re-hidden after writing). Everything else is admin-maintained.

Control sheet. Admin-owned reference data — every dropdown, every status vocabulary, the SteerCo and Stage Lead assignments. Fourteen tbl_ tables covering countries, business groups, category-brand pairs, scope, refresh frequencies, sponsors, stages, statuses, data types, team-structure roles. Notebooks read this; they never write to it. The status vocabularies on this page all come from here.

Why a workbook and not a database. Stakeholders who need to edit (new SOWs, new cells, status changes) work in Excel. Pushing this to a DB would close the loop on reads but break the write path.