| GBP millions | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | Trend | YoY |
|---|---|---|---|---|---|---|---|---|
| Revenue | 30.5 | 33.4 | 33.1 | 31.0 | 38.2 | 47.2 | +23.5% | |
| Cost of revenue | 15.3 | 17.8 | 19.6 | 17.0 | 20.3 | 23.8 | +17.4% | |
| Gross profit | 15.2 | 15.5 | 13.5 | 14.0 | 17.3 | 23.4 | +34.8% | |
| Research & development | 0.0 | 0.0 | 0.1 | 0.1 | 0.2 | 0.2 | +4.2% | |
| Selling, general & administrative | 9.9 | 9.8 | 9.8 | 11.4 | 12.2 | 16.2 | +32.0% | |
| Selling & marketing | (0.7) | (0.8) | (0.6) | 0.0 | 0.0 | 0.0 | — | |
| Operating expenses | 9.9 | 9.9 | 9.9 | 11.4 | 13.0 | 15.5 | +18.9% | |
| Operating income | 5.3 | 5.6 | 3.6 | 2.5 | 4.9 | 7.9 | +61.3% | |
| Interest expense | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | +200.0% | |
| Interest income | 0.1 | 0.1 | 0.1 | 0.2 | 0.3 | 0.1 | −58.7% | |
| Other income / expense | 0.1 | 0.1 | 0.1 | 0.2 | 0.3 | 0.1 | −68.5% | |
| Pre-tax income | 5.4 | 5.7 | 3.7 | 2.8 | 5.2 | 8.0 | +54.0% | |
| Income tax | 1.1 | 1.0 | 0.4 | 0.2 | 1.1 | 1.2 | +15.0% | |
| Net income | 4.2 | 4.7 | 3.3 | 2.5 | 4.1 | 6.8 | +64.2% | |
| 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.21 | 0.23 | 0.16 | 0.14 | 0.25 | 0.40 | +60.0% | |
| EPS, diluted (per share) | 0.20 | 0.21 | 0.15 | 0.13 | 0.25 | 0.38 | +52.0% | |
| EBITDA | 6.6 | 7.0 | 4.9 | 4.0 | 6.4 | 9.3 | +46.2% | |
| Depreciation & amortization | 1.2 | 1.3 | 1.2 | 1.2 | 1.2 | 1.4 | +20.4% | |
| Weighted average shares (shares) | 20,387,477 | 20,429,730 | 20,481,713 | 18,716,282 | 16,674,541 | 16,796,172 | +0.7% | |
| Weighted average diluted shares (shares) | 21,142,524 | 22,127,332 | 21,874,040 | 18,789,316 | 16,839,722 | 17,797,706 | +5.7% | |
| Gross margin | 49.8% | 46.5% | 40.8% | 45.0% | 45.4% | 49.5% | +4.1 pts | |
| Operating margin | 17.3% | 16.9% | 10.9% | 8.1% | 12.8% | 16.7% | +3.9 pts | |
| Net margin | 13.8% | 14.0% | 10.0% | 8.2% | 10.8% | 14.3% | +3.5 pts |
Amounts are shown in the stated units; per-share amounts and shares are unscaled. Negative amounts are in brackets.