| GBP millions | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | Trend | YoY |
|---|---|---|---|---|---|---|---|---|
| Revenue | 48.0 | 50.2 | 68.7 | 82.0 | 81.0 | 81.9 | +1.1% | |
| Cost of revenue | 20.4 | 19.7 | 31.5 | 37.7 | 35.0 | 40.4 | +15.5% | |
| Gross profit | 27.6 | 30.5 | 37.2 | 44.4 | 46.0 | 41.5 | −9.9% | |
| Research & development | 3.0 | 3.4 | 3.7 | 0.0 | 0.0 | 0.0 | −100.0% | |
| Selling, general & administrative | 15.3 | 22.9 | 27.7 | 37.1 | 45.0 | 38.1 | −15.5% | |
| Selling & marketing | 8.4 | 16.8 | 16.9 | (5.6) | 0.0 | 0.0 | — | |
| Operating expenses | 18.3 | 26.3 | 31.4 | 37.3 | 45.0 | 38.1 | −15.5% | |
| Operating income | 9.3 | 4.3 | 5.8 | 7.3 | 1.0 | 3.4 | +248.6% | |
| Interest expense | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | −0.7% | |
| Interest income | 0.1 | 0.0 | 0.0 | 0.0 | 0.2 | 0.6 | +236.0% | |
| Other income / expense | (0.3) | 0.4 | (0.7) | (0.1) | 0.0 | (1.8) | −6467.9% | |
| Pre-tax income | 4.0 | 4.6 | 2.7 | 7.1 | 1.0 | 1.6 | +59.6% | |
| Income tax | 0.9 | 1.8 | 0.6 | 0.3 | 0.5 | 1.1 | +110.7% | |
| Net income | 2.9 | 2.4 | 1.5 | 6.8 | 0.5 | 0.5 | +6.6% | |
| Discontinued operations | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | |
| Other net income adjustments | (0.3) | (0.4) | (0.6) | 0.0 | 0.0 | 0.0 | — | |
| EPS, basic (per share) | 0.10 | 0.08 | 0.05 | 0.23 | 0.02 | 0.02 | +6.2% | |
| EPS, diluted (per share) | 0.10 | 0.08 | 0.05 | 0.22 | 0.02 | 0.02 | +6.3% | |
| EBITDA | 9.6 | 10.6 | 9.6 | 15.0 | 9.0 | 10.0 | +10.7% | |
| Depreciation & amortization | 5.5 | 5.9 | 6.8 | 7.7 | 7.9 | 8.4 | +6.5% | |
| Weighted average shares (shares) | 28,919,000 | 29,229,000 | 29,486,000 | 29,836,000 | 30,169,000 | 30,284,000 | +0.4% | |
| Weighted average diluted shares (shares) | 29,740,000 | 30,131,000 | 30,330,000 | 30,529,000 | 30,628,000 | 30,812,000 | +0.6% | |
| Gross margin | 57.5% | 60.8% | 54.2% | 54.1% | 56.8% | 50.6% | −6.2 pts | |
| Operating margin | 19.3% | 8.5% | 8.5% | 8.8% | 1.2% | 4.1% | +2.9 pts | |
| Net margin | 6.0% | 4.7% | 2.2% | 8.3% | 0.6% | 0.6% | +0.0 pts |
Amounts are shown in the stated units; per-share amounts and shares are unscaled. Negative amounts are in brackets.