Skip to main content
Every CAMEO+ event carries four scores. They are rubric judgements computed by published formulas, not measurements and not forecasts.
The model reads facts; a formula does the arithmetic. A language model reads the coverage for one event and extracts a small set of concrete sub-factors, recording why it chose each value. A fixed, versioned function then turns those facts into a score. This is the split canonical event datasets have always used — KEDS and TABARI through PETRARCH to ICEWS and GDELT — and it is what makes a score re-derivable by hand rather than an opaque model output.

Before you use them

Read Limits and error bars before putting these in a model or an alert threshold. Three things matter most: they are CAMEO+ only (conflict events omit all four rather than return 0), coverage against hard registries is 2.2%, and each scale has a measured noise floor below which a difference means nothing.

Getting the evidence, not just the score

Events coded from 28 July 2026 return the sub-factors and the coder’s reason for each under metrics.metric_inputs. Older events omit the field — the evidence was not recorded for them, and a backfill is planned but has not run.

Versioning

Each event stamps metric_version. The current contract is v2-2026-07-24, in effect from 28 July 2026. Events coded earlier sit on the previous scale. metric_version is stored but not currently returned by the API, so use the presence of metrics.metric_inputs as the boundary marker — it appears only on v2 events.