| GBP millions | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | Trend | YoY |
|---|---|---|---|---|---|---|---|---|
| Revenue | 98.5 | 99.1 | 116.4 | 136.6 | 156.4 | 163.3 | +4.4% | |
| Cost of revenue | 70.1 | 66.5 | 79.6 | 92.6 | 109.0 | 112.0 | +2.7% | |
| Gross profit | 28.4 | 32.6 | 36.9 | 44.0 | 47.4 | 51.4 | +8.5% | |
| Research & development | 0.4 | 0.4 | 0.5 | 0.6 | 0.0 | — | — | |
| Selling, general & administrative | 23.8 | 26.6 | 30.3 | 38.4 | 38.8 | — | — | |
| Selling & marketing | 3.0 | 3.6 | 4.5 | 3.7 | 3.6 | — | — | |
| Operating expenses | 23.8 | 26.6 | 30.3 | 38.4 | 38.8 | 40.9 | +5.3% | |
| Operating income | 6.1 | 7.2 | 8.2 | 5.6 | 8.5 | 10.5 | +23.0% | |
| Interest expense | 0.6 | 0.4 | 0.6 | 1.2 | 1.3 | 0.9 | −27.4% | |
| Interest income | 0.0 | 0.0 | 0.1 | 0.4 | 0.1 | 0.1 | −49.2% | |
| Other income / expense | (0.6) | (0.2) | (0.8) | (0.8) | (1.7) | — | — | |
| Pre-tax income | 5.4 | 7.0 | 7.5 | 4.8 | 6.9 | 8.4 | +22.7% | |
| Income tax | 0.4 | 1.0 | 1.2 | 1.2 | 0.6 | 1.9 | +223.7% | |
| Net income | 4.0 | 6.5 | 5.2 | 3.7 | 6.6 | 6.8 | +3.0% | |
| Discontinued operations | (1.2) | 0.1 | (1.2) | 0.0 | 0.0 | — | — | |
| Other net income adjustments | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | — | |
| EPS, basic (per share) | 0.13 | 0.20 | 0.18 | 0.11 | 0.20 | 0.20 | +1.7% | |
| EPS, diluted (per share) | 0.12 | 0.20 | 0.17 | 0.11 | 0.19 | 0.20 | +4.8% | |
| EBITDA | 11.0 | 12.0 | 13.2 | 12.5 | 15.8 | 18.5 | +17.2% | |
| Depreciation & amortization | 5.0 | 4.7 | 5.2 | 6.5 | 7.6 | 7.9 | +4.3% | |
| Weighted average shares (shares) | 31,855,908 | 32,070,324 | 32,187,134 | 33,361,271 | 33,089,922 | 33,184,904 | +0.3% | |
| Weighted average diluted shares (shares) | 32,526,010 | 33,133,999 | 33,007,209 | 33,361,109 | 33,645,697 | 33,918,842 | +0.8% | |
| Gross margin | 28.8% | 32.9% | 31.7% | 32.2% | 30.3% | 31.5% | +1.2 pts | |
| Operating margin | 6.2% | 7.3% | 7.1% | 4.1% | 5.5% | 6.4% | +1.0 pts | |
| Net margin | 4.0% | 6.5% | 4.5% | 2.7% | 4.2% | 4.1% | −0.1 pts |
Amounts are shown in the stated units; per-share amounts and shares are unscaled. Negative amounts are in brackets.