I've produced December 2025's KPI scorecard and the monthly business review write-up, then built the 6-slide deck from them. All three scripts passed their checks: the KPIs tie to the P&L, the P&L figures reconcile, and every one of the deck's 67 figures came from the two source outputs.

**Deck:** `output/IS_MBR_2025-12.pptx`

**December 2025:**
- **Revenue:** $827K against a $824K budget, $3K ahead.
- **Operating income:** $8K against $13K, ($5K) short. Gross margin was 26.1% against a 26.8% budget, (0.7) pts below.
- **Main cost misses in the month:** cost of goods sold, $584K against $578K, and other operating costs, $16K against $10K. Each was ($6K) over budget. Technology came in $4K under.
- **Year to date:** revenue is ($362K) behind budget and operating income ($195K) behind, so December's small revenue beat doesn't change the full-year picture.
- **KPIs:** 4 of 8 were on target. Two have been off target for three months running:
  - Days sales outstanding: 51.2 days against a 45.0 target.
  - On-time delivery: 93.3% against 95.0%.
  - Also off target: active customers, 40 against 42 for two months, and inventory turns, 5.33 against 6.50 for the first time.

The two measures of gross margin don't match. The KPI target is 26.0%, so December's 26.1% counts as on target. The P&L budget is 26.8%, so the same result shows as (0.7) pts below. Both documents state this correctly. Readers may still ask why one says on target and the other says below budget, so it's worth being ready to explain that the KPI target and the budget were set separately.

The data notes also record that some rows don't add exactly because each amount is rounded on its own.

Files are in `output/`:
- `IS_MBR_2025-12.pptx`
- `scorecard-note.md`
- `mbr-narrative.md`
- `scorecard.json`
- `mbr.json`
- `slide-map.json`
- `deck.json`