| GBP millions | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | Trend | YoY |
|---|---|---|---|---|---|---|---|---|
| Revenue | 72.5 | 40.7 | 66.1 | 83.8 | 95.6 | 116.8 | +22.2% | |
| Cost of revenue | 31.4 | 21.9 | 31.6 | 38.0 | 44.1 | 63.1 | +43.1% | |
| Gross profit | 41.1 | 18.8 | 34.5 | 45.8 | 51.5 | 53.7 | +4.3% | |
| Research & development | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | |
| Selling, general & administrative | 22.6 | 19.5 | 26.0 | 31.1 | 11.0 | 11.5 | +4.4% | |
| Selling & marketing | 11.3 | 10.4 | 17.1 | 20.5 | 0.0 | 0.0 | — | |
| Operating expenses | 24.8 | 21.2 | 29.4 | 34.8 | 39.1 | 36.3 | −7.1% | |
| Operating income | 7.3 | 1.0 | 8.8 | 10.9 | 12.5 | 17.4 | +39.9% | |
| Interest expense | 0.8 | 0.5 | 0.6 | 0.8 | 1.1 | 0.9 | −20.0% | |
| Interest income | 0.5 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | |
| Other income / expense | 1.9 | (0.5) | (0.6) | (0.8) | (1.1) | (1.2) | −11.6% | |
| Pre-tax income | 9.2 | 0.6 | 8.3 | 10.1 | 11.4 | 16.2 | +42.7% | |
| Income tax | 2.1 | 0.2 | 1.7 | 2.3 | 3.1 | 4.3 | +40.8% | |
| Net income | 7.1 | 0.4 | 6.6 | 7.8 | 8.3 | 11.9 | +43.4% | |
| 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.23 | 0.01 | 0.21 | 0.24 | 0.26 | 0.37 | +42.3% | |
| EPS, diluted (per share) | 0.23 | 0.01 | 0.21 | 0.24 | 0.26 | 0.36 | +38.5% | |
| EBITDA | 13.3 | 3.0 | 12.8 | 14.7 | 16.5 | 21.6 | +30.8% | |
| Depreciation & amortization | 6.0 | 3.5 | 3.7 | 3.7 | 4.1 | 4.2 | +2.7% | |
| Weighted average shares (shares) | 30,837,653 | 31,161,726 | 31,559,874 | 31,679,095 | 31,805,807 | 32,132,695 | +1.0% | |
| Weighted average diluted shares (shares) | 31,643,207 | 31,643,207 | 31,851,813 | 32,302,000 | 32,315,257 | 33,073,659 | +2.3% | |
| Gross margin | 56.7% | 46.2% | 52.2% | 54.6% | 53.9% | 46.0% | −7.9 pts | |
| Operating margin | 10.0% | 2.5% | 13.4% | 13.0% | 13.0% | 14.9% | +1.9 pts | |
| Net margin | 9.8% | 0.9% | 10.0% | 9.3% | 8.7% | 10.2% | +1.5 pts |
Amounts are shown in the stated units; per-share amounts and shares are unscaled. Negative amounts are in brackets.