Upload data¶
All intake paths — CSV upload, ERP connector, or SFTP — normalize into one canonical schema. The forecasting engine only sees this schema.
Required table: orders¶
One row per order line. Do not pre-aggregate; the engine builds monthly
(customer_id, product_id) series.
| Column | Required | Notes |
|---|---|---|
customer_id |
Yes | Stable over time — series key |
product_id |
Yes | SKU — stable over time |
order_date |
Yes | Any parseable date; normalised to month |
ordered_qty |
Yes | Forecast target (units) |
revenue |
Recommended | Enables value-based analysis |
unit_price |
Recommended | Demand driver; derivable from revenue ÷ qty |
currency |
Optional | Defaults to workspace currency |
location_id |
Optional | Site or region dimension |
Minimum to run: the four required columns.
Minimum to be useful: required columns plus revenue or unit_price.
Optional enrichment tables¶
product_master¶
Unlocks hierarchy, readable labels, and cold-start detection.
| Column | Unlocks |
|---|---|
product_id |
Join key |
product_name |
Dashboards and reports |
brand, category, sub_category |
Hierarchical reconciliation |
launch_date |
Cold-start handling |
price_tier |
Attribute-based priors |
customer_master¶
| Column | Unlocks |
|---|---|
customer_id |
Join key |
customer_name |
Readability |
segment |
Segment-aware modelling (Growth+) |
region, country |
Geographic seasonality |
events¶
Promotion, stock-out, or shutdown calendars (FC-008). Masks or down-weights affected periods during training.
| Column | Notes |
|---|---|
event_type |
promotion, stockout, price_change, shutdown, other |
start_date, end_date |
Inclusive month range |
scope |
all, product_group:…, or series:customer_product |
mask_strategy |
exclude or downweight |
Data readiness scorecard¶
After upload, AccuPredix surfaces a readiness score (also on the dashboard as data quality score):
| Check | Blocked | Limited | Good |
|---|---|---|---|
| History per series | cold-start only | < 12 months | ≥ 24 months |
| Overall history | < 3 months | 3–11 months | ≥ 24 months |
| Recency | > 6 months old | 2–6 months | within 1 month |
| ID stability | IDs in disjoint windows | some churn | stable keys |
| Required columns | any missing | no revenue/price | complete |
Rules of thumb¶
- 24+ months of history gives the best seasonality learning.
- 12 months is the practical minimum for trend.
- Keep
customer_idandproduct_idstable — re-coded IDs silently break history. - Sparse / intermittent demand is expected in B2B; specialist models handle it.
Upload workflow in the app¶
- Workspaces → select workspace → Upload.
- Drop CSV/XLSX or use a connector sync (Growth+).
- Review validation messages and readiness badges.
- Optional: upload
product_master,customer_master,eventsin the same session. - Proceed to Run forecast when readiness is not blocked.
ERP and connector mapping¶
For SAP, NetSuite, Dynamics, and similar systems, map ERP field names to the canonical columns in the connector setup wizard. The engine is identical whether data came from CSV or live sync.
See Integrations for connector-specific steps.
Template and synthetic data¶
Developers can generate reference datasets with the engine CLI:
cd model && uv run accupredix generate-data
This emits tables matching the canonical schema and serves as a downloadable template.