| Fragrance | Format | 2026 Forecast | Notes |
|---|---|---|---|
| Winter Hearth Capped New 2026 | |||
| Winter Hearth | 5oz Spray | 1,800 | Fixed cap — oil-constrained new launch |
| Winter Hearth | 2oz Spray | 1,000 | Fixed cap |
| Winter Hearth Total | 2,800 | ||
| Vanilla Peppermint Y2 Returning | |||
| Vanilla Peppermint | 5oz Spray | 13,006 | 56.6% share · V6 engine |
| Vanilla Peppermint | 8oz Candle | 2,507 | 10.9% share |
| Vanilla Peppermint | Car Freshener | 3,229 | 14.1% share |
| Vanilla Peppermint | Amazon 2-Pack (5oz Spray) Capped | 1,000 | Hard cap · VP + PSP 2-pack · enabled V6 |
| Vanilla Peppermint | Diffuser Overlay | 3,229 | = Car Freshener units (additive) |
| Vanilla Peppermint Core Total (excl. diffuser) | 19,742 | ||
| Palo Santo Pine 4 Formats incl. 3 New | |||
| Palo Santo Pine | 8oz Candle | 876 | 15.4% share |
| Palo Santo Pine | 5oz Spray New 2026 | 2,542 | 44.7% share · Y1 overlay applied (1.875×) |
| Palo Santo Pine | Car Freshener New 2026 | 632 | 11.1% share · Y1 overlay applied (1.875×) |
| Palo Santo Pine | Amazon 2-Pack (5oz Spray) Capped | 1,000 | Hard cap · VP + PSP 2-pack · enabled V6 |
| Palo Santo Pine | Diffuser Overlay | 632 | = Car Freshener units (additive) |
| Palo Santo Pine Core Total (excl. diffuser) | 5,050 | ||
| Grand Total (all SKUs incl. diffuser overlays) | 31,453 | ||
Production timing requirement only — not additional units. Total to produce = forecast (unchanged). Formula: round(forecast / 92 × buffer_days). Winter Hearth: all units must be finished by Nov 1 regardless of buffer.
Forecast source: forecasting/forecast_output_holiday_final.json · Engine v2 · Run 2026-05-28
Diffuser overlay applied post-engine: units(Diffuser) = units(Car Freshener) per fragrance. WH excluded. Same methodology as Fall 2026.
Launch readiness: formula = round(forecast / 92 season days × buffer_days). Season = Nov 1–Jan 31. Buffer default = 30 days (adjustable via slider on Forecast tab).
Amazon 2-Pack (5oz Spray): 1,000 units per fragrance (VP + PSP) · 2,000 total · enabled V6 2026-05-29. Mirrors Fall 2026 standard allocation.
| Fragrance | Status | Formats | BOM | Oils | Decay | 2026 Forecast |
|---|---|---|---|---|---|---|
| Winter Hearth New Capped | ✓ Caps Set | 5oz Spray (1,800) · 2oz Spray (1,000) | ✓ | HH oil 11.34 kg · Forest Rev.6 4.06 kg | N/A — capped new launch | 2,800 |
| Vanilla Peppermint | ✓ Ready | 5oz Spray · 8oz Candle · CF · Diffuser | ✓ Confirmed | Givaudan · $105/lb · MOQ 55 lbs | 0% locked (override) | 22,971 (incl. diffuser) |
| Palo Santo Pine | ✓ Ready | 8oz · 5oz Spray · CF · Diffuser | ✓ Confirmed | CE-218468 · Confirmed procured (Nikita, 2026-05-26) | 0% locked (override) | 5,682 (incl. diffuser) |
PSP oil confirmed procured by Nikita, 2026-05-26. Pine Forest NF (CE-218468) at Custom Essence, $51.70/lb, MOQ 50 lbs.
WH oil: no vendor established yet for future orders. Holiday Hearth used Belle Aire at $75/lb — closest analog for sourcing.
Amazon 2-Pack (5oz Spray) allocation: 1,000 units per fragrance (VP + PSP), 2,000 total, enabled V6 2026-05-29. Separate fragrance oil requirement applies.
Solid = 2025 actual · Dashed = 2024 actual · Dotted = 2023 actual (partial season launch)
| Milestone | Date | Cumulative % | Implication |
|---|---|---|---|
| Week 2 | Nov 14 | 39% | Strong front-load — nearly 40% of season sells in first 2 weeks |
| Black Friday | Nov 28 | 58% | Majority of season through by BF week |
| Week 5 | Dec 5 | 71% | Reorder window for raw materials is closed by this point (1–3mo lead time) |
| Mid-December | Dec 14 | 83% | Finished-goods flex still possible (1–3 day production) if raw materials on hand |
| Dec 31 | Dec 31 | 95% | Season effectively closed; Jan tail is small |
Demand curve data: parquet fact_orders, Shopify + Faire, holiday windows Nov 1 – Jan 31. VP: 2025 season only (Y1 debut). PSP: 2024 and 2025.
Retired fragrances (PF, HH, SC) show 2023–2025 actuals. 2023 = partial season launch (Dec–Jan only). Shopify + Faire only (Amazon excluded from curves).
Week 1 = Nov 1–7 (weeks are Mon–Sun aligned to calendar). VP 2024 not shown — VP launched Holiday 2025. PSP 2024 reflects first-season launch with lower absolute volume.
| Fragrance | Format | 2023 Units | 2024 Units | 2025 Units | 2026 Forecast | YoY 23→24 | YoY 24→25 | 2026 vs 2025 |
|---|---|---|---|---|---|---|---|---|
| Pine Forest Retired — Not in 2026 Lineup | ||||||||
| Pine Forest | 5oz Spray | 226 | 3,096 | 5,533 | — | +1,270% | +79% | — |
| Pine Forest | 5oz Spray (Amazon indiv.) | — | 1,479 | — | — | New | — | — |
| Pine Forest | 5oz Spray (3-pack share) | ~1,254¹ | ~386 | 1,254 | — | −69% | +225% | — |
| Pine Forest | Car Freshener | 109 | 561 | 86 | — | +415% | −85% | — |
| Pine Forest Total (Shopify+Faire) | 335 | 3,705 | 5,673 | — | +1,006% | +53% | — | |
| Holiday Hearth Retired — Not in 2026 Lineup | ||||||||
| Holiday Hearth | 5oz Spray | 96 | 3,144 | 1,078 | — | +3,175% | −66% | — |
| Holiday Hearth | 5oz Spray (Amazon indiv.) | 77 | 834 | — | — | +983% | — | — |
| Holiday Hearth | 5oz Spray (3-pack share) | ~1,254¹ | ~386 | 1,254 | — | −69% | +225% | — |
| Holiday Hearth | 6.5oz Candle | 88 | 1,298 | 290 | — | +1,375% | −78% | — |
| Holiday Hearth | 8oz Candle New 2025 | — | — | 221 | — | — | New | — |
| Holiday Hearth Total (Shopify+Faire) | 184 | 4,442 | 1,668 | — | +2,314% | −62% | — | |
| Snowscape Retired — Not in 2026 Lineup | ||||||||
| Snowscape | 5oz Spray | 262 | 3,271 | 3,511 | — | +1,149% | +7% | — |
| Snowscape | 5oz Spray (3-pack share) | ~1,254¹ | ~386 | 1,254 | — | −69% | +225% | — |
| Snowscape | 6.5oz Candle | 29 | 1,158 | 710 | — | +3,893% | −39% | — |
| Snowscape | 8oz Candle New 2025 | — | — | 621 | — | — | New | — |
| Snowscape | Car Freshener | 85 | 1,318 | 0 | — | +1,450% | −100% | — |
| Snowscape Total (Shopify+Faire) | 376 | 5,800 | 4,891 | — | +1,443% | −16% | — | |
| Vanilla Peppermint Y2 — 2026 Lineup | ||||||||
| Vanilla Peppermint | 5oz Spray | — | — | 5,791 | 13,006 | — | Y1 | +124.6% |
| Vanilla Peppermint | 8oz Candle | — | — | 1,143 | 2,507 | — | Y1 | +119.3% |
| Vanilla Peppermint | Car Freshener | — | — | 1,411 | 3,229 | — | Y1 | +128.8% |
| Vanilla Peppermint | Diffuser Overlay | — | — | — | 3,229 | — | — | New |
| Vanilla Peppermint | Amazon 2-Pack (5oz Spray) Capped | — | — | — | 1,000 | — | — | New |
| Vanilla Peppermint Total (Shopify+Faire+Amazon) | — | — | 8,345 | 22,971 | — | Y1 | +175.3% | |
| Palo Santo Pine 4 Formats — 2026 Lineup | ||||||||
| Palo Santo Pine | 6.5oz Candle Removed | 142 | 1,490 | 969 | — | +950% | −35% | Discontinued |
| Palo Santo Pine | 8oz Candle New 2025 | — | — | 788 | 876 | — | Y1 | +11.2% |
| Palo Santo Pine | 5oz Spray New 2026 | — | — | — | 2,542 | — | — | New |
| Palo Santo Pine | Car Freshener New 2026 | — | — | — | 632 | — | — | New |
| Palo Santo Pine | Amazon 2-Pack (5oz Spray) Capped | — | — | — | 1,000 | — | — | New |
| Palo Santo Pine | Diffuser Overlay | — | — | — | 632 | — | — | New |
| Palo Santo Pine Total (Shopify+Faire+Amazon) | 142 | 1,490 | 1,757 | 5,682 | +950% | +18% | +223.4% | |
| Winter Hearth Capped New 2026 | ||||||||
| Winter Hearth | 5oz Spray | — | — | — | 1,800 | — | — | New |
| Winter Hearth | 2oz Spray | — | — | — | 1,000 | — | — | New |
| Winter Hearth Total | — | — | — | 2,800 | — | — | New | |
| Grand Total — All Fragrances | 1,037 | 15,437 | 22,334 | 31,453 ³ | +1,576% | +104% | +40.8% | |
¹ Amazon 2023 3-pack units per Nikita's file (RS-Holiday2023 ASIN). Lake ETL mapping error for this ASIN; Nikita's figures are authoritative.
² Shopify candles include Faire wholesale. Sprays/CF are Shopify direct only (validated attribution rule).
PSP 2026 per-format decline vs 2025 reflects redistribution across 4 formats (candle + spray + CF), not demand decline. Fragrance-level 0% decay override preserves the total.
Retired fragrances (PF, HH, SC) shown for historical reference only — not in 2026 lineup.
³ 2026 Grand Total reflects active lineup only (VP + PSP + WH). Retired frags (PF, HH, SC) have no 2026 forecast.
Support score: 61% (11/18) · 3 strong + 1 moderate · 2 counter-signals
Includes WH (2,800 fixed) + VP + PSP + diffuser overlays
Six signals assessed · Net read: 5–6% organic growth · 8% requires email activation + VP Year 2 outperformance
| Signal | Reading | Weight | Implication for Holiday 2026 |
|---|---|---|---|
| Q1 2026 Units Jan–Mar 2026 · All channels |
✓ +5.5% 46,490 → 49,070 |
High | Cleanest apples-to-apples comp. Directly supports a 5–6% holiday base. Reaching 8% requires this rate to hold or accelerate through November. |
| Returning Order Rate 2024 → 2025 |
✓ 49.0% +4.5pp YoY |
High | Half of orders are repeat — structurally bullish for VP Year 2. Repeat buyers in 2025 are the demand base for 2026. Pushes VP Y2 above the −7% pooled decay median. |
| Ad Spend 2024 → 2025 |
~ +34.2% $833K → $1.1M |
Medium | Spend grew 4× the unit growth rate — ROAS may be compressing. More fuel, but efficiency is unknown. Positive forward indicator, not conclusive. |
| VP Year 2 Decay Holiday Y1 → Y2 |
— Unknown One season observed |
High | No holiday Y1→Y2 comp exists. Pooled median −7.2% with 62pp std dev — unusable. Plausible range: 8,000–9,200 units. V4 locks at 0% (flat) — conservative and defensible. Each 5% error = ~425 units. |
| Email Revenue Klaviyo 2025 |
✗ $0 Zero campaigns |
High | The 8% target's primary upside lever is currently inactive. If email stays dormant through Holiday 2026, the model loses its key driver. Email activation before Nov 1 is the highest-leverage action available. |
| YTD −32.8% All channels · Jan–May 2026 |
✗ −32.8% Base-effect artifact |
Ignore | Jan–May 2025 captured the holiday January tail + full VP launch ramp. This reflects the shift to a holiday-concentrated model, not demand deterioration. Use Q1 units (+5.5%) as the operative signal. |
Key parameters and post-processing steps changed across the V1 → V6 progression are documented below with rationale.
| Component | V1 (2026-05-26) | V6 (2026-05-29) | Why Changed |
|---|---|---|---|
| season_days Engine parameter |
61 | 92 | Bug fix: the holiday season crosses a year boundary (Nov 1 – Jan 31). V1 used 61 days (Nov 1 – Dec 31 only), truncating 31 days of January sell-through. The launch buffer denominator was wrong, overstating the daily rate and the units required by Nov 1. Fixed via get_season_window() cross-year patch. |
| 8oz Candle alias Engine demand pull |
Manual workaround | Fixed in engine | V1: pull_seasonal_demand() renamed "8oz Candle" → "3-Wick Candle" internally, causing a demand lookup miss. V1 compensated with apply_format_split_fix() in the export script — a post-engine patch using 2025 actuals. V2 fixes the alias in the engine itself, removing the need for the workaround. |
| VP V2 product aliases PRODUCT_ALIASES map |
Not mapped | Added | VP launched a V2 SKU mid-season in 2025 with new product IDs. These IDs were present in the Parquet lake but absent from PRODUCT_ALIASES, so V1 missed their demand in the historical pull. V2 adds the VP V2 aliases, correctly capturing the full 2025 season demand for the shape-scaling step. |
| PSP Year 5 elasticity weight FM-01 engine parameter |
0.5× | 0.8× | V1 used the default 0.5× Y5 weight, calibrated on single-format fragrances. PSP 2026 adds 3 new formats (spray, CF, diffuser), expanding its addressable demand pool. A 0.5× weight underrepresents this expansion. 0.8× reflects a format-expansion adjustment — new channels reduce the typical mature-fragrance decay effect. |
| Post-processing export_forecast_xlsx_holiday.py |
apply_format_split_fix() called |
Removed | With the 8oz alias fixed in the engine, running apply_format_split_fix() on top of the correct engine output would produce wrong numbers (double-correction). The workaround was removed entirely. V2 engine output flows directly to the Excel export with no post-processing patch applied. |
| Amazon 2-pack allocation pack_allocation config |
0 units — pending decision | 1,000 / fragrance | V1–V4 held the VP + PSP Amazon 2-pack at zero pending allocation decision. V6 enables 1,000 units per fragrance (2,000 total), mirroring Fall 2026 standard 2-pack allocation. PSP units remain contingent on oil procurement confirmation. Units are allocated within the engine's grand total pool. |
| Parameter | V6 Value | Rationale |
|---|---|---|
| Growth rate | 8.0% | V6 locked. Signal scorecard: Q1 +5.5% (direct support), returning rate 49% (bullish), email $0 (risk). Data floor = 5–6%; 8% is aspirational stretch. See Growth Target tab. |
| VP decay rate | 0.0% override | 1 observed season — inter-season decay not yet calibratable |
| PSP decay rate | 0.0% override | Pooled −18.1% is wrong direction vs +18% actual; new-format year makes aggregate unreliable |
| WH method | Fixed caps | New launch, no history. 5oz: 1,800 cap · 2oz: 1,000 cap. Oil-constrained production ceiling. |
| Diffuser overlay | = CF units | No BOM finalized at planning; CF is closest demand analog. Same methodology as Fall 2026. |
| Amazon packs | 1,000/frag · VP + PSP | Amazon 2-pack enabled V6 2026-05-29. 1,000 units per fragrance (2,000 total), mirroring Fall 2026 standard allocation. PSP procurement constraint retained — pack output contingent on oil confirmation. |
| Season days | 92 | Nov 1 – Jan 31 (cross-year fix applied in V2 engine; confirmed through V4). V1 used 61 days — truncated January. |
| Launch buffer | 30 days | round(forecast / 92 × 30) units in-warehouse by Nov 1 — production timing only. Adjustable via slider on Forecast tab. |
Every fragrance that sold in Holiday 2025 contributes to the starting total — including the three retired fragrances. The 2026 active lineup (VP, PSP, WH) must absorb that retired demand and grow 8% on top. Without retired frags, the base would be ~10,640 and the plan would be ~11,500 units.
The engine calculates a "default" decay rate from 25 historical fragrance transitions. For Holiday 2026, both active fragrances override the pooled −7% default to 0% — VP because no Y1→Y2 holiday comparable exists, PSP because three new formats create incremental demand channels.
The raw decay-adjusted forecasts sum to 13,440 — well below the 26,111 engine target. The gap is distributed using elasticity weights: newer fragrances get a larger share of incremental growth. WH is capped at its production limit regardless of the model. Amazon 2-Pack units (2,000 total) are allocated within the engine pool before format splitting.
Each fragrance's total is split across its SKU formats using the prior season's format mix as a guide. Capped formats (WH) get their exact fixed number first; remaining units flow to demand-driven formats proportionally.
PSP Y1 overlay (+1,120): The engine assigned PSP a Year 5 weight (0.8×) because the fragrance is in its fifth season. But its 5oz Spray and Car Freshener are brand new formats entering Year 1. This overlay scales those two SKUs to 1.875× (= Y1 weight ÷ Y5 weight). It is additive — units are added on top of the engine total, not redistributed from VP or WH.
Diffuser overlay (+3,861): Diffusers have no sales history. Business decision: set diffuser volume equal to Car Freshener volume per fragrance. Runs after the Y1 overlay, so PSP's diffuser equals its Y1-corrected CF (632), not the engine's pre-correction CF (337). Also additive.
Four additive components make up the final production plan. The base is last year's full program. Each step adds on top; nothing is replaced or redistributed between steps.
Every number traces to a decision. Change any row below and the final total changes.
| Decision | What Was Set | Unit Impact | If Changed To… |
|---|---|---|---|
| Retired frags in grand_base | PF + HH + SC 2025 sales included in starting total | +13,232 in base |
Without retired frags, base = 10,640 → 8% target = 11,491. The entire scale of the plan changes. |
| Diffuser overlay | Diffuser = Car Freshener units · VP + PSP | +3,861 | Remove overlay → final = 27,592. Include but cut by half → final ≈ 29,523. |
| PSP Y1 overlay | New formats scaled 1.875× (Y1 ÷ Y5 weight) | +1,481 | Remove overlay → PSP stays at 3,569 (engine output). Final before diffusers = 26,111 (engine only). |
| Growth rate | 8.0% · Locked V6 · Data floor = 5–6% | +1,934 vs flat |
At 5%: engine target = 25,385 (−725 units). At 6%: 25,627 (−483). Overlays also shrink proportionally. |
| VP decay override = 0% | Holds VP flat · Pooled default = −7.0% | ~+600 | At pooled −7%: raw VP = 8,261 (vs 8,883). After elasticity scaling, VP final ≈ 19,900 (−600 units). |
| WH production cap | 1,800 × 5oz + 1,000 × 2oz · Fixed ceiling | 2,800 | Cap is set by oils on hand — not a modeling choice. More oil = higher cap = higher total. |
| Amazon 2-pack | 1,000 units/frag · VP + PSP · 2,000 total · Locked V6 | 2,000 in pool |
Allocated within engine growth pool before format splitting — not additive. Packs consume pool budget, reducing VP/PSP core SKU counts proportionally. Remove packs → VP/PSP core units increase; grand total stays near V5 (31,952). PSP units contingent on oil procurement confirmation. |
Engine: forecasting/run_forecast.py v2 · Config: forecasting/Holiday_2026_Config_V1.yaml · Overlays: analytics/david/forecast/export_forecast_xlsx_holiday.py
Chain verified: 26,111 (engine incl. 2,000 packs) + 1,481 (PSP Y1) + 3,861 (diffuser) = 31,453 ✓