| GBP millions | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2026 | Trend | YoY |
|---|---|---|---|---|---|---|---|---|
| Revenue | 118.2 | 122.2 | 123.8 | 128.3 | 111.3 | 117.8 | +5.8% | |
| Cost of revenue | 96.0 | 95.3 | 102.2 | 107.9 | 0.0 | — | — | |
| Gross profit | 22.2 | 26.9 | 21.6 | 20.3 | 12.3 | — | — | |
| Research & development | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | — | |
| Selling, general & administrative | 96.0 | 95.3 | 0.0 | (0.1) | 0.0 | — | — | |
| Selling & marketing | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | — | |
| Operating expenses | 1.4 | 0.1 | 0.2 | (0.1) | 0.0 | — | — | |
| Operating income | 24.5 | 26.9 | 21.4 | 20.4 | 20.5 | 3.3 | −84.1% | |
| Interest expense | 0.7 | 0.4 | 0.2 | 0.2 | 0.1 | — | — | |
| Interest income | 0.0 | 0.0 | 1.1 | 3.0 | 2.5 | 1.1 | −55.0% | |
| Other income / expense | 4.3 | 2.7 | 0.8 | (8.8) | (3.0) | — | — | |
| Pre-tax income | 25.1 | 29.5 | 22.2 | 11.6 | 17.5 | 3.2 | −81.8% | |
| Income tax | 5.4 | 6.1 | 4.1 | 5.2 | 5.9 | 0.8 | −86.9% | |
| Net income | 19.6 | 23.4 | 18.1 | 6.5 | 10.7 | 2.4 | −77.3% | |
| Discontinued operations | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | — | |
| Other net income adjustments | 0.0 | 0.0 | 0.0 | 0.0 | (1.0) | — | — | |
| EPS, basic (per share) | 1.25 | 1.49 | 1.15 | 0.40 | 0.66 | 0.15 | −76.6% | |
| EPS, diluted (per share) | 1.25 | 1.44 | 1.13 | 0.39 | 0.65 | 0.15 | −76.7% | |
| EBITDA | 34.9 | 39.3 | 32.0 | 18.7 | 30.9 | 14.4 | −53.4% | |
| Depreciation & amortization | 10.3 | 9.4 | 9.5 | 6.9 | 10.4 | 11.2 | +7.1% | |
| Weighted average shares (shares) | 15,671,672 | 15,707,706 | 15,825,397 | 16,098,412 | 16,160,786 | 15,643,389 | −3.2% | |
| Weighted average diluted shares (shares) | 15,722,563 | 16,209,965 | 16,119,389 | 16,373,862 | 16,296,042 | 15,980,292 | −1.9% | |
| Gross margin | 18.8% | 22.0% | 17.4% | 15.8% | 11.0% | — | — | |
| Operating margin | 20.7% | 22.0% | 17.3% | 15.9% | 18.4% | 2.8% | −15.7 pts | |
| Net margin | 16.6% | 19.2% | 14.7% | 5.0% | 9.6% | 2.1% | −7.5 pts |
Amounts are shown in the stated units; per-share amounts and shares are unscaled. Negative amounts are in brackets.