| GBP millions | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | Trend | YoY |
|---|---|---|---|---|---|---|---|---|
| Revenue | 77.9 | 101.8 | 104.8 | 107.2 | 110.0 | 115.9 | +5.4% | |
| Cost of revenue | 34.0 | 47.2 | 45.1 | 47.1 | 46.8 | 49.8 | +6.4% | |
| Gross profit | 43.9 | 54.6 | 59.7 | 60.0 | 63.2 | 66.2 | +4.6% | |
| Research & development | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | — | |
| Selling, general & administrative | 38.9 | 42.7 | 50.2 | 51.6 | 53.6 | — | — | |
| Selling & marketing | 26.5 | 29.4 | 35.8 | 36.5 | 37.7 | — | — | |
| Operating expenses | 37.4 | 42.7 | 50.2 | 51.6 | 53.6 | 55.2 | +2.9% | |
| Operating income | 6.5 | 11.9 | 9.5 | 8.5 | 9.6 | 11.0 | +14.4% | |
| Interest expense | 1.1 | 1.1 | 1.0 | 0.9 | 1.2 | 1.3 | +13.8% | |
| Interest income | 0.0 | 0.0 | 0.0 | 0.2 | 0.5 | 0.6 | +24.1% | |
| Other income / expense | (1.1) | (1.1) | (1.0) | (0.7) | (0.7) | — | — | |
| Pre-tax income | 5.4 | 10.8 | 8.5 | 7.7 | 8.9 | 10.5 | +18.3% | |
| Income tax | 1.4 | 2.3 | 1.9 | 1.9 | 2.4 | 2.8 | +16.0% | |
| Net income | 4.0 | 8.5 | 6.7 | 5.8 | 6.5 | 7.8 | +19.1% | |
| Discontinued operations | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | — | |
| Other net income adjustments | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | — | |
| EPS, basic (per share) | 0.45 | 1.03 | 0.90 | 0.88 | 1.08 | 1.41 | +30.3% | |
| EPS, diluted (per share) | 0.45 | 1.03 | 0.90 | 0.88 | 1.08 | 1.41 | +30.3% | |
| EBITDA | 13.7 | 18.8 | 17.2 | 15.6 | 17.5 | 18.4 | +5.2% | |
| Depreciation & amortization | 7.2 | 6.9 | 7.7 | 7.0 | 7.4 | 7.4 | +0.1% | |
| Weighted average shares (shares) | 8,962,440 | 8,284,746 | 7,457,535 | 6,564,031 | 6,006,133 | 5,508,555 | −8.3% | |
| Weighted average diluted shares (shares) | 8,962,440 | 8,284,746 | 7,457,535 | 6,564,031 | 6,006,133 | 5,508,555 | −8.3% | |
| Gross margin | 56.4% | 53.6% | 57.0% | 56.0% | 57.5% | 57.1% | −0.4 pts | |
| Operating margin | 8.3% | 11.7% | 9.1% | 7.9% | 8.7% | 9.5% | +0.7 pts | |
| Net margin | 5.2% | 8.3% | 6.4% | 5.4% | 5.9% | 6.7% | +0.8 pts |
Amounts are shown in the stated units; per-share amounts and shares are unscaled. Negative amounts are in brackets.