Everyone has an opinion on whether AI is eating SaaS. This page runs the actual test, daily: read disclosed fundamentals for the fingerprint the thesis predicts — forward demand (billings, deferred revenue) softening ahead of revenue, growth decelerating faster than a company its size normally would — and check whether that deterioration lines up with how AI-exposed each of 33 software names is. Then it tries to kill its own result with permutation tests, maturity/size controls, and a predictive-lead test. The verdict below is whatever survives.
The AI-eats-SaaS fingerprint is not detectable in disclosed fundamentals yet. not validated: the headline is indistinguishable from chance and vanishes under maturity/size controls — treat as an unproven hypothesis, not a finding
Raw rank correlation between AI exposure and fundamental pressure is 0.01, but it collapses to 0.14 once company age, size, and growth level are controlled — and a permutation test puts it at p=0.93, indistinguishable from shuffled labels. What looks like AI pressure is, so far, mostly ordinary maturation. The monitor exists to catch the moment that changes.
Each point is a company. If AI were visibly eating SaaS, AI-exposed names (right) would cluster high on fundamental pressure (up), and the cloud would tilt diagonally. It doesn't — yet. The real split is pricing model: seat-priced names carry more pressure than consumption-priced ones.
Ranked by fundamental pressure: growth decelerating faster than the maturation null predicts, billings gaps closing or going negative, deferred revenue softening. Given the verdict above, read this as a watchlist ordering, not an AI-causation claim — and never as a trading signal.
| Ticker | Pricing | Pressure | Rev growth (latest) | Growth slope | Billings-gap slope | Deferred-rev growth |
|---|---|---|---|---|---|---|
| INTU | seat | 5.45 | 10.4% | -0.82pp | -0.10pp | 10.1% |
| GTLB | seat | 3.42 | 23.1% | -1.29pp | -2.94pp | 16.9% |
| WDAY | seat | 2.83 | 14.5% | -1.30pp | -2.11pp | 11.7% |
| TENB | seat | 2.67 | 8.6% | -0.51pp | -0.40pp | 6.5% |
| ADSK | seat | 2.24 | 18.4% | +1.36pp | -2.12pp | 13.4% |
| HUBS | seat | 2.21 | 19.8% | +0.92pp | -2.02pp | 18.8% |
| CRM | seat | 2.01 | 13.3% | -0.16pp | -2.11pp | 14.4% |
| DOCU | seat | 1.78 | 8.7% | -0.03pp | -0.49pp | 10.2% |
| OKTA | seat | 1.51 | 11.2% | -0.24pp | +0.23pp | 10.7% |
| ESTC | consumption | 1.49 | 16.0% | -0.12pp | +1.62pp | 20.4% |
The model's selection gate is strict: a learned forecaster is used only where it beat naive persistence and an AR(1) and the peer median out of sample, including a late holdout. For revenue growth and gross margin nothing qualified — so the honest forecast is calibrated persistence (~88% interval coverage). FCF margin is the one target where a seasonal ridge earned its keep.
| Ticker | Next-Q revenue growth YoY | Next-Q gross margin | Next-Q FCF margin |
|---|---|---|---|
| ADBE | 12.7% [6%–20%] | 89.2% [88%–91%] | 38.7% [20%–57%] beat baselines |
| HUBS | 19.8% [13%–27%] | 82.4% [81%–84%] | 25.2% [7%–44%] beat baselines |
| NOW | 24.0% [17%–31%] | 70.7% [69%–72%] | 20.1% [2%–39%] beat baselines |
| PANW | 31.1% [24%–38%] | 67.6% [66%–69%] | — |
| SNOW | 33.5% [26%–40%] | 66.6% [65%–68%] | 8.5% [-10%–27%] beat baselines |
On the revenue-growth holdout (n=109), the best learned challenger scored MAE 0.0267 against naive persistence's 0.0234 — it lost, so the gate refused it. A monitor that quietly shipped the fancier model anyway would look smarter and be wronger.
Disclosed AI ARR share and its growth, from primary-source company disclosures — the input the exposure scores lean on. Sparse, self-selected disclosure is itself a finding.
| Ticker | AI share of ARR (disclosed) | AI growth (median disclosed) | Direct AI revenue metric? |
|---|---|---|---|
| ADBE | 1.8% | 125% | yes |
| HUBS | — | 67% | no |
| NOW | — | 115% | no |
| PANW | — | — | no |
| SNOW | — | 100% | no |
A daily pipeline that tries to disprove the disruption thesis before reporting anything:
| # | Stage | What happens |
|---|---|---|
| 1 | Ingest | Point-in-time company financials from SEC company facts (revenue, billings, deferred revenue, margins — as they were known, no restatement leakage), plus earnings-call transcripts scored for AI language (risk, product, monetization, seat-displacement mentions per 10k words) and quantitative AI disclosures (AI ARR, AI growth). ~30 quarters deep, 33 companies. |
| 2 | Maturation null | The step most hot takes skip. Every software company decelerates as it ages and grows — that's not disruption, it's gravity. The model fits what a company of each age, size, and growth level normally does next, and only deviation from that null counts as "pressure." |
| 3 | Fingerprint scores | Per company: fundamental pressure = growth decelerating faster than the null + billings−revenue gap trending down + deferred revenue softening (forward demand weakening ahead of reported revenue — the specific pattern the AI-eats-SaaS thesis predicts). AI exposure = disclosed AI-language and AI-revenue intensity. Both rank-standardized. |
| 4 | Kill tests | The correlation between exposure and pressure is attacked three ways: a 5,000-draw permutation test (is it distinguishable from shuffled labels?), partial correlation stripping age/size/growth (does it survive the maturation confound?), and a split-sample predictive-lead test (does early AI language predict later deterioration?). Plus leave-one-out stability. Only what survives all of them becomes a finding; today, nothing does — so the verdict box says so. |
| 5 | Gated forecasts | Next-quarter forecasts come from a locked ridge + challenger models, but a challenger is only used if it beat naive persistence, AR(1), and the peer median out of sample including a late holdout. Where nothing qualifies, the page shows calibrated persistence — the honest baseline — with ~88%-coverage intervals. |
| 6 | Publish | Every run appends a dated vintage (never overwrites history), publishes to the Bargo database, and re-renders this page. Forecast-vs-realized scoring accrues automatically as quarters resolve, so the model's track record is auditable, not curated. |
Design principle: the model is only allowed to claim what survives its own attempts to kill the claim. That's why a monitor built to detect AI disruption currently reports there isn't any — and why it will be credible on the day it reports there is.
The monitor recomputes daily against append-only vintages, so the day the fingerprint appears, this page will say so — and the history of it not appearing is preserved.
Point-in-time panel across 33 software names (SEC company facts + earnings-call AI-language metrics + quantitative AI disclosures; ~30 quarters deep). Fundamental pressure = composite of growth deceleration vs a maturation null (what a company of that age/size normally does), billings−revenue gap trend, and deferred-revenue softening. AI exposure = disclosed AI-language and AI-revenue intensity. Guardrails: 5,000-draw permutation test, partial Spearman controlling age/size/growth, leave-one-out stability (most influential: GTLB), split-sample predictive lead. Every association is flagged non-causal; management chooses its own AI language. Forecasts use a locked ridge + challengers gated on out-of-sample skill vs naive/AR(1)/peer-median baselines. Data updates daily; vintages are append-only.
Companions: Token Demand Index and Compute Tightness Index.