How it works
Every number below is derived from a query run against the live database at export time. Nothing here is a hand-written figure, and nothing that cannot be computed is estimated — it is left off the page instead.
The pipeline
Six steps, run nightly. The model fills in a schema at one step only — it never decides what happens next. Every branch (skip, retry, degrade, confirm, publish) is a deterministic check against stored data, not a judgment call handed to the LLM.
01
Collect
Fetches each watched pricing page once daily and stores it only if its bytes changed since the last fetch — a repeat is a pointer, not a copy.
02
Extract
Sends the page text to a schema-constrained model that returns tiers and prices as structured data. Every number it returns must be findable as a numeral in the page text it was given, or the extraction is discarded — the model cannot invent a price.
03
Detect
Diffs consecutive extractions of the same source and scores each difference by materiality. Below threshold, a difference is recorded but never reaches an LLM.
04
Confirm
Holds a candidate change until a second, independent observation repeats it, then promotes it to confirmed. One observation is never enough to publish.
05
Synthesize
Writes a plain-language annotation for each confirmed change and rolls a weekly digest once enough of them have accumulated.
06
Publish
Exports the archive to static JSON and commits it to the public site. A guard refuses the publish if any file shrank or a query looks broken.
The filter
Every observation ends in exactly one of five states below, and the five always sum to the total — nothing is counted twice, nothing is left out. Only the first three are genuine savings; the last two are real, billed model calls (one recorded, one not) and are excluded from the avoided count above.
- Observations
- 841
- Model calls succeeded
- 239
- Model calls avoided
- 560 (66.6%)
| Gate | Eliminated | Remaining | What it means |
|---|---|---|---|
| Repeat fetch, byte-identical | 237 | 604 | Content-addressed dedup at fetch time (collect.ts): a page identical to the last fetch is stored as a pointer, never re-examined. |
| Repeat page state, already extracted | 319 | 285 | Normalization collapsed this onto a state with a successful extraction already on file (extract.ts's cache) — no second call. |
| Short-circuited before any request | 4 | 281 | Refused before a request was sent (token budget exceeded, or no extractable text), or not yet due for extraction — zero spend either way. |
| Called and succeeded | 239 | 42 | A real model call ran and its answer was recorded — the archive's actual, billed extractions. |
| Called and rejected | 42 | 0 | A real model call ran and failed grounding or schema validation, so the state was retired. There is no cache for a failure, so every row here — even a repeat of the same state — was its own separate paid call. Spend, not savings. |
Spans to — 20 calendar months, 282 live observations and 559 backfilled from the Internet Archive.
A separate, one-time screen widened the pool this filter draws from: screened 51 companies, 21 publish comparable plan pricing. See the dataset page for the full boundary, admitted by category, and every exclusion with its reason.
Source health
State is never color alone — every row carries a text label alongside its marker.
| Source | State | Last verified | Note |
|---|---|---|---|
| auth0 · pricing | Verified | ||
| buildkite · pricing | Verified | ||
| clerk · pricing | Verified | ||
| depot · pricing | Verified | ||
| figma · pricing | Verified | ||
| fly-io · pricing | Verified | ||
| github · pricing | Verified | ||
| gitlab · pricing | Verified | ||
| hasura · pricing | Verified | ||
| honeycomb · pricing | Verified | ||
| linear · pricing | Verified | ||
| netlify · pricing | Verified | ||
| new-relic · pricing | Verified | ||
| notion · pricing | Verified | ||
| pinecone · pricing | Verified | ||
| planetscale · pricing | Verified | ||
| postman · pricing | Verified | ||
| postmark · pricing | Verified | ||
| redis-cloud · pricing | Verified | ||
| render · pricing | Degraded | extraction ungrounded: usage_rates.Cron Jobs - 4 CPU (4c-32g).unit_price_usd = 0.0081 does not appear in the page text | |
| resend · pricing | Verified | ||
| sentry · pricing | Verified | ||
| statsig · pricing | Verified | ||
| supabase · pricing | Verified | ||
| turso · pricing | Verified | ||
| upstash · pricing | Verified | ||
| vercel · pricing | Verified |
Spend
Money actually spent — not a projection — on successful extractions and digests, tracked per call. A call that failed grounding or schema validation still consumed real tokens, and that cost is not yet metered anywhere in this system, so every figure below is a floor, not a total. Recurring extraction and synthesis costs are separate from the one-time cost of backfilling history.
- Cumulative, all time
- $2.30
- This month, recurring
- $0.31
- Backfill, one-time
- $1.68
- Per confirmed change
- $0.01
Run history
The most recent completed run of each pipeline step.
| Step | State | Finished |
|---|---|---|
| backfill | failed | |
| backup | ok | |
| collect | ok | |
| detect | ok | |
| export | ok | |
| extract | failed | |
| publish | ok | |
| restic | ok | |
| synthesize | ok |