| GBP millions | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | Trend | YoY |
|---|---|---|---|---|---|---|---|---|
| Revenue | 20.8 | 26.1 | 32.7 | 39.2 | 43.8 | 45.4 | +3.7% | |
| Cost of revenue | 5.5 | 5.7 | 7.2 | 8.4 | 8.5 | 10.8 | +26.3% | |
| Gross profit | 15.3 | 20.4 | 22.5 | 30.8 | 35.2 | 34.6 | −1.8% | |
| Research & development | 0.3 | 0.4 | 0.4 | 0.6 | 0.0 | 0.6 | — | |
| Selling, general & administrative | 8.9 | 9.1 | 9.7 | 11.9 | 12.8 | 13.9 | +8.8% | |
| Selling & marketing | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | — | |
| Operating expenses | 12.5 | 12.9 | 13.0 | 15.5 | 16.8 | 14.5 | −13.4% | |
| Operating income | 2.8 | 7.5 | 12.5 | 15.3 | 18.4 | 20.0 | +8.7% | |
| Interest expense | 0.2 | 0.2 | 0.1 | 0.1 | 0.1 | 0.2 | +72.7% | |
| Interest income | 0.0 | 0.1 | 0.3 | 1.0 | 1.4 | 1.0 | −29.5% | |
| Other income / expense | (0.2) | (0.1) | (1.6) | 0.8 | 1.3 | 1.7 | +32.6% | |
| Pre-tax income | 2.6 | 7.4 | 10.9 | 16.1 | 19.7 | 21.7 | +10.3% | |
| Income tax | 0.0 | 1.0 | 1.6 | 3.2 | 4.4 | 5.1 | +15.0% | |
| Net income | 2.6 | 6.4 | 9.3 | 12.9 | 15.3 | 16.6 | +8.9% | |
| 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.09 | 0.22 | 0.32 | 0.44 | 0.52 | 0.56 | +7.7% | |
| EPS, diluted (per share) | 0.09 | 0.22 | 0.32 | 0.44 | 0.52 | 0.56 | +7.7% | |
| EBITDA | 5.8 | 10.5 | 14.0 | 18.8 | 22.0 | 24.3 | +10.6% | |
| Depreciation & amortization | 2.9 | 2.9 | 3.0 | 2.6 | 2.2 | 2.4 | +10.3% | |
| Weighted average shares (shares) | 29,503,575 | 29,483,337 | 29,502,859 | 29,513,474 | 29,516,948 | 29,544,824 | +0.1% | |
| Weighted average diluted shares (shares) | 29,812,798 | 29,589,223 | 29,559,717 | 29,621,368 | 29,618,785 | 29,574,431 | −0.1% | |
| Gross margin | 73.7% | 78.3% | 68.8% | 78.6% | 80.5% | 76.2% | −4.3 pts | |
| Operating margin | 13.5% | 28.9% | 38.1% | 39.0% | 42.1% | 44.1% | +2.0 pts | |
| Net margin | 12.5% | 24.7% | 28.6% | 33.0% | 34.9% | 36.6% | +1.8 pts |
Amounts are shown in the stated units; per-share amounts and shares are unscaled. Negative amounts are in brackets.