N.T.O.I.D.
National Threat Observation and Intelligence Dashboards

Daily update checklist

One pass per active board · 20–30 min
CHECKLIST.mdRendered at build · the markdown is the source of truth

One pass per active board, every day, in this order. Budget: 20–30 minutes per board. If a step cannot be completed honestly, leave the board as it is and write the gap in notes — a stale board with a dated stamp is better than a fresh board with a guessed line.

0 · Before touching a file

1 · Re-check the recurring sources (Netherlands)

Every URL below answered HTTP 200 on 2026-11-08. If one is dead, do not replace it with a guess: note it in notes and find the new canonical page by navigating from the site root.

CadenceSourceURLWhat you are looking for
dailyNCSC advisories (RSS)https://advisories.ncsc.nl/rss/advisories[H/H]-class advisories touching widely used Dutch infrastructure; a cluster of them in a day
dailyNCSC news (RSS)https://feeds.ncsc.nl/nieuws.rssincidents NCSC confirms, "in het nieuws" items
dailyNCTV newshttps://www.nctv.nl/actueelnew threat assessments, DTN changes, campaign releases
dailyNOS searcheshttps://nos.nl/zoeken?q=sabotage · hybride · drone · AIVD · Noordzee · chip · stroomnetconfirmed incidents (canonical URLs, dated)
2–3×/weekDefensie newshttps://www.defensie.nl/nieuwsdeployments, posture, exercises, budget
2–3×/weekRijksoverheid newshttps://www.rijksoverheid.nl/actueel/nieuwscrisis-plan phases, emergency measures, Kamerbrieven
weeklyAIVD newshttps://www.aivd.nl/actueelpublic statements, annual report (April)
weeklyDenk Vooruithttps://www.denkvooruit.nl/changes to the household advice we quote
~2×/yearNCTV DTNhttps://www.nctv.nl/onderwerpen/d/dtnterrorism level (1–5)

Social posts, forwarded screenshots and single-outlet headlines are tips: go and find the primary page. If none exists, the item is not on the board.

2 · For each new item, decide

3 · Edit the board (data/<cc>.json)

4 · Validate and build

python3 tools/validate.py data/*.json      # rc 0, no "error:" lines
python3 tools/build.py                     # writes dist/
for t in tests/test_*.py; do python3 "$t" || echo "FAIL $t"; done

5 · Alert rules (what gets announced, METHOD.md §5)

Announce only when

  • an indicator level changed (say from what to what, and the source that moved it);
  • the watch level changed (always with the indicators that moved it);
  • the hazard band or story stage changed.

Never

  • Announce a composite change on its own
  • Announce a hold as a change
  • Use the words "imminent", "war", "attack" unless quoting an authority, in quotation marks, with the link.

6 · Hygiene before commit

7 · Starting a template board (in this order: BE, DE, FR, UK, BALT, ES, RO)

Checks are kept in this browser only (localStorage) and are never saved to the repo. Nothing on this page is a button: it documents, the editor acts.