I've built the December 2025 scorecard. 4 of 8 KPIs were on target, and 2 have been off target for three months or more. The script's checks tied revenue, gross margin percent and opex percent of revenue to the P&L.

| Off-target KPI | Actual | Target | Months off |
| :--- | ---: | ---: | ---: |
| Days sales outstanding | 51.2 days | 45.0 days | 3 |
| On-time delivery percent | 93.3% | 95.0% | 3 |
| Active customers | 40 | 42 | 2 |
| Inventory turns | 5.33 | 6.50 | 1 |

The note's Exceptions section covers the two KPIs that have missed for three months or more, days sales outstanding and on-time delivery. Each has a question for its owner. The other four KPIs were on target: revenue, gross margin percent, order fill rate percent and opex percent of revenue.

The note's Data notes section lists both inputs, `kpis_fy2025.csv` (96 rows) and `pnl_fy2025.csv` (120 rows), with their hashes.

Files are in `output/`:
- `scorecard-note.md`
- `scorecard.json`