| Market Cap | $243.1M | |
| Enterprise Value | $194.2M | |
| Revenue | $202.1M | +65.9% |
| Gross Profit | $32.0M | +44.9% |
| EBITDA | $7.1M | +16.3% |
| Net Income | $14.4M | +153.1% |
| Diluted EPS | $0.56 | +133.3% |
| Free Cash Flow | -$19.1M | −68.9% |
| Ratio | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | Trend · 6y | vs own | vs sector |
|---|---|---|---|---|---|---|---|---|---|
| ▾Margins | |||||||||
| Gross Margin | 15.10% | 23.21% | 29.31% | 20.22% | 15.09% | 13.18% | 8% | 13% | |
| Operating Margin | −0.89% | −3.03% | 2.98% | −0.41% | 3.89% | 2.57% | 58% | 33% | |
| EBITDA Margin | 0.29% | −1.08% | 4.29% | 0.18% | 4.30% | 3.02% | 58% | 23% | |
| NOPAT Margin | −0.54% | −2.40% | 2.36% | −0.22% | 3.79% | 2.57% | 75% | 35% | |
| Net Margin | 0.18% | −4.73% | −0.24% | 0.14% | 4.03% | 6.16% | 92% | 63% | |
| FCF Margin | 21.31% | −38.37% | 46.27% | −15.67% | 4.60% | 0.86% | 42% | 29% | |
| FCFF Margin | 21.80% | — | — | −13.67% | 6.40% | — | — | — | |
| FCFE Margin | 23.28% | −39.65% | 39.60% | −15.67% | 10.13% | 4.83% | 42% | 46% | |
| OCF Margin | 22.18% | −38.13% | 48.02% | −15.20% | 10.33% | 14.19% | 58% | 67% | |
| Gross Profitability | 28.57% | 32.99% | 28.59% | 42.97% | 23.15% | 17.51% | 8% | 35% | |
| Capex Intensity | 0.88% | 0.23% | 1.75% | 0.47% | 5.73% | 13.33% | 92% | 89% | |
| ▸Returns on Capital · 6 ratios | |||||||||
| ▸DuPont factors (ROE drivers) · 4 ratios | |||||||||
| ▸Earnings quality · 7 ratios | |||||||||
| ▸Liquidity & coverage · 9 ratios | |||||||||
| ▸Leverage · 9 ratios | |||||||||
| ▸Working capital · 8 ratios | |||||||||
| ▸Capital allocation · 2 ratios | |||||||||
| ▸Per share · 6 ratios | |||||||||
| ▸Other · 1 ratios | |||||||||
The five drivers multiply to 25.9% vs reported ROE 36.1%. High ROE from margin and turnover is earned; from the equity multiplier it is borrowed.
| Line | 2020↗ | 2021↗ | 2022↗ | 2023↗ | 2024↗ | 2025↗ |
|---|---|---|---|---|---|---|
| Revenue | $45.1M | $27.4M | $30.6M | $54.4M | $148.1M | $245.7M |
| YoY % | -39.2% | +11.8% | +77.6% | +172.3% | +65.9% | |
| Cost of Revenue | $38.3M | $21.0M | $21.7M | $43.4M | $125.8M | $213.3M |
| YoY % | -45.0% | +2.9% | +100.4% | +189.9% | +69.6% | |
| Gross Profit | $6.8M | $6.4M | $9.0M | $11.0M | $22.4M | $32.4M |
| YoY % | -6.5% | +41.2% | +22.5% | +103.2% | +44.9% | |
| SG&A Expense | $6.7M | $6.7M | $7.7M | $8.9M | $13.2M | $20.6M |
| YoY % | -0.3% | +15.4% | +16.2% | +48.2% | +56.0% | |
| Total Operating Expenses | — | — | — | $11.2M | $16.6M | $26.1M |
| YoY % | +47.8% | +57.1% | ||||
| Operating Income | -$400,000 | -$831,000 | $914,000 | -$221,000 | $5.8M | $6.3M |
| YoY % | +9.6% | |||||
| Interest Expense | $367,000 | $430,000 | $931,000 | $2.0M | $2.7M | — |
| YoY % | +17.2% | +116.5% | +111.7% | +38.9% | ||
| Other Non-Operating Income | $896,000 | — | — | $0 | $194,000 | — |
| Gains on Sale of Real Estate | — | — | — | $0 | $0 | -$658,000 |
| Pretax Income | $129,000 | -$1.2M | -$17,000 | $134,000 | $6.1M | $7.5M |
| YoY % | +4477.6% | +22.8% | ||||
| Income Tax | $50,000 | $65,000 | $56,000 | $60,000 | $158,000 | -$7.6M |
| YoY % | +30.0% | -13.8% | +7.1% | +163.3% | ||
| Income from Continuing Operations | — | — | — | $134,000 | $6.1M | $7.5M |
| YoY % | +4477.6% | +22.8% | ||||
| Net Income (incl. NCI) | — | — | — | $100,000 | $6.0M | — |
| YoY % | +5900.0% | |||||
| Net Income | $79,000 | -$1.3M | -$73,000 | $74,000 | $6.0M | $15.1M |
| YoY % | +7975.7% | +153.1% | ||||
| EPS (Basic) | $0.00 | -$0.07 | $0.00 | $0.00 | $0.27 | $0.61 |
| YoY % | +125.9% | |||||
| EPS (Diluted) | $0.00 | -$0.07 | $0.00 | $0.00 | $0.24 | $0.56 |
| YoY % | +133.3% | |||||
| Weighted Avg Shares (Basic) | 17.8M | 18.4M | 20.1M | 21.6M | — | — |
| YoY % | +3.0% | +9.2% | +7.7% | |||
| Weighted Avg Shares (Diluted) | 21.0M | 18.4M | 20.1M | 22.0M | 25.1M | 27.2M |
| YoY % | -12.5% | +9.2% | +9.8% | +13.9% | +8.6% |
The sector classification is SIC-derived, not official GICS. Statement lines are XBRL facts as filed with the company's home regulator (SEC EDGAR for US filers; ESEF/EDINET and other national regulators for foreign filers); ratios and other derived figures are computed from them. A blank cell means the tag was absent — never imputed.