# Synthetic retail panel

`sku_customer_brand_weekly.csv` is a rectangular weekly panel with one row per:

```text
date × brand × customer × variant
```

`brand + variant` identifies the SKU. The dataset contains 12 SKUs, 5 customers, 60 SKU/customer cells and 156 weeks from January 2023 through December 2025.

The generator deliberately creates retail dynamics that make a hierarchical MMM interesting:

- list-price inflation over time;
- customer-specific promotion patterns;
- price discounts that coincide strongly with promotion;
- retailer-media spend that rises around commercial events;
- national media pulses with carry-over;
- paid-search reaction to campaign and promotional pressure;
- Zero-variant distribution ramp and assortment maturity;
- meaningful brand, customer and pack-size differences in price elasticity.

Important model columns:

- `log_units`: MMM target.
- `price_discount_signal`: `-log(price / list_price)`.
- `promo_depth`: promotion intensity.
- `distribution_signal`: centred/scaled weighted distribution measure.
- `tv_spend`, `paid_social_spend`, `paid_search_spend`, `retail_media_spend`: media inputs.
- `units`, `revenue`, `price`, `list_price`, `weighted_distribution`: business-facing fields retained for EDA and interpretation.

With this target/sign convention:

```text
price elasticity = - coefficient(price_discount_signal)
```

`true_parameters.csv` contains the synthetic truth used only to evaluate the case study.

`future_media_price_plan.csv` is a 13-week future input scenario used by the sweep package's approximate PyMC-Marketing 1.x `predict_posterior` workflow.
