| GBP millions | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | Trend | YoY |
|---|---|---|---|---|---|---|---|---|
| Revenue | 431.4 | 500.4 | 713.0 | 735.9 | 613.1 | 583.4 | −4.8% | |
| Cost of revenue | 370.7 | 432.5 | 622.4 | 657.0 | 533.8 | 503.1 | −5.8% | |
| Gross profit | 60.7 | 67.9 | 90.7 | 78.8 | 79.2 | 80.3 | +1.4% | |
| Research & development | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | |
| Selling, general & administrative | 53.2 | 57.6 | 68.7 | 70.1 | 71.7 | 71.8 | +0.1% | |
| Selling & marketing | 46.0 | 50.1 | 59.4 | 60.1 | 59.8 | 60.8 | +1.7% | |
| Operating expenses | 54.0 | 57.3 | 69.1 | 71.1 | 74.6 | 71.8 | −3.7% | |
| Operating income | 6.8 | 10.6 | 20.9 | 9.1 | 4.6 | 8.5 | +84.8% | |
| Interest expense | 0.4 | 0.4 | 0.7 | 1.3 | 1.6 | 1.1 | −31.2% | |
| Interest income | 0.2 | 0.2 | 0.2 | 0.5 | 0.5 | 0.3 | −38.4% | |
| Other income / expense | 0.2 | 0.4 | 0.2 | (0.4) | (0.5) | (5.2) | −936.3% | |
| Pre-tax income | 7.0 | 11.0 | 21.1 | 8.7 | 4.1 | 3.3 | −19.4% | |
| Income tax | 1.4 | 2.1 | 4.0 | 1.8 | 1.3 | 1.0 | −22.2% | |
| Net income | 5.5 | 8.9 | 17.1 | 6.9 | 2.8 | 2.3 | −18.0% | |
| Discontinued operations | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | |
| Other net income adjustments | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | |
| EPS, basic (per share) | 0.28 | 0.44 | 0.83 | 0.31 | 0.12 | 0.10 | −17.7% | |
| EPS, diluted (per share) | 0.28 | 0.44 | 0.81 | 0.30 | 0.12 | 0.10 | −20.1% | |
| EBITDA | 13.2 | 17.0 | 27.6 | 16.0 | 12.0 | 10.7 | −10.9% | |
| Depreciation & amortization | 6.2 | 6.2 | 6.5 | 6.7 | 6.3 | 6.9 | +9.4% | |
| Weighted average shares (shares) | 19,952,000 | 20,120,000 | 20,722,000 | 22,525,000 | 23,029,000 | 23,127,000 | +0.4% | |
| Weighted average diluted shares (shares) | 20,070,000 | 20,524,000 | 21,254,000 | 22,853,000 | 23,736,000 | 23,833,000 | +0.4% | |
| Gross margin | 14.1% | 13.6% | 12.7% | 10.7% | 12.9% | 13.8% | +0.8 pts | |
| Operating margin | 1.6% | 2.1% | 2.9% | 1.2% | 0.8% | 1.5% | +0.7 pts | |
| Net margin | 1.3% | 1.8% | 2.4% | 0.9% | 0.5% | 0.4% | −0.1 pts |
Amounts are shown in the stated units; per-share amounts and shares are unscaled. Negative amounts are in brackets.