Documentation
Reading the dashboard
The dashboard shows two unrelated bodies of evidence side by side, and reading it well starts with knowing which half a panel comes from.
Last reviewed against the product on .
The dashboard puts two unrelated bodies of evidence on one screen: the purchases your organization imported, and the market observations providers published. Reading it well is mostly a matter of knowing which half you are looking at, because the two are never combined into a single figure.
Two halves, two clocks
The header carries a separate date for each half rather than one "last updated" line. That is deliberate. Your purchasing data can be current while a provider has been quiet for months, and a single freshness date would average those two facts into something true of neither.
| Panel | Reads from | Dated by |
|---|---|---|
| Purchasing pulse | Your imported purchase records | Latest accepted purchase date |
| Highest weekly impact | Your imported purchase records | Latest accepted purchase date |
| Lower observed supplier prices | Your imported purchase records | Latest accepted purchase date |
| Market evidence metrics | Published provider observations | Latest observation date |
| Market pulse and Novus Insight | Published provider observations | Latest observation date |
| Priority watchlist | Published provider observations | Latest observation date |
| Source health | Provider check results | Latest check date |
Measured from app/app/dashboard/page.tsx.
The purchasing half
Every purchasing figure is measured backwards from your most recent purchase date, not from today. An organization that stopped importing in spring still sees a full weekly spend figure, because the window moved with the data rather than with the calendar. The date beneath each tile is what tells you which it is.
- Usage window
- 56 days
- counted back from your latest purchase, not from today
- Shortest window used
- 7 days
- the floor when your records span less than that
- Price history kept per product
- 52 dates
- one unit price per purchase date
- Currencies
- Kept apart
- totals are joined with a plus sign and never converted
Measured from src/lib/purchasing/intelligence.ts.
Products increased counts only products that have a price to compare against. A product bought once has no baseline, so it is counted neither as increased nor as unchanged, and the line beneath the tile says how many products do have a baseline. Where a price moved but no reliable weekly quantity could be established, the impact reads as needing usage rather than showing an estimate.
The market half
A market signal exists only where two observations match on country, region, city, market, provider, item name, economic level, unit and currency. Any difference makes them different series rather than a movement, which is why a provider can publish steadily and still produce no signal.
Sources supplying is a ratio over every configured provider. Both current and delayed sources count in the numerator, because a delayed source is still serving real persisted observations; only failed and unchecked providers fall out of it. Mean confidence is the arithmetic mean of the per-signal scores below it, which makes it an average of evidence quality and not a probability that anything is correct.
- Coverage of expected history
- 35%
- of each signal's confidence score
- Freshness against cadence
- 25%
- penalised only once a source is past its expected interval
- Source reliability
- 25%
- the lower of the two observations being compared
- Match quality
- 15%
- full marks, because only strict comparison groups reach this point
Measured from src/lib/analytics/engine.ts.
Why the watchlist is ordered the way it is
The priority watchlist is not sorted by money. It is sorted by a score that mixes how far a price moved with how much you spend on that item and how good the evidence is.
- Movement severity
- 55%
- reaches full severity at a movement of 25% and is capped there
- Matching spend weight
- 30%
- zero when no purchase record matches the item and currency
- Confidence
- 15%
- the evidence score above, rescaled
Measured from src/lib/analytics/engine.ts.
The spend match is exact. A provider's item name is reduced to lowercase letters and digits and must equal your own reduced item name, in the same currency, before your spending counts towards priority at all. Where it does not match, the spend term contributes nothing rather than an assumed average. The practical consequence is worth stating plainly: a sharp movement in something you have never bought can outrank a smaller movement in your largest line.
What the dashboard will not tell you
An empty dashboard is a real reading rather than a fault. The page shows no figures until evidence is accepted, and it never fills the gap with samples, because a sample that looks like a measurement is worse than a blank.
Where the numbers can be checked
Each market signal names its provider, level, observation date and official source, and links out to it. For the reasoning behind each half, see how a price change is detected, reading the analytics evidence table and what a saving is.