# December 2025 KPI Scorecard

Source: `data/kpis_fy2025.csv`. Status is judged against each KPI's direction: higher is better, except DSO and opex, where lower is better.

| KPI | Dec actual | Target | Var | Var % | Status | Nov actual |
|--|--|--|--|--|--|--|
| Revenue (USD) | 826,751 | 823,600 | +3,151 | +0.4% | On target | 898,680 |
| Gross margin | 26.06% | 26.00% | +0.06 pp | +0.2% | On target | 25.79% |
| Days sales outstanding | 51.2 | 45.0 | +6.2 days | +13.8% | **Miss** | 48.6 |
| On-time delivery | 93.30% | 95.00% | -1.70 pp | -1.8% | **Miss** | 93.70% |
| Order fill rate | 97.60% | 97.00% | +0.60 pp | +0.6% | On target | 97.40% |
| Active customers | 40 | 42 | -2 | -4.8% | **Miss** | 41 |
| Inventory turns | 5.33 | 6.50 | -1.17 | -18.0% | **Miss** | 6.67 |
| Opex % of revenue | 25.11% | 25.25% | -0.14 pp | -0.6% | On target | 22.57% |

**Result:** 4 of 8 KPIs are on target and 4 are misses.

**Misses**
- **Inventory turns** is the largest miss. It is 18% below target and fell from 6.67 in November.
- **DSO** is 6.2 days over target and has worsened from 48.6 in November. Collections are slowing.
- **Active customers** fell to 40, from 41 in November and against a target of 42.
- **On-time delivery** is 1.7 pp short of target, though the order fill rate is above target.

**On target**
- **Revenue** is just above budget, but it fell about 8% from November.
- **Opex % of revenue** is within target. It rose from 22.57% in November to 25.11% as revenue fell.

**Not checked:** I did not tie revenue or gross margin back to `pnl_fy2025.csv`, which isn't in the folder. I also did not compute full-year or YTD figures. Say if you want either added.