Normalize wide retailer sell-out reports into one analytics-ready table. The tool flattens stacked headers such as WTD / MTD / YTD over repeated metrics, keeps product fields as dimensions, and saves repeatable mappings for recurring report formats.
The app separates source sheets, header detection, canonical field mappings, and export formats. Once a source shape is mapped, you can reload the same configuration and process the next reporting cycle with much less manual cleanup.
All parsing happens locally in your browser. Imported spreadsheets are not uploaded to a server.
Load weekly sell-out reports into the tool. Each file's sheets become individual sources you can include or exclude.
.xlsx, .xls, .csv; multi-select is allowed.Tell the tool where the header rows are and which cadences and metrics to expect. These settings drive the Field Mapping panel.
WTD, MTD, or YTD.WTD + YTD adds those cadence slots to Field Mapping.AUR, ST%, or a custom formula using mapped metric and dimension keys.Bind canonical fields to source columns. Dimension groups stay wide; cadence metrics become the long-format fact rows.
Inspect the result before exporting. The first 500 rows are rendered; the full set is still exported.
The export uses a long metric schema. Product and retail columns stay as dimensions, while each mapped cadence metric becomes one output row.
| Schema area | Fields |
|---|---|
| Lineage | source_file, source_sheet, source_row |
| Retail context | retailer, channel, location_type, store_name |
| Product identity | brand, style, sku, upc, description |
| Product attributes | color, size, product_type, material, release, seasonality, sale_status, plus custom dimensions |
| Metric fact | cadence, year_basis, metric, value, value_source |
Metric rows include sale_units, sale_dollars, on_hand_units, custom metric keys, and optional calculated sell_through_pct.
Every output row carries source metadata so exported records can be traced back to the original workbook, sheet, and row. Header debug output also carries detected cadence and year-basis for each source column.
| Source layer | What it preserves |
|---|---|
| Workbook | Original filename and included sheets. |
| Header detection | Group row, column header row, deleted rows, and inferred cadence/year-basis. |
| Mapping | Canonical field key, source column, role as dimension/metric/calculation. |
| Export | Value plus the field/metric source used to produce it. |
When a row above the metric headers contains timing labels such as WTD, MTD, QTD, or YTD, the app carries that cadence across repeated columns like Sale U and Sale $.
The LY toggle treats LY and Last Year labels as comparison values instead of cadences. Calculated metrics add formula-based rows when the needed mapped fields are available.
| Calculation | Definition |
|---|---|
| AUR | sale_dollars / sale_units, only when units are positive. |
| ST% | sale_units / (sale_units + on_hand_units), when both mapped inputs are available. |
| Custom calculated metric | Formula based on mapped dimension/metric keys, emitted as a metric row. |
Use sheet checkboxes to include workbook tabs. Delete Rows removes 1-based Excel row numbers before parsing.
Saving a configuration preserves detected rows, cadence choices, and field mapping so the same retailer report shape can be normalized again.
Delete Rows before parsing.