| Market Cap | $59.7M | |
| Enterprise Value | $59.4M | |
| Revenue | $121.9M | +14.2% |
| Gross Profit | $76.0M | +23.5% |
| EBITDA | $8.0M | — |
| Net Income | $1.8M | — |
| Diluted EPS | $0.03 | — |
| Free Cash Flow | $7.8M | — |
| Ratio | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | Trend · 6y | vs own | vs sector |
|---|---|---|---|---|---|---|---|---|---|
| ▾Margins | |||||||||
| Gross Margin | 64.48% | 58.79% | 55.44% | 60.75% | 58.17% | 62.92% | 75% | 51% | |
| Operating Margin | −1.41% | −6.97% | −11.65% | −11.13% | −10.30% | 5.44% | 92% | 73% | |
| EBITDA Margin | 2.49% | −4.56% | −9.42% | −7.65% | −6.69% | 9.34% | 92% | 71% | |
| NOPAT Margin | −1.11% | — | −9.21% | −8.79% | −8.13% | 3.86% | 90% | 67% | |
| Net Margin | −13.17% | −8.77% | −14.64% | 0.72% | −14.03% | 3.71% | 92% | 72% | |
| FCF Margin | −4.27% | −3.03% | −12.26% | −12.02% | −13.65% | 7.59% | 92% | 72% | |
| FCFF Margin | — | — | — | — | — | 9.54% | — | 50% | 30% |
| FCFE Margin | −4.86% | −3.78% | — | −6.54% | −9.39% | 1.62% | 90% | 51% | |
| OCF Margin | −1.37% | 0.79% | −9.21% | −10.42% | −10.14% | 9.37% | 92% | 70% | |
| Gross Profitability | 82.94% | 59.41% | 53.36% | 59.89% | 72.70% | 89.51% | 92% | 95% | |
| Capex Intensity | 2.90% | 3.83% | 3.04% | 1.59% | 3.51% | 1.78% | 25% | 39% | |
| ▸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 · 1 ratios | |||||||||
| ▸Per share · 6 ratios | |||||||||
| ▸Other · 1 ratios | |||||||||
The five drivers multiply to 9.8% vs reported ROE 10.6%. High ROE from margin and turnover is earned; from the equity multiplier it is borrowed.
| Line | 2020↗ | 2021↗ | 2022↗ | 2023↗ | 2024↗ | 2025↗ |
|---|---|---|---|---|---|---|
| Revenue | $53.3M | $55.3M | $58.0M | $91.3M | $117.3M | $133.9M |
| YoY % | +3.6% | +4.9% | +57.5% | +28.4% | +14.2% | |
| Cost of Revenue | $18.9M | $22.8M | $25.8M | $35.8M | $49.1M | $49.7M |
| YoY % | +20.2% | +13.4% | +38.7% | +36.9% | +1.2% | |
| Gross Profit | $34.4M | $32.5M | $32.1M | $55.5M | $68.2M | $84.3M |
| YoY % | -5.5% | -1.1% | +72.6% | +23.0% | +23.5% | |
| R&D Expense | $657,000 | $870,000 | $915,000 | $1.3M | $2.4M | $2.1M |
| YoY % | +32.4% | +5.2% | +46.0% | +78.5% | -11.9% | |
| Selling & Marketing Expense | $21.0M | $21.0M | $22.5M | $38.4M | $49.2M | $45.5M |
| YoY % | +0.2% | +7.1% | +70.7% | +28.0% | -7.5% | |
| SG&A Expense | $13.5M | $14.4M | $15.5M | $25.9M | $28.7M | $29.4M |
| YoY % | +7.0% | +7.0% | +67.2% | +11.0% | +2.4% | |
| Total Operating Expenses | $35.1M | $36.3M | $38.9M | $65.6M | $80.3M | $77.0M |
| YoY % | +3.4% | +7.0% | +68.7% | +22.3% | -4.1% | |
| Operating Income | -$751,000 | -$3.9M | -$6.8M | -$10.2M | -$12.1M | $7.3M |
| Interest Expense | $6.0M | $995,000 | $1.7M | $2.9M | $4.2M | $3.7M |
| YoY % | -83.4% | +70.1% | +73.6% | +41.6% | -11.8% | |
| Interest & Investment Income | — | — | $31,000 | $149,000 | — | $94,000 |
| YoY % | +380.6% | |||||
| Other Non-Operating Income | — | — | — | -$49,000 | -$33,000 | $73,000 |
| Pretax Income | -$6.7M | -$4.8M | -$8.4M | -$1.0M | -$16.3M | $7.0M |
| Income Tax | $296,000 | — | $69,000 | -$1.7M | $187,000 | $2.0M |
| YoY % | +984.5% | |||||
| Net Income | -$7.0M | -$4.8M | -$8.5M | $660,000 | -$16.4M | $5.0M |
| EPS (Basic) | -$0.25 | -$0.06 | -$0.09 | $0.01 | -$0.12 | $0.04 |
| EPS (Diluted) | -$0.25 | -$0.06 | -$0.09 | $0.01 | -$0.12 | $0.03 |
| Weighted Avg Shares (Basic) | 28.5M | 85.5M | 94.1M | 119.1M | 133.7M | 139.5M |
| YoY % | +199.8% | +10.1% | +26.6% | +12.2% | +4.4% | |
| Weighted Avg Shares (Diluted) | 28.5M | 85.5M | 94.1M | 126.8M | 133.7M | 150.0M |
| YoY % | +199.8% | +10.1% | +34.8% | +5.4% | +12.3% |
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.