Exact diff, semantic, or browser agent: choosing a check tier
modsignal's three check tiers trade cost for judgment. How each one works, what each one catches, and a simple rule for picking the right tier per page.
Every modsignal monitor runs on one of three check tiers. They're not quality levels — the cheapest tier is the right answer for some pages — they're three different definitions of what "changed" means. Picking the right one per page is most of the craft of setting up a monitor, so here's how each works under the hood and where each belongs.
Exact diff: "did the text change at all?"
The exact-diff tier fetches the page, extracts its text content, and compares it byte-for-byte against the last snapshot. Any difference is a change; identical text is silence.
There's no judgment involved, which is precisely its value. For some pages, every change is signal:
- Legal documents — terms of service, DPAs, privacy policies.
- Subprocessor lists and security pages.
- Standards, specs, and regulatory registers.
These pages don't run A/B tests and don't rotate testimonials. When the text moves, someone meant it to move, and you want to know regardless of what it says. Exact diff catches a single changed word, costs almost nothing, and never hallucinates — the diff is the evidence.
Its failure mode is the noisy page. Point it at a marketing page with a "trusted by" carousel and it will dutifully alert on every rotation. That's not a bug in the tier; it's the wrong tier for the page.
Semantic: "did the change I described happen?"
The semantic tier is where the prompt earns its keep. On each check, the model reads the new page against two things: the last snapshot and your description of what matters. Then it answers a narrow question — did the change the user described actually happen? — and only an affirmative answer becomes an alert.
This is what makes plain-language monitoring work in practice. "Tell me if the per-seat price changes, ignore copy edits" is unanswerable for a diff algorithm and routine for a model reading the page. The testimonial rotation gets classified as noise; the trial quietly shortening from 14 days to 7 gets classified as the thing you asked about.
Every semantic alert ships with the sentence, the before/after evidence, and a confidence score. The confidence number isn't decoration — it's the model's own uncertainty surfaced, so a 72% alert reads differently than a 96% one, and you can calibrate how much re-checking a given monitor's alerts deserve.
The semantic tier still sees the page as fetched HTML. Which brings us to the third tier.
Browser agent: "check it the way a person would"
Some pages are empty shells without JavaScript. Pricing calculators, dashboards, marketplaces, anything built as a client-rendered app — a plain fetch returns a <div id="root"> and a bundle reference, and there's nothing to diff or read.
The agent tier launches a real Chromium browser, loads the page, waits for it to hydrate, and then hands the rendered result to the same semantic check. It can scroll, and it sees what a visitor sees — including the number that only exists after three API calls resolve.
It's the most expensive tier per check, which is why it's a choice rather than the default. Use it when a plain fetch of the page doesn't contain the content you care about. A quick test: view the page source in your browser (not the inspector — the raw source). If the price you're watching isn't in there, you need the agent.
The simple rule
- The page is quiet and every change matters → exact diff.
- The page is noisy and only some changes matter → semantic.
- The content isn't in the HTML until a browser runs it → browser agent.
Tiers are set per monitor, and changing one is a dropdown, not a migration. A pattern we see often: start a new monitor on exact diff for a week to learn how the page behaves, then move it to semantic with a prompt written against the noise you actually observed. The first week's false alarms become the second week's "ignore" clause.
All three tiers are on every plan — the free tier includes exact diff and semantic on 3 monitors at app.modsignal.io.