B3 : Sales Intelligence
Spend n
Price Effect
Vol Effect
Mix Effect
New Items
Lost Items
Spend n+1
Revenue Waterfall
Upload your sales file to build the bridge
Anchor
Growth
Decline

No data yet

Upload an Excel or CSV file with your sales records to generate a waterfall analysis.

Accepts .xlsx · .xls · .csv
Sales over Time
by date aggregation
Upload data to view
Category Split
spend distribution
Upload data to view
Introduction

B3 Sales Intelligence

A self-contained, browser-based revenue bridge analyser. Upload any Excel or CSV sales file and instantly decompose the change in spend between two periods into its Price, Volume, Mix, New & Lost item components — with zero backend, zero dependencies beyond the XLSX parser.

No data leaves your browser
All parsing, calculation and rendering runs entirely client-side. Your file is never uploaded to any server.
Any date grain
Aggregate by day, week, month, quarter, semester or year. Switch freely — the bridge recalculates instantly.
Up to 5 segment dimensions
Map category, region, channel and any other dimension. Filter the bridge to any slice of your data.
Step 1

Uploading Your Data

Click Upload Data in the top-right corner and select a file. Accepted formats:

FormatExtensionNotes
Excel Workbook.xlsxFirst sheet is used; dates are parsed automatically from Excel serials
Legacy Excel.xlsFully supported via the XLSX library
Comma-Separated.csvUTF-8 or ANSI; commas or semicolons as decimal separators are normalised
File requirements: The file must have a header row and at least 3 columns. Maximum 20 columns are supported. A preview of the first 20 rows is shown before any processing begins.

After the preview, click Map Columns → to proceed to column mapping.

Step 2

Column Mapping

Assign each column in your file to its role. Four fields are required, the rest are optional.

FieldRequiredDescription
DateTransaction or period date. Accepts Date objects, Excel serials, or any ISO-parseable string.
Price (unit)Unit price per row. Used to compute VWAP per item per period.
Volume (qty)Quantity sold per row. Combined with price to derive spend.
Item / ProductThe product or SKU identifier. Drives per-item decomposition.
Segments 1–5Optional dimension columns (e.g. Category, Region, Channel). If the name field is left blank, the column header is used automatically.
Auto-detection: Common column names (date, price, volume, qty, category, region, channel…) are detected and pre-filled automatically.
Core feature

The Revenue Waterfall Bridge

The waterfall decomposes the change in total spend between two periods into four additive effects. Each bar is green for growth or red for decline. The two anchor bars (Spend n and Spend n+1) are shown in blue.

Spend n
Price Effect
Volume Effect
Mix Effect
New Items
Lost Items
Spend n+1
BarMeaning
Spend nTotal revenue in the base period, anchored at zero.
Price EffectRevenue change driven purely by unit price movement, holding volume at period n levels.
Volume EffectRevenue change driven by volume change, holding price at period n levels.
Mix EffectThe interaction term: combined impact of simultaneous price and volume moves (ΔP × ΔV).
New ItemsRevenue from products that appear in n+1 but not in n.
Lost ItemsRevenue lost from products present in n but absent in n+1 (shown as negative).
Spend n+1Total revenue in the compare period. Always equals the sum of all preceding bars.
Bridge identity: Spend n+1 = Spend n + Price Effect + Volume Effect + Mix Effect + New Items + Lost Items. The bridge closes to zero residual by construction.

Hover any bar to see its value and share of Spend n. Click any bar to open the drill-down detail table for that effect.

At a glance

KPI Cards

The seven cards at the top mirror the waterfall bars. Each bridge card shows the effect value and its percentage of Spend n as a sub-line with a directional arrow. The Spend n+1 card shows total delta vs Spend n.

Cards update instantly on every filter change — period selection, segment filter, item filter, or exclude toggle.
Sidebar controls

Filters & Segments

ControlWhat it does
Date AggregationGroups rows into periods. Change this to switch the bridge between yearly, quarterly, monthly, weekly or daily comparisons.
Period n / n+1Selects the base and compare periods. Dropdowns are sorted chronologically regardless of label format.
Segment byChooses which mapped dimension (Category, Region, Channel…) populates the filter values list below it.
Filter valuesMulti-select list. Hold Ctrl / Cmd to select multiple values. The bridge and all charts update to show only matching rows. Empty = all.
Item filterFilters to specific products or SKUs, independent of the segment filter. Combine both for highly granular slices.
Analysis scopeToggle to exclude New & Lost items from the bridge. Useful when you want to isolate the price/volume/mix effects on the continuing assortment only.
DisplaySwitch all chart values between Absolute (currency) and % of Spend n.
Bottom row

Sales over Time & Category Split

Sales over Time (left) shows total spend for every period at the current aggregation level. The two selected periods (n and n+1) are highlighted in blue; all others are grey. Hover any bar for the period label and spend value.

Category Split (right) shows a donut chart of spend broken down by whichever dimension is currently selected in the Segment by dropdown. If no segment is selected it falls back to the first mapped segment, then to item level. Up to 8 slices are shown; the remainder are grouped as "Other". The centre label shows total spend across the filtered dataset.

Both charts respect all active filters — segment, item, and period range — and redraw on every control change.
Deep analysis

Drill-Down

Click any bar in the waterfall to open the drill-down modal for that effect. The table shows one row per product contributing to that bar, with full price and volume data for both periods.

ColumnDescription
Item / ProductThe product identifier from your data.
Price n / n+1Volume-weighted average price (VWAP) per item per period.
Vol n / n+1Total volume sold per item per period.
EffectThis item's contribution to the selected bridge bar (e.g. its individual price effect).
% of Spend nEffect as a share of total base-period spend.
Mini barProportional inline bar showing relative contribution within the set.

Click any column header to sort ascending or descending. Click the same header again to flip direction. The sort is live and does not re-query data.

Quick navigation

Quick Presets

Two groups of chips at the bottom of the sidebar set the aggregation and both period selectors in one click.

PresetAggregationSets n → n+1
YoYYearPrevious year → latest year
QoQQuarterPrevious quarter → latest quarter
MoMMonthPrevious month → latest month
WoWWeekPrevious week → latest week
DoDDayYesterday → latest day
YTDMonthSame month last year → latest month
HTDMonth6 months prior → latest month
QTDMonth3 months prior → latest month
MTDWeekSame week last month → latest week
WTDDaySame day last week → latest day
The active chip is highlighted in blue. It clears automatically when you manually change any period selector or aggregation.
Export

Print & PDF Export

Click Print in the top-right to generate a print-ready view. The interface switches to a light theme, all three charts are redrawn with inverted colours, and the browser print dialog opens. Choose Save as PDF in the dialog to export a document.

The print view includes a header with the current period range, active filters, and today's date. The sidebar and navigation controls are hidden. After the dialog closes the dark theme is automatically restored.
Methodology

Mathematics Reference

For each item i that exists in both periods:

VWAPn = ΣSpendn / ΣVoln
Volume-Weighted Average Price — avoids distortion from unequal transaction sizes
Price Effecti = Voln,i × (VWAPn+1,i − VWAPn,i)
Revenue impact of price change, holding volume constant at base-period level
Volume Effecti = VWAPn,i × (Voln+1,i − Voln,i)
Revenue impact of volume change, holding price constant at base-period level
Mix Effecti = ΔPricei × ΔVoli
Second-order interaction — the joint contribution of simultaneous price and volume movements
New Items = Σ (VWAPn+1,i × Voln+1,i) for i ∉ period n
Lost Items = −Σ (VWAPn,i × Voln,i) for i ∉ period n+1
Bridge closure: Spend n+1 ≡ Spend n + Σ Price Effects + Σ Volume Effects + Σ Mix Effects + New Items + Lost Items. The residual is always zero — no rounding artefacts or unexplained variance.