Quick setup, no IT required. Upload a sell-through CSV and Reactive builds your demand plan automatically — forecasts, reorder alerts, and purchase orders ready in minutes.
Reactive SDP reads a weekly sell-through CSV. Each row represents one style × one week (or one style × size × color × week if you're providing SKU-level data). The system auto-aggregates totals.
| Column | Format | Status | Aliases accepted |
|---|---|---|---|
style_id |
Text | Required | sku, style, product_id |
name |
Text | Required | — |
category |
Text | Required | — |
week_start |
Date (YYYY-MM-DD, Monday) | Required | week, date |
units_sold |
Integer | Required | sold, qty_sold |
eop_inventory |
Integer | Required | inventory, on_hand, stock |
msrp |
Decimal | Required | compare_at_price, price |
cost |
Decimal | Required | — |
Price vs. MSRP: The msrp column is your manufacturer's suggested retail price (full price). If your current listed/selling price differs from MSRP (e.g., during a promotion or markdown), add an optional sell_price column. If sell_price is omitted, it defaults to MSRP. The alias current_price also maps to sell_price. The old column name price still works as an alias for msrp.
| Column | What it enables | Aliases |
|---|---|---|
sell_price |
Current listed price; enables % off MSRP tracking and Price Status badges | current_price |
sub_category |
Sub-category seasonality, size curves, and elasticity | — |
size |
Size-level ISSR curves and size-split PO exports | — |
color |
Color/wash scale splitting on PO exports | — |
avg_unit_retail |
Accurate AUR tracking and price elasticity modeling | aur |
units_returned |
Return rate modeling in inventory projections | returns, returned |
vendor |
Vendor-level lead time and MOQ defaults | — |
image_url |
Product images on style cards | — |
History depth matters. Include at least 26 weeks of history for good seasonal calibration. 52 weeks is ideal. Styles with fewer than 3 healthy weeks will fall back to category-average velocity. The more history you provide, the more accurate the demand quality filters and seasonality curves will be.
Upload a separate CSV of committed purchase orders (past and future). This is the exclusive source for all PO receipt data — the historical sell-through CSV does not include PO information. Reactive uses these receipts to factor on-order inventory into its forward projections and reorder recommendations. The PO file should include style ID, expected receipt date, and quantity (with optional size-level breakdown).
Drag and drop your CSV onto the upload area or click "Upload CSV." Reactive will parse all columns, auto-detect aliases, and show a summary: number of styles, weeks of history, categories found, and any warnings about missing or unexpected data.
If a required column is missing or misnamed, the error message tells you exactly what's expected. Fix the CSV and re-upload — there's no penalty for multiple uploads.
Quick validation tip: After your first upload, click into 3–5 styles you know well. Check that the velocity, inventory, and price numbers match your expectations. If the baseline looks right on styles you understand, the rest of the assortment will be solid.
Open Settings (gear icon) to configure the parameters that drive your plan. Here's every setting that matters, with recommended starting values:
| Setting | Default | What it does |
|---|---|---|
| Lead time | 12 weeks | Weeks from order placement to goods receipt. Drives reorder timing — if your vendor delivers in 8 weeks, set this to 8. You can override per-vendor or per-style. |
| Safety stock | 4 weeks | Extra coverage buffer. Can be set as weeks of demand or absolute units. The reorder triggers when projected inventory hits this floor — not when it hits zero. |
| MOQ | 500 units | Minimum order quantity. PO recommendations are rounded up to this threshold. Overridable per-vendor. |
| Review cycle | 4 weeks | How often you review and place orders. Used in reorder timing calculations to determine the SOON alert window. |
| Setting | Default | What it does |
|---|---|---|
| Forecast horizon | 13 weeks | How many weeks forward to project demand. Configurable up to 52 weeks. Longer horizons give more visibility but accumulate more uncertainty. |
| Forecast lookback | Auto | How many weeks of history feed the velocity average. "Auto" uses all healthy weeks. A fixed window (e.g., 13 weeks) makes the forecast more responsive to recent trends. |
| Return rate | 5% | Returns are lagged 2 weeks and added back to available inventory. Modes: manual (global %), style-level (from CSV), or category/sub-category average. |
| Sell-through target | 65% by week 8 | Styles below this pace get the SLOW ST badge. Adjust to match your business — basics might target 50% by week 12, fashion might target 75% by week 6. |
Start with defaults. Run the forecast once with default parameters, review styles you know well, then adjust one setting at a time. Changing everything at once makes it impossible to debug if something looks off.
After upload, you'll see the main style queue — your planning command center. Here's how to read it:
Each style shows its name, ID, category, and key metrics at a glance:
Use the sidebar tabs to focus your work queue:
Sort by WOC (ascending) to surface the most urgent reorder needs first. Sort by velocity or Gross Sales to focus on your highest-impact styles.
The Style Planning table provides a spreadsheet-like view of your assortment with configurable lookback and lookforward period controls. Use the period selectors (4w / 8w / 13w / 26w) to set the time windows that drive all table metrics — lookback controls how much history feeds the calculations, and lookforward controls the projection horizon.
Available columns include:
sell_price data)All columns are fully draggable, reorderable, and resizable — customize the layout to match your planning workflow. Column preferences persist across sessions.
Click any style to open its detail page — the core analysis interface. Here's what you'll find:
The main chart shows historical units sold (solid line) and forecast demand (dashed line). Below the chart, a data table shows the raw weekly numbers. Weeks excluded by demand quality filters are highlighted with the reason (spike, trailing dropoff, low margin, etc.).
Below the key metrics, context-specific insights appear as inline callouts:
If you have forward intel the model can't see (upcoming promo, new account launch, planned discontinuation), you can override the base velocity directly. The override persists across data refreshes until you clear it.
These filters determine which historical weeks feed into the velocity baseline. They're the most important accuracy lever in the system.
When a style is winding down (50→40→15→6→2→0), the weak tail drags the velocity baseline below the style's true healthy selling rate. The engine walks backwards from the most recent week and excludes sustained trailing dropoffs. Default: if the last 3+ consecutive weeks fall below 25% of the style's median, they're trimmed.
Weeks where units sold exceed the median by a configurable multiple (default: 3×) are flagged as spikes and excluded. These are common during flash sales, press features, or bulk B2B orders. The spike is shown on the style card with a badge and marked in the detail view data table.
Weeks where size-in-stock coverage drops below a threshold. When customers can't find their size, sales understate true demand. Enable this if you have size data and want the purest possible velocity baseline.
Excludes individual weeks where gross margin falls below a threshold from the velocity baseline. This prevents clearance-driven velocity from inflating the demand forecast for styles that are still being replenished at full price.
In the detail view data table, weeks excluded from the velocity baseline are marked with an × in the status column. Hover over the × to see exactly why that week was excluded — the tooltip shows the specific reason (e.g., "Trailing dropoff," "Spike: 3.2× median," "Low margin: 18%," or "Size breakage: 2 of 6 sizes in stock").
If you disagree with the engine's judgment on a specific week — maybe a "spike" was actually a legitimate wholesale order that reflects real demand — click the × to toggle it back on. The week will be included in the velocity calculation and the forecast will update immediately. Click again to re-exclude it. These overrides persist across data refreshes, so you only need to set them once.
This gives you full control: the engine makes intelligent defaults, but you always have the final say on which data feeds your forecast.
Transparency: Every filtered week is highlighted in the detail view data table with an explanatory reason. You can see exactly what the engine excluded and why — it's never a black box. Between the hover tooltips and click-to-override, you have complete visibility and control over the demand quality pipeline.
Seasonality curves adjust the forward forecast to reflect predictable seasonal patterns. Without them, a style selling 20 units/week in February would be forecast at 20 units/week through July — even if it's outerwear that historically drops to 5 units/week in summer.
A seasonality curve is a 52-week index. An index of 1.0 = average demand, 1.4 = 40% above average, 0.6 = 40% below. The forward forecast is: Base Velocity × Seasonality Index for that week.
Open Settings → Seasonality Curves. You can:
Reactive ships with pre-built curves for common categories (Basics, Tops, Shorts, Bottoms, Outerwear, Pants, Seasonal). These are good starting points — adjust them to match your brand's specific patterns after running your first forecast.
If a specific style's seasonality doesn't match its category (e.g., a "summer" item in the Tops category that actually peaks in spring), you can assign a different seasonality curve at the style level.
When you include size data in your CSV, Reactive automatically builds size curves using ISSR (In-Stock Sales Rate) — units sold per size divided by weeks that size was in stock. This prevents out-of-stock sizes from being penalized in the distribution.
Reactive selects the best available data source for each style:
The size curve chart on each style's detail page shows which tier is being used (labeled at the top) and a confidence rating — High, Med, or Low — based on the robustness of the underlying data. High confidence means style-level data with strong sample sizes. Low means the curve is derived from a broad category average.
The detail view shows a bar chart comparing current on-hand inventory by size against the target allocation from the ISSR curve. This immediately reveals which sizes are over- or under-stocked relative to demand.
Reactive computes reorder recommendations for every style by projecting inventory forward week-by-week using forecast demand, committed POs, and estimated returns.
Styles tagged LOW MARGIN (below the margin floor in Settings → Tags) are automatically excluded from reorder recommendations. They won't appear in the Reorder tab or receive PO suggestions — the economics don't support replenishment at current margins.
When you add a style to the PO cart, the receipt date is automatically set to today + lead time, projected to the nearest Monday. You can override this manually in the cart.
The Price Action Simulator (on each style's detail page) lets you model the impact of a markdown before committing.
Reactive estimates price elasticity per category using log-log regression on your historical AUR and velocity data: ln(velocity) = a + e × ln(price). The coefficient e is the elasticity — an elasticity of -1.5 means a 10% price cut yields a ~15% velocity increase.
Quality gates prevent bad estimates: the engine requires sufficient weeks, meaningful price variation (CV >15% on units, >5% on AUR), and a result between -0.5 and -4.0. If checks fail, it falls back to sub-category or category-level elasticity.
You can override elasticity per category in Settings if you have domain knowledge that differs from the data.
The PO workflow is: review reorder alerts → add styles to cart → adjust quantities → export CSV.
From the detail view or the reorder tab, click "Add to PO Cart." The recommended quantity is pre-filled based on: (Velocity × Target WOC) − Current On-Hand − On-Order, rounded to MOQ and carton pack.
The PO export automatically breaks down total quantity by size using the active ISSR curve. Overstocked sizes get fewer units; sizes running out get priority. The allocation uses largest-remainder rounding so the size quantities sum exactly to the total.
If you uploaded color data, POs are also split by color based on historical sell-through ratios. Three modes are available: style-level, category-level, or manual ratios.
Click "Export PO" in the cart to download a CSV with: style ID, name, category, sub-category, quantity by size, quantity by color, receipt date, estimated cost, and projected demand. This format is designed to paste directly into most vendor order templates or B2B buying portals.
Open-to-Buy (OTB) ensures your buying plan stays within a financial envelope.
In Settings → Planning Parameters → OTB Budget, enter your total buying budget for the season or rolling period (measured in total cost: cost × units).
This prevents the common trap where high-cost categories (like outerwear) eat disproportionate budget while high-velocity categories (like tops) are starved for investment.
Once you're set up, Reactive SDP becomes a weekly planning rhythm:
Data freshness: Reactive will warn you if your data is more than 7 days old. For the most accurate recommendations, re-upload weekly — ideally the same day each week to maintain a consistent planning cadence.
If the forecast looks directionally right on the styles you know best, you're calibrated. From there, the weekly rhythm takes over: upload, review, order, repeat.
Free 30-day trial. Upload a CSV and get your first forecast in 5 minutes.
Start your free trial →