license_drift
Live — €19/month, up to 25 sources

Product · subscription

license_drift

The dataset or API you're already ingesting can change its license or terms text without ever telling you — no changelog entry, no email, just a silently different clause the next time you pull it. This watches the exact text over time and flags real drift the moment it happens — a changed hash, a changed clause — with the exact diff, never a silent "still fine". Also classifies the risk of a license/terms text on request: derivative-work rights, PII exposure tier, always with the evidence it was computed from.

Not legal advice. This is an automated risk classification based on declared license/terms text — verify with real legal counsel before any business decision about commercial use, redistribution, or derivative rights.

Real example — license risk classification

Input (a real NKO-catalogued source, one of 91 tracked internally):

{
  "id": "miteco-memoria-residuos",
  "license": "Ley 37/2007 reutilizacion sector publico (LGA), cita obligatoria",
  "commercial_reuse": true,
  "redistribution": "con atribucion"
}

Real output (same function NKO runs internally):

{
  "clase": "permissive",
  "riesgos": {
    "derivative_work_rights": "no_hasta_verificar",
    "pii_tier": "elevated"
  },
  "evidencia": {
    "license_declared": "Ley 37/2007 reutilizacion sector publico (LGA), cita obligatoria",
    "commercial_reuse_declared": true,
    "redistribution_declared": "con atribucion"
  },
  "disclaimer": "Risk classification based on declared license text - NOT legal advice.",
  "method_version": "nko-license-drift-v0.1-2026-09-01"
}

Live public watch (real corpus, running daily, not illustrative):

7 real datasets with a documented history of license/terms instability, checked once a day: laion/relaion2B-en-research-safe (LAION's re-release after the 2023 CSAM takedown), bigcode/the-stack-v2 (reworked after DMCA opt-out claims), allenai/c4, EleutherAI/pile (includes the Books3 subset, pulled after copyright suits), codeparrot/github-code, hendrycks/competition_math (disabled after a real 2025 DMCA from Art of Problem Solving), and Lurunchik/WikiHowNFQA (disabled after a real DMCA from wikiHow, Inc.). Method: snapshot the dataset's own metadata (license, gated status, tags — the fields that represent real terms, excluding download/like counters that change on every check without meaning anything) once a day, archived with a date whether or not anything changed; a real change fires a license_drift_detected telemetry event, never silently.

{
  "status": "unchanged",
  "dataset_id": "laion/relaion2B-en-research-safe",
  "terms_hash": "1d13f71dacf42e6075a6680c44de5fcdf9dc46b5e98150bee0e0ec93769853e8",
  "checked_at": "2026-09-03T07:00:00Z",
  "drift_count": 0,
  "first_seen": "2026-09-01T19:40:17Z"
}

Real status as of today: 0 real drift events across all 7 — which is the honest, expected result, not a null test. The classification/risk function (classify_license()) is separately dogfooded internally against NKO's own 91 catalogued sources.

Controlled fixture — same diff function NKO runs internally (license_drift_diff.diff_canonical()), given a synthetic before/after pair, to show the full chain end to end since no real drift has occurred yet in the 7-dataset public corpus above. This is illustrative input, not a captured real event — labeled as such, never presented as if it happened:

{
  "dataset_id": "example/dataset",
  "status": "drift_detected",
  "first_seen": "2026-08-15T07:00:00Z",
  "last_known_safe": "2026-09-02T07:00:00Z",
  "checked_at": "2026-09-03T07:00:00Z",
  "drift_count": 1,
  "severity": "HIGH",
  "changes": [
    {
      "field": "cardData.license",
      "old_value": "cc-by-4.0",
      "new_value": "other",
      "severity": "HIGH",
      "machine_action": "REVIEW_LICENSE_TERMS_CHANGED"
    },
    {
      "field": "tags:license",
      "old_value": ["license:cc-by-4.0", "region:us"],
      "new_value": ["license:other", "region:us"],
      "added": ["license:other"],
      "removed": ["license:cc-by-4.0"],
      "severity": "HIGH",
      "machine_action": "REVIEW_LICENSE_TERMS_CHANGED"
    }
  ]
}

Severity is a deterministic classification of WHICH field changed — disabled/private=CRITICAL (the dataset may have disappeared from under you), gated or cardData.license=HIGH (the access condition or the license itself changed), other metadata=MEDIUM, tags=LOW (unless a license:* tag is what changed, treated as HIGH) — never a probabilistic guess, and it never infers WHY a publisher changed something, only WHAT changed.

Need a source we don't watch yet?

v0 only supports Hugging Face dataset IDs today. ModelScope, Kaggle, GitHub, an API terms-of-service URL, or a custom license URL are planned but not built. Leave your email and tell us what source you need — it tells us what to build next.

€19/month — your corpus, watched

Up to 25 Hugging Face dataset sources you choose, checked daily, real drift alerts (structured per-field diff with severity, evidence attached, never a guess). One line per source below (bare org/dataset id, or paste the full huggingface.co URL — we normalize it). Stripe Checkout, cancel anytime.