M365Marketing - Teaching Dataset ================================ Synthetic multi-channel marketing campaign performance across 24 campaigns x 5 channels x 78 weeks. Designed to support practice for the dashboard-design, AI-data-prep, and anomaly-detection chapters of The Defensible Decision. Wholly synthetic. Any resemblance to a real company's data is coincidental. Files ----- - channels.csv - 5 marketing channels with attribution windows - segments.csv - 10 audience segments with TAM estimates - campaigns.csv - 24 campaigns - performance.csv - ~1,800 rows of weekly performance - SCHEMA.txt - full schema and known imperfections What it represents ------------------ A fictional B2B marketing organization running 24 concurrent campaigns across 5 channels (Paid Search, Paid Social, Display, Content Syndication, Field Event) targeting 10 audience segments across 8 industries. The weekly performance grain supports the standard B2B marketing-decision cadence: Monday-morning reallocation reviews, monthly portfolio retrospectives, quarterly budget planning. The dataset is sized to support the chart-selection, dashboard-design, AI-data-prep, and anomaly-detection exercises in the relevant chapters. Joins are inexpensive. What it does NOT represent -------------------------- - Lead-level data (campaign-week aggregates only) - Customer-level pipeline (conversions only, no opportunity stage) - Creative-level performance (campaign aggregates only) Deliberate imperfections ------------------------ - Mixed attribution windows - different channels use different attribution windows. Paid Search and Display use last-click-30d; Paid Social uses view-through-7d; Content and Field use first-touch-90d. Reconciling cross-channel conversions is a chapter exercise. - Paused weeks - ~1.5% of performance rows are paused (zero everything, note='paused') - Platform outages - 3 campaigns have a single platform-outage week (zero everything, note='platform-outage'). Useful for anomaly-detection exercises. Quick start ----------- cat SCHEMA.txt head performance.csv head campaigns.csv # Load into Power BI: # 1. Get Data -> Text/CSV -> select all four CSVs # 2. Build relationships: # campaigns.channel_id -> channels.channel_id # campaigns.segment_id -> segments.segment_id # performance.campaign_id -> campaigns.campaign_id # 3. Mark week_starting as a date column Reference BRD ------------- The M365Marketing starter BRD is the BRD for this dataset. License and reuse ----------------- Released for teaching use alongside The Defensible Decision. Use freely.