The “Disease Outbreaks” panel labels each item with one of three categorical levels: ALERT, WARNING, or WATCH. This page documents how that label is derived so the value is reproducible from the inputs displayed on the panel.Documentation Index
Fetch the complete documentation index at: https://worldmonitor.app/docs/llms.txt
Use this file to discover all available pages before exploring further.
Editorial weights
Levels are assigned by a keyword classifier inscripts/_disease-outbreaks-helpers.mjs::detectAlertLevel that matches
whole-word tokens (case-insensitive) in the concatenated item title and
description.
| Level | Keywords (any match) |
|---|---|
alert | outbreak, emergency, epidemic, pandemic |
warning | warning, spread, cases increasing |
watch | (fallback when no keyword matches) |
Inputs
The classifier sees the item’stitle and desc fields after they are
normalized by the per-source parser:
- WHO Disease Outbreak News (
whoNormalizeItem) - HealthMap / ProMED RSS (
rssNormalizeItem) - TGH (
tghNormalizeItem)
alert > warning > watch.
Known limitations
- Newsroom phrasing, not epidemiology. A press release that uses the
word “outbreak” once will be promoted to
alerteven if the situation is minor. Conversely, a serious situation reported without any of the keywords will fall through towatch. - English-only keywords. Non-English titles will systematically under-classify until the source is translated upstream.
- No multi-word context. “False outbreak rumor” will still match
outbreakand be promoted toalert.
Change protocol
If the keyword sets inDISEASE_ALERT_KEYWORDS or DISEASE_WARNING_KEYWORDS
change:
- Bump
ALERT_LEVEL_METHODOLOGY_VERSIONin the same file. The seeder stamps this onto the published payload asalertLevelMethodologyVersion, so a bump observably propagates to clients and the canonical key. - Update the table above to match.
- Add a regression test in
tests/disease-outbreaks-seed.test.mjscovering the new keyword behavior + at least one expected non-match (substring guard). - Note the change in the next release’s changelog so cached / pre-rendered payloads can be invalidated if necessary.
See also
- Source:
scripts/_disease-outbreaks-helpers.mjs→detectAlertLevel - Consumer:
src/components/DiseaseOutbreaksPanel.ts - Tests:
tests/disease-outbreaks-seed.test.mjs - Tracking: #3791
- Pattern reference: CII risk scoring methodology (same disclosure pattern, larger scope)
