VENDOR CHANGE WATCH · RUNS IN YOUR BROWSER

See exactly what changed in a vendor's terms.

A vendor edits its subprocessor list, stretches a retention window, or shortens the notice period it owes you — and the only signal is a “last updated” date. Paste the page here to capture it. Paste it again next month and this page shows you the clause that moved, word by word, with the source URL and both timestamps on the report.

Nothing is uploaded and there is no account. Captures stay in this browser, on this device.

Capture a page

Fill in the vendor, page type and source URL, paste the page, and capture. Your first capture of a page is stored, not diffed — there is nothing to compare it to yet.

Watchlist

Pages you have captured in this browser. Two captures are kept per page — the pair a diff needs. Re-capture a page to compare it against the one before.

Watch them automatically instead

This page needs you to remember to come back. The command-line version of the same tool does not: it fetches the pages you configure on your machine, on whatever schedule you already run — cron, launchd, a CI job — and prints the same report. Same diff logic, same three statuses.

pip install -e ventures/vendor-change-watch

vendor-watch add --vendor "Acme SaaS" \
  --url https://acme.example/legal/subprocessors --type subprocessors
vendor-watch check

A failed or blocked fetch is reported as inconclusive, never as “no change”. Everything lives under ~/.vendor-watch — delete the directory to delete all of it — and VENDOR_WATCH_NO_TELEMETRY=1 turns off even the local counters. Run vendor-watch --help for the full command set.

What this answers

Common questions

Why can't this fetch the vendor's page for me?

Browsers refuse cross-origin reads of another site's pages, so nothing served from here can fetch acme.example's terms on your behalf without a server in the middle — and that server would see every URL you watch. Rather than run it, this page asks you to paste. The CLI above does fetch, on your own machine, where no third party is involved.

Does the text I paste leave my browser?

No. Parsing, storage and diffing all happen in this page. Captures are kept in this browser's local storage on your own device and are never uploaded; “Delete all captures” removes them.

Does a detected change mean the vendor broke a commitment?

No. This reports what changed in the text you captured, with the source URL and both timestamps. It is not legal advice, does not review contracts, and does not assert that a vendor is or is not compliant with anything. You decide what a change means.

Why does the first capture not show a diff?

There is nothing to compare it against. A first capture is reported as captured, never as “unchanged” — a check with no basis for comparison must not look like stability. Paste the page again later and the second capture produces the report.

What counts as a section?

Text is grouped under the nearest preceding heading. Pasted HTML uses its real h1–h6 headings; pasted plain text treats a short standalone line above a paragraph as a heading. Anything before the first heading is grouped under (page).

Is this the same as the command-line tool?

It shares the diff logic and the exact status vocabulary — observed, inconclusive and unknown mean the same thing in both. The CLI adds the part a browser cannot do: it fetches the pages you configure on a schedule from your own machine, so you are not the one remembering to check.

Not sure how often to check a given vendor? See how often should you re-check a vendor's terms and privacy pages.

Already using a general-purpose page watcher? See this tool vs. changedetection.io. Still checking vendor pages by memory? See this tool vs. checking vendor pages by hand.

Already holding two dated JSON snapshots of the same vendor page? The vendor change evidence tool compares a before and after snapshot into a portable review record — nothing uploaded.