An offer from GESIS – Leibniz Institute for the Social Sciences

Technical Details

This monitor automatically fetches, fingerprints, and archives DSA Article 40(4) data catalogue pages across 25 platforms, so every change is caught and permanently recorded — this page covers how.

How it works

Every run works through the same five steps for every platform — AI classification only where a change was actually found.

  1. 01
    Fetch

    Retrieves each platform's page by the most appropriate method: plain HTTP, JS-rendered headless browser, full Playwright automation, or PDF text extraction.

  2. 02
    Compare

    Computes a SHA-256 fingerprint of the page content and compares outgoing links against the previous snapshot. Detects even minor edits.

  3. 03
    Log

    Appends the result to an append-only audit log. Changed pages get a full diff with line counts and link deltas; unchanged pages get a brief status record.

  4. 04
    AI Classify

    An LLM reviews each diff and classifies it as noise, cosmetic, link change, content update, or structural.

  5. 05
    Commit

    Every run is permanently archived: a tamper-evident git commit records exactly what changed, when, its content fingerprint, and the AI classification. Full page snapshots are kept alongside on the server filesystem.

Fetcher tiers

25 platforms across 33 endpoints, including 5 bilingual EN+DE catalogue pairs — fetched with one of four tiers depending on how the page renders.

T1: Static 7
Plain HTTP; no JavaScript needed
T2: Stealth 11
JS-rendered; anti-bot headers
T3: Browser 6
Full Playwright; cookie banner handling
T4: PDF 1
PDF download; text extraction or OCR fallback

Under the hood

Runs are triggered manually via the admin panel or CLI, or run automatically on a set interval via the admin panel's built-in scheduler daemon (or systemd/cron on the server). Each run fetches every platform, compares against the previous version, runs AI classification on changes, and commits the result to git. Nothing is ever deleted or overwritten. Every change has a timestamp, a content fingerprint, and a line-by-line record of exactly what was different.

Stack

  • Python 3.14: core runtime
  • Scrapling: adaptive web fetching with anti-bot headers
  • Playwright / Chromium: full browser automation for JS-heavy pages
  • Flask: lightweight dashboard and admin panel
  • LLM (Claude / GPT / Gemini / Ollama): AI change classification and audit document detection
  • Git: version-controlled, tamper-evident audit trail

Storage

  • JSON snapshots: full page content archived per run, per platform
  • Append-only log: every result recorded; lines are never deleted or rewritten
  • Diff files: line-level and link-level deltas with AI classification stored alongside each change
  • PDF pipeline: text extraction for PDF-only catalogues (pdfplumber + OCR fallback)

Access

  • Public dashboard: catalogue cards at /
  • Admin panel: trigger runs, manage platforms, export reports at /admin/
  • CLI: python run_monitor.py for direct invocation
  • CSV export: full change log with AI fields, filterable by platform, date, and status

← Back home