Why page-diff tools fail for subprocessor monitoring
Watching a URL for changes is a solved problem. Watching a subprocessor list is a different problem wearing the same clothes.
The obvious way to monitor a subprocessor page is to point a change detector at it. Visualping, a PageCrawl job, an Apify actor — pick one, paste the URL, get an email when the page changes. Plenty of teams have tried this. Almost none of them are still doing it a quarter later.
Failure one, the diff is not the change
A subprocessor page is a document with a footer, a cookie banner, a copyright year, a nav bar and a "last updated" line. It sits on a marketing site that gets redesigned. Every one of those produces a diff, and none of them is a change to the disclosed list.
In our own crawling, cosmetic movement outnumbers substantive movement by a wide margin, and the ratio gets worse on the pages that matter most, because large vendors ship site changes more often. The team mutes the alerts in week two. The real change lands in week nine and goes into a muted folder.
The fix is not a better diff algorithm. It is parsing the page into the thing you actually care about — the set of disclosed entities — and comparing that. We hash the disclosed edge set. An unchanged hash ends the work with no event, whatever happened to the markup around it.
Failure two, one URL is one node
A page differ holds a URL and its previous body. Your vendor's subprocessor page names twenty companies, each of which has its own page, each of which names more. Monitoring the first page tells you when a name appears on it. It cannot tell you that a company already on the list has started processing through a new provider in a jurisdiction you refuse.
You could add the second-level URLs by hand. Then the third. The list changes as the graph changes, which means maintaining the monitor becomes the manual job you bought the monitor to avoid.
Failure three, no entity identity
The same company is disclosed as "Amazon Web Services", "Amazon Web Services, Inc." and "AWS EMEA SARL". A differ sees three strings. A graph needs one entity with three aliases, a stable identifier, and a tombstone when two records turn out to be the same company so that an identifier printed in last year's risk report still resolves.
Without entity identity there is no deduplication, so no depth, so no concentration metric, so no reverse lookup. Every downstream feature this product has depends on resolving names to entities, and a string diff never does.
Failure four, no direction
The question that actually gets asked in an incident is "are we exposed to this provider". A set of independent page monitors cannot answer it at any speed, because there is no index from provider back to the vendors that reach it. Building that index requires having walked the graph, stored it, and kept it current.
What a differ is still good for
Watching a DPA page for edits, watching a status page, watching a pricing page. Any single document where the document itself is the thing you care about. Subprocessor monitoring looks like that job and is not one, and the cost of finding out is a quarter of ignored alerts.
Inizi da un fornitore. Gratis, senza carta.
Cerchi un'azienda, la segua e veda la catena sotto di essa. Passi a un piano superiore quando un solo fornitore non basta più.