I've built the December 2025 scorecard: **4 Green, 1 Amber, 3 Red** out of 8 KPIs. The data file is complete for all 12 months, with no duplicate or missing rows.

| KPI | Actual | Target | Variance | Status | Trend |
|---|---|---|---|---|---|
| Revenue | $826,751 | $823,600 | +$3,151 (+0.4%) | 🟢 | Down from November (−$72k), but in line with the budget's step-down |
| Gross margin | 26.1% | 26.0% | +0.1 pts | 🟢 | Up and down within about 25.8–26.1% |
| Days sales outstanding (DSO) | 51.2 days | 45.0 days | +6.2 days (13.8% worse) | 🔴 | 3rd miss in a row; up from 44.9 in September |
| On-time delivery | 93.3% | 95.0% | −1.7 pts | 🟡 | 3rd miss in a row; down every month since September |
| Order fill rate | 97.6% | 97.0% | +0.6 pts | 🟢 | Up every month since September |
| Active customers | 40 | 42 | −2 | 🔴 | 2nd miss in a row; down one customer a month (43 → 40) |
| Inventory turns | 5.33 | 6.50 | −1.17 (−18%) | 🔴 | Fell sharply from 6.67 in November |
| Opex % of revenue | 25.1% | 25.2% | −0.1 pts | 🟢 | Met target, but up 2.5 pts from November because revenue fell |

**Full-year revenue:** $11.24M against an $11.60M budget, which is $362k (3.1%) short. December only met target in 4 of the 12 months.

**Points for the commentary:**
- **Receivables collection is getting worse.** DSO has risen for three months while revenue fell. With fewer sales coming in, slower collection hurts cash, so this is the biggest issue to raise.
- **Inventory turns:** the drop from 6.67 to 5.33 in one month is the largest move on the scorecard. Turns compare the last three months' cost of goods sold to month-end inventory, so this points to inventory building up as sales slow. It's worth checking the inventory balance (account 1200) before this goes out.
- **On-time delivery and active customers** are both declining slowly and steadily. Neither is a single bad month.

**Things to check:**
- **Status thresholds are my choice.** The data doesn't define any. I used: Green = at or better than target, Amber = within 2% of target, Red = more than 2% off. You can change this with `AMBER_TOL` in the script. On-time delivery is the only KPI near the line; at 1.8% off, it would turn Red with a tighter threshold.
- **Revenue, gross margin and opex aren't cross-checked.** Their definitions point to `pnl_fy2025.csv`, which isn't in the workspace, so I couldn't confirm them against it.

Files are in `/tmp/spb-out-of-scope-claude-3lozyj_6/`:
- `scorecard_2025-12.md`: the formatted scorecard
- `scorecard_2025-12.csv`: the same figures in machine-readable form
- `scorecard.py`: the script that produces both; run it again for any month with `python3 scorecard.py 2025-11`