The method

Being right is the product.

A wrong price on a public page is worse than no page. Here is exactly how the record is kept — including the parts a human still has to check.

The record right now

Live from the pipeline

52
products tracked
279
published changes
303
plan versions on file
133
archived captures
6
awaiting human review
0
public corrections

COUNTED FROM THE DATABASE THAT SERVES THIS PAGE · LAST PUBLISHED CHANGE EFFECTIVE 2026-08-13. THE REVIEW QUEUE IS PUBLISHED BECAUSE PENDING WORK IS PART OF THE TRUTH.

The pipeline

Six steps from a pricing page to the record.

Machines checking machines — and when they disagree, or a number moves absurdly far, the line stops and a person decides.

01

Capture

MarkupBot fetches each tracked pricing page on an adaptive schedule — recently changed pages several times a day, quiet ones weekly. A plain fetch first; a real browser only when the page demands it. robots.txt is honoured and nothing behind a login is ever collected — see /bot.

ADAPTIVE SCHEDULE · ROBOTS HONOURED
02

Archive

Every capture that differs from the last one is stored raw — the page text and a rendered image, hashed and immutable. Published figures link to the exact capture they came from, so anyone can check the source we saw.

RAW HTML + IMAGE · CONTENT-HASHED
03

Extract

A language model reads the capture into structured plans. Then the machine checks the machine: every extracted price must appear verbatim in the page text, or the whole extraction is discarded. Models suggest; evidence decides.

EVIDENCE-CHECKED · DISCARDED ON DOUBT
04

Diff

Yesterday’s plans against today’s, field by field: price, billing interval, seat minimums, included units, limits, features that moved tier. The diff is deterministic code, not model output, and a suite of golden test cases referees every change to it.

DETERMINISTIC · GOLDEN-TESTED
05

Gate

Two machines must agree before anything ambiguous publishes: a second, independent model re-reads the capture and audits the first extraction figure by figure. Agreement publishes, contradiction rejects, and anything either side is unsure about — plus every price move beyond ±200% — waits for a human. The queue size is published above.

INDEPENDENT AUDIT · EXTREMES WAIT FOR A HUMAN
06

Publish

Changes go live with an effective date labelled either “stated by vendor” or “detected by us” — never implied precision. Alerts fan out the same day. A published change is never silently edited; fixes go through public corrections.

DATED · SOURCED · NEVER SILENTLY EDITED

Provenance

Every figure wears its origin

These are the three tags you'll find beside numbers across the site — the same ones shown here.

captured by markupbot ↗

Seen on the pricing page

The figure comes from one of our own archived captures. The tag links to the capture itself — the page as it looked the day the price changed.

THE DEFAULT SINCE TRACKING BEGAN
sourced from archive ↗

Reconstructed, and labelled

History from before we tracked a product, rebuilt from vendor announcements, changelogs and public archives — linked to the announcement, never blurred with our own captures.

A SHORT HONEST HISTORY BEATS A LONG GUESSED ONE
corrected

Fixed in public

A figure that went through the public corrections process. The note says what was wrong, who caught it, and when — every one is published at /corrections.

SPOTTED SOMETHING OFF? CORRECTIONS@MARKUPWATCH.COM

House rules

Seven rules, no exceptions.

  1. 01
    Nothing behind a login. Public pages only. No scraped accounts, no shared screenshots of customer dashboards.
  2. 02
    robots.txt is law. Disallowed paths are not crawled, and repeated blocks put a page to sleep rather than route around it.
  3. 03
    Every figure links to its source. An archived capture or the vendor’s own announcement — one click from every number.
  4. 04
    Dates never overstate. Each change says whether the date was stated by the vendor or detected by our crawler.
  5. 05
    Gaps stay gaps. History we can’t source stays unwritten. A short honest record beats a long guessed one.
  6. 06
    No silent edits. A published change is immutable. Errors are corrected in public, with what was wrong and when.
  7. 07
    Watchlists are private. What you watch is never sold, aggregated for vendors, or used for targeting.