Seasonal Promotion Optimization Studio
Simulate and Optimize promotion strategies across products and channels. Get actionable recommendations with clear impact on revenue, profit and inventory - before your execute.
start-promotion-studio.bat or serve the folder on http://127.0.0.1:8000.
Current Business Overview
Combined view of performance, commercial drivers, and current-week operating signals to identify where the problem is, why it is happening, and what to do next.
Business Snapshot
Recommended Next Actions
Channel Performance & Actions
Top Issues & Opportunities
Current Channel Groups
| Product | SKU | Target | Amazon |
|---|---|---|---|
| Unseen Sunscreen SPF 40 | SUN_S1 | $33.50 | $33.00 |
| Glowscreen SPF 40 | SUN_S2 | $35.50 | $35.00 |
| Play Everyday Lotion SPF 50 | SUN_S3 | $21.50 | $21.00 |
| Superscreen Daily Moisturizer | MOI_M1 | $27.50 | $27.00 |
| Mineral Sheerscreen SPF 30 | MOI_M2 | $31.50 | $31.00 |
| (Re)setting Powder SPF 35 | MOI_M3 | $25.50 | $25.00 |
| Product | SKU | Sephora | Ulta |
|---|---|---|---|
| Unseen Sunscreen SPF 40 | SUN_S1 | $39.00 | $38.50 |
| Glowscreen SPF 40 | SUN_S2 | $39.00 | $38.50 |
| Play Everyday Lotion SPF 50 | SUN_S3 | $33.00 | $32.50 |
| Superscreen Daily Moisturizer | MOI_M1 | $39.00 | $38.50 |
| Mineral Sheerscreen SPF 30 | MOI_M2 | $39.00 | $38.50 |
| (Re)setting Powder SPF 35 | MOI_M3 | $35.00 | $34.50 |
Key Performance Metrics (Latest Week)
Competitor Price Moves
Scraped feed| Product | Channel | Prev | Current | WoW |
|---|---|---|---|---|
| Loading competitor price moves... | ||||
Channel Social Buzz
Channel-level signal| Channel | Cohort | Buzz Score | WoW | Lead SKU |
|---|---|---|---|---|
| Loading channel social buzz... | ||||
Products Most Exposed to External Signals
| Product | Group | Current Weekly Units | Signal-Adjusted Units | Expected Impact | Price Position vs Competitor |
|---|---|---|---|---|---|
| Loading SKU-level signal impact... | |||||
Channel Promotions Simulator
Story Presets & Context
Elasticity is modulated by social trend and competitor price delta from sku_channel_weekly.csv, market_signals.csv, and social_signals.csv.
Promo Depth by Channel Group
- Live week events and market signals will appear here.
| Product | Channel | Our Price | Competitor Price | Gap (%) |
|---|---|---|---|---|
| -- | ||||
Revenue by Channel Group
Profit by Channel Group
Inventory Projection (Baseline vs Scenario)
Product Elasticity & Competitive Gap (Current Week)
| Product | Group | Base Elasticity | Effective Elasticity | Avg Gap vs Competitor | Promo Guidance |
|---|---|---|---|---|---|
| Computing product-level elasticity... | |||||
Within-Group SKU Cannibalization View
| From SKU | To SKU | Channel Group | Estimated Unit Shift |
|---|---|---|---|
| No cannibalization shifts yet. | |||
SKU Migration Matrix (Cannibalization Heatmap)
| Run the cannibalization example or apply product-level promo depth to render migration matrix. |
SKU-Level Projection (6 Products): Baseline vs Shock-Only vs Scenario
| Product | Group | Baseline Units | Shock-Only Units | Scenario Units | Net Delta | Internal Migration |
|---|---|---|---|---|---|---|
| Adjust controls to render SKU-level projection. | ||||||
Objective Frontier (Revenue vs Profit vs End-of-Horizon Leftover)
| Objective | Revenue Delta | Profit Delta | End-of-Horizon Leftover | Clearance from Current | Commercial Readout |
|---|---|---|---|---|---|
| Computing objective frontier... | |||||
Causal Impact Waterfall (Selected SKU)
| Driver | Units Impact | Share of Baseline |
|---|---|---|
| Select SKU or adjust controls to render causal decomposition. | ||
Weekly Action Plan
--| Week | Phase | Target & Amazon | Sephora & Ulta | Focus SKU | Expected Impact |
|---|---|---|---|---|---|
| Set promo sliders to generate weekly plan. | |||||
AI Co-Pilot
Not ConnectedSales Trend & Key Drivers
Competitor Price Alerts
| Product | Channel | Competitor | Our Price | Gap |
|---|---|---|---|---|
| Loading competitor alerts... | ||||
Product x Channel Snapshot
| Product | Top Channel | Revenue | Units | WoW | Own Price | Comp Price | Gap | Social Buzz | Insight |
|---|---|---|---|---|---|---|---|---|---|
| Loading latest-week product snapshot... | |||||||||
Last Week Performance Drilldown
Zoom into last week only to diagnose current channel posture, competitor price moves, social buzz, and product-level signal exposure before taking action.
Channel Performance
Product × Channel Performance
Units sold · WoW change| Product | Target | Amazon | Sephora | Ulta | Total |
|---|---|---|---|---|---|
| Loading... | |||||
Revenue by Channel
Competitor Price Moves This Week
Scraped competitor feed| Product | Channel | Their Price | Our Price Last Week | Our Price This Week | Our Price Change | Gap |
|---|---|---|---|---|---|---|
| Loading... | ||||||
Social Buzz by Product
Brand sentiment: --AI Assistant Ask questions about this week's data
Data Explorer
Start by inspecting the underlying datasets powering the analysis, including SKU-channel performance, competitor pricing, and social buzz signals.
AI Assistant Ask about the data foundation
In-Season Planner Model Board
Model-driven weekly SKU x channel decisions using current inventory, competitive deltas, social momentum, and cannibalization effects.
End-of-Season Markdown Decision Models
Evidence-led markdown planning using historical campaign outcomes by SKU/channel and configurable season-end inventory targets.
Portfolio Migration & Advanced Analysis
Interactive portfolio migration sandbox for Mass vs Prestige flow shifts, SKU cannibalization routes, and advanced scenario ranking.
Customer Cohorts
Analyze Mass and Prestige cohorts across acquisition, price sensitivity, loyalty, and basket value so targeting decisions reflect how customers actually behave.
Segment Response Comparison
Compare how different cohorts respond to your own price, competitor price actions, and social buzz before committing a promotion plan.
Drivers & Signals
Understand the external and internal factors influencing performance. See competitor actions, social demand, and key events to diagnose root cause and decide the right response.
AI Promotion Optimization Assistant
Ask for SKU-level promotion recommendations using inventory runway, competitor price gaps, social momentum, and historical promo effectiveness.
Sample Data Explorer
Available Datasets
Quick Visual Overview
Loading data...
Select a dataset from the left sidebar to view the data
Promotion Optimization Scenario Studio
Start of Season baseline, In-Season pivots, and portfolio migration what-if simulation.
Adjust Price
What is Elasticity?
An elasticity of -1.9 means a 1% price increase leads to a 1.9% decrease in new acquisitions. Negative values indicate inverse relationship.
Projected New Customers by Cohort
Elasticity by Customer Segment
| Segment | Elasticity | Sensitivity | Projected Change |
|---|---|---|---|
| 0-3 months | -2.5 | High | 0% |
| 3-12 months | -1.9 | Medium | 0% |
| 12+ months | -1.6 | Low | 0% |
Model 1: Acquisition Elasticity
What it captures: How new customer sign-ups respond to different prices and promotional offers
Key Insight: Loyal fans join regardless of price. Budget-conscious users drop off sharply when prices increase.
Live Scenario State
Not simulated yetScenario Experiments (Try These)
Note: Detailed cohort analysis tables will appear below after running a scenario simulation.
Simulate Price Increase
Why Time-Lagged?
Customers don't drop immediately. Some wait for reorder cycles, others for promo expiration. Peak repeat loss typically occurs 8-12 weeks after a price increase.
Revenue Note: The cumulative revenue line accumulates over time. With extreme price increases or highly elastic cohorts (Deal Hunter), it can peak then decline as customer loss outweighs price gain.
Cumulative Repeat Loss Over Time
Retention Forecast & Revenue Impact
Repeat-Loss Impact by Time Horizon
Model 2: Repeat-Purchase Risk After Promo
What it captures: How aggressive markdowns impact short-term sell-through vs delayed repeat-risk by SKU and channel.
Key Insight: Risk usually peaks 8-12 weeks later. Social momentum and competitor price increases can soften that risk, so rerun this model whenever signals change.
Live Scenario State
Not simulated yetNarrative To Pitch In This Step
In-Season Pivot: Apply competitor/social shocks and test markdown depth by SKU.
End-of-Season: Choose the ladder that clears inventory with controlled repeat-risk.
Scenario Experiments (Try These)
Note: Run a scenario to populate lag-window risk heatmaps and product-cohort action cues.
Adjust Channel Group Prices
Migration Dynamics
When the price gap narrows, more Target & Amazon customers upgrade. When it widens, Sephora & Ulta demand can split into downgrade and repeat-risk, while some volume shifts between your own SKUs.
Migration Flow Diagram
SKU Inventory Projection (Configurable Horizon)
Projected Channel Distribution
| Transition | Probability | Customers | Revenue Impact |
|---|---|---|---|
| Target & Amazon → Sephora & Ulta (Upgrade) | 8.2% | ~850 | +$2,550 |
| Sephora & Ulta → Target & Amazon (Downgrade) | 3.5% | ~420 | -$1,260 |
| Target & Amazon → Cancel | 4.2% | ~430 | -$2,574 |
| Sephora & Ulta → Cancel | 3.8% | ~460 | -$4,134 |
SKU-Specific Transition Table
All SKUs| Metric | Mass | Prestige | Total |
|---|---|---|---|
| Select a SKU to populate this table. | |||
Historical Promo Effectiveness (SKU + Channel)
| SKU | Channel | Sales Uplift | Outcome |
|---|---|---|---|
| No campaign selected. | |||
Channel Mix Over Time
Model 3: Competitor Capture vs SKU Cannibalization
What it captures: If SKU-1 gets cheaper, how much volume comes from competitors vs how much shifts from your own SKU-2/SKU-3.
Decision Takeaway: Select the policy where external capture is higher than internal cannibalization while margin floors are protected.
Live Scenario State
Not simulated yetDecision Checklist
2. Change one SKU price and observe cannibalization matrix shifts.
3. Validate mass vs prestige mix and lock the scenario with best rank score.
Scenario Experiments (Try These)
Note: Run a scenario to render migration matrix, competitor pull, and cannibalization pressure by product route.
Decision Engine - Auto-Ranking
Top 3 Recommendations
Simulation Results
5-Week Checkpoint and Remaining-Season Reforecast
Sales Outlook After Week 5
Actuals locked through week 5; curves show remaining-season projection.Scenario Readout from Week 5
| Projection Case | Rest Units | Rest Revenue |
|---|---|---|
| Run a scenario to see week-5 anchored projections. | ||
Social Score vs Elasticity and Price Headroom
Trending brands should carry lower elasticity and more pricing room.Social-to-Elasticity Bridge
| Momentum State | Elasticity | Headroom |
|---|---|---|
| Run a scenario to see social sensitivity states. | ||
Revenue Impact
Customer Impact
Cohort-Level Acquisition Response
| Cohort | Size | Adds Elasticity | Adds Lift @ P-5% | Adds Lift @ P+5% | Confidence |
|---|
Cohort Repeat-Loss Uplift Heatmap (change vs baseline)
| Cohort | 0-4 Weeks | 4-8 Weeks | 8-12 Weeks | 12+ Weeks |
|---|
Channel Transition Matrix (change vs baseline)
Elasticity Analysis
Scenario Comparison
Compare multiple scenarios side-by-side
KPI Comparison
Multi-Dimensional Trade-offs
Week-5 Anchored Scenario Projection
Executive Reforecast by Scenario
| Scenario | Price Move | Rest-of-Season Units | Rest-of-Season Revenue | Vs Baseline | Social Headroom | Executive Readout |
|---|---|---|---|---|---|---|
| Save and compare scenarios to render the reforecast table. | ||||||
Customer Cohorts & Elasticity
Mass and Prestige cohorts react differently to price, competitive pressure, loyalty, and basket-building behavior.
Heatmap, 3-axis, and scatter use your data:
segments.csv, segment_kpis.csv, segment_elasticity.json.
Cohort Elasticity Heatmap
Commercial response by cohort. Green = lower pressure, Red = higher pressure. Use this to decide where price moves need the most care.
3-Axis Cohort Map
Bubble size = customer count; color = repeat-pressure level. Hover for cohort details and business readout.
Cohort Scatter: Customers vs Elasticity
X = customer count, Y = response intensity on the selected cohort axis. Bubble size = AOV, color = repeat-loss rate. Use to spot large cohorts with meaningful commercial sensitivity.
Channel View
Elasticity and base price by channel from elasticity-params.json. Use this to tailor promotions by channel.
Bar: Elasticity by channel
Heatmap: Channel x Elasticity & group
Channel summary (elasticity & tier)
Customer response watchlist
Loading...Shows the customer groups under the most commercial pressure at current price points after accounting for competitor gap, social support, and current product mix. Click any row for SKU-level drilldown.
Segment Response Comparison
Three-Lever Cohort Response
- Awaiting event selection.
- Awaiting event selection.
Ask Questions About Promotion Optimization
Promotion Optimization Assistant
Ask for SKU-level promo recommendations, inventory runway risk, competitor defense actions, or social-driven hold-price decisions.
Edit Scenario Parameters
Methodology: Current Business Overview
Data Sources
- product_channel_history.csv - rolling 52-week product x channel history with revenue, own price, competitor price gap, and social buzz
- customers.csv - season-aligned customer master with channel mix, basket behavior, and repeat-loss status
- channel_weekly.csv - active season weekly KPI snapshots used for the latest-week context
KPI Formulas
AOV = Total Revenue / Active Customers
Used in the latest-week overlay; the 52-week dashboard itself aggregates product x channel revenue, units, price, competitor gap, and social buzz.
LTV = AOV x Average Tenure (months) x (1 - Repeat Loss Rate)
Discounted over 24-month horizon at 5% annual rate
Monthly Repeat Loss = Lapsed Customers / Active Customers (30-day window)
Smoothed with 90-day moving average
Key Assumptions
- All data is synthetic, representing a realistic seasonal retail brand
- Historical overview uses a rolling 52-week lookback with shorter drilldown filters
- Currency: USD
- Seasonality is preserved across sunscreen and moisturizer demand
Methodology: In-Season Planner Model Board
Active Model Stack
This section combines four active models: own promo response, competitor delta impact, social momentum impact, and SKU migration/cannibalization to produce weekly channel-specific actions.
Methodology: End-of-Season Markdown Decision Models
Active Model Stack
This section combines historical promotion effectiveness by SKU/channel with a markdown ladder model to reduce season-end leftover inventory while preserving margin floors.
Methodology: Portfolio Migration & Advanced Analysis
Active Capability
This module simulates portfolio migration and SKU flow shifts when channel-specific promotions change, with explicit competitor-capture vs internal-cannibalization tradeoffs.
Methodology: Customer Cohorts
Segmentation Framework
3-axis behavioral segmentation framework creating 250 unique segments (5 x 5 x 5 x 2 channel groups).
Three Segmentation Axes
- Single-SKU Staple: Repeat purchases of a hero SKU
- Multi-SKU Builder: Builds larger baskets
- Value Bundle Buyer: Prefers sets and value packs
- Premium Add-On: Adds premium or limited SKUs
- Trial-Size Sampler: Tests mini or entry packs
- Prestige Loyalist: High repeat rate in prestige channel
- Value Seeker: Responds to moderate discounts
- Deal Hunter: Promo-first, high drop-off risk
- Occasional Shopper: Low frequency purchases
- Channel Switcher: Moves between mass and prestige
- Seasonal First-Time: First purchase driven by season
- Routine Refill: Replenishment driven
- Gift Buyer: Purchases tied to gifting
- Influencer Discovered: Social-led discovery
- Promo Triggered: Enters only with discounts
Segment Elasticity Calculation
Segment Elasticity = Base Tier Elasticity x Axis1 Modifier x Axis2 Modifier x Axis3 Modifier
Example: Target & Amazon promo-triggered, deal hunter, value bundle buyer:
-2.1 (base) x 1.3 (promo) x 1.2 (deal hunter) x 1.1 (bundle) = -3.60 (highly elastic)
Data Sources
- segments.csv: tagged customer sample across acquisition, engagement, and basket-value cohorts
- segment_kpis.csv: current cohort performance rollup derived from the customer master
- segment_elasticity.json: Calibrated elasticity parameters
Methodology: Segment Response Comparison
Comparative Analysis
Compares promotion response sensitivity across customer cohorts to guide targeted offer selection.
Analysis Methods
Visual matrix showing response sensitivity by cohort.
- Color scale: lower to higher response sensitivity
- Sorting: by response magnitude or revenue contribution
- Filtering: by channel group, acquisition profile, or engagement profile
2D view: response sensitivity (X-axis) vs revenue impact (Y-axis).
- High response + high revenue cohorts are powerful promo levers
- Low response + high revenue cohorts are candidates for selective holds
- Low response + low revenue cohorts are lower optimization priority
Plots cohort size, response, and repeat-loss risk in one view for planning trade-offs.
- Prioritize cohorts where promotions create incremental lift with acceptable margin impact.
- Use historical underperformance to exclude low-return cohorts from broad promotions.