| GBP millions | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | Trend | YoY |
|---|---|---|---|---|---|---|---|---|
| Revenue | 114.7 | 148.6 | 201.0 | 224.4 | 177.0 | 173.2 | −2.1% | |
| Cost of revenue | 94.9 | 118.1 | 162.1 | 181.1 | 149.5 | 142.0 | −5.0% | |
| Gross profit | 19.8 | 30.5 | 38.9 | 43.3 | 27.5 | 31.3 | +13.7% | |
| Research & development | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | |
| Selling, general & administrative | 15.6 | 18.5 | 22.5 | 23.5 | 22.7 | 22.5 | −1.0% | |
| Selling & marketing | 2.2 | 3.4 | 5.4 | 4.7 | 3.2 | 2.5 | −21.0% | |
| Operating expenses | 15.5 | 18.5 | 22.5 | 23.5 | 22.7 | 21.3 | −6.2% | |
| Operating income | 4.3 | 12.0 | 16.4 | 19.8 | 4.8 | 10.0 | +108.8% | |
| Interest expense | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 0.2 | +67.3% | |
| Interest income | 0.1 | 0.0 | 0.3 | 1.5 | 1.0 | 0.5 | −46.4% | |
| Other income / expense | 0.7 | 0.0 | 0.3 | 1.5 | 0.9 | 0.3 | −60.9% | |
| Pre-tax income | 5.0 | 12.1 | 16.7 | 21.3 | 5.6 | 10.3 | +83.0% | |
| Income tax | 0.8 | 3.5 | 2.9 | 4.6 | 1.5 | 2.8 | +89.1% | |
| Net income | 4.1 | 8.6 | 13.8 | 16.7 | 4.2 | 7.5 | +80.9% | |
| 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.10 | 0.20 | 0.32 | 0.38 | 0.10 | 0.17 | +77.1% | |
| EPS, diluted (per share) | 0.10 | 0.20 | 0.32 | 0.38 | 0.10 | 0.17 | +77.8% | |
| EBITDA | 13.1 | 20.6 | 25.4 | 28.6 | 14.6 | 18.3 | +24.9% | |
| Depreciation & amortization | 8.8 | 8.6 | 8.6 | 8.9 | 8.9 | 8.3 | −6.6% | |
| Weighted average shares (shares) | 43,667,360 | 43,631,545 | 43,561,593 | 43,488,441 | 43,458,068 | 43,468,111 | +0.0% | |
| Weighted average diluted shares (shares) | 43,667,360 | 43,698,986 | 43,671,502 | 43,635,970 | 43,672,384 | 43,758,140 | +0.2% | |
| Gross margin | 17.3% | 20.5% | 19.4% | 19.3% | 15.5% | 18.0% | +2.5 pts | |
| Operating margin | 3.8% | 8.1% | 8.1% | 8.8% | 2.7% | 5.8% | +3.1 pts | |
| Net margin | 3.6% | 5.8% | 6.9% | 7.5% | 2.4% | 4.4% | +2.0 pts |
Amounts are shown in the stated units; per-share amounts and shares are unscaled. Negative amounts are in brackets.