GetRiskScores RPC.
For the full v8 formula, coefficient table, and change history, see
CII Risk Scoring Methodology. This page is
the operator-facing overview.
Monitored Countries
The current Tier-1 set is:
Tier-1 membership is curated rather than algorithmic. A country is included
when it has sustained global-risk relevance, active/recent armed conflict or
severe domestic instability, high regional escalation potential, major
economic/security-system importance, or a dashboard-specific monitoring need.
Changes to this set are methodology-significant because the Strategic Risk
roll-up is computed from the top-scoring countries inside this universe.
Score Model
Each country’s score combines a static baseline with a dynamic event score:Boosts And Floors
Supplemental boosts can raise the blended score when corroborating signals arrive outside the base event components:
The score floor is the larger of UCDP conflict floors and State Department
advisory floors. When live advisory data is absent, the scorer applies the
curated fallback levels published in the
methodology before
calculating the advisory boost and floor.
UCDP conflict floors are derived from the latest available UCDP GED release
(the seeder selects the newest version that returns events, not merely the first
to respond) and only count events inside a 2-year recency window — older
events no longer pin the floor. Within that window, CII classifies a Tier-1
country as UCDP active war when total deaths are greater than 1000 or event
count is greater than 100, and as UCDP minor conflict when event count is
greater than 10 but the war thresholds are not met. Because UCDP GED ships as
annual releases that lag real time, recent kinetic conflict is carried by
ACLED (real-time) and the cross-source signal feed; UCDP supplies the
historical baseline floor. In the
riskScores health/cache signal, the conflict realtime
family is covered when either ACLED or an in-window UCDP feed is present. ACLED
auth being unconfigured degrades the conflict signal to UCDP-only; it becomes
COVERAGE_PARTIAL only when ACLED is dark and UCDP is also absent, stale, or
outside the 2-year scoring window (see Data Sources).
Instability Levels
Bias Prevention
CII is intentionally not a raw media-volume index. The v8 model separates news pressure from conflict scoring, applies lower event multipliers and log dampening in high-observability countries, and uses conflict/advisory floors so active crises do not appear quiet during data gaps. The editorial rationale, Tier-1 inclusion criteria, advisory fallback table, Gaza text-attribution caveat, and per-countrybaselineRisk /
eventMultiplier values are published in
CII Risk Scoring Methodology.
Server-Side Pre-Computation
CII scores are computed server-side byGET /api/intelligence/v1/get-risk-scores
and cached in Redis. The live cache is versioned by the current
methodology_version (v8), with a stale-cache key used as a fallback during
upstream outages.
The Railway relay process also runs an active CII warm-ping loop every 8
minutes against the same RPC. That keeps the server-side risk-score cache warm
for bootstrap and health monitoring while preserving the RPC handler as the
scoring source of truth.
Backed by endpoints
Trend Detection
The server publishesdynamicScore as a signed movement delta in the range
-100..100 against a valid CII snapshot from approximately 24 hours earlier:
- Rising: score movement is greater than 1 point.
- Stable: score movement is between -1 and +1 points, or no valid prior snapshot is available.
- Falling: score movement is less than -1 point.
combinedScore is rounded to whole points, +2 and -2 are the
first integer movements that produce rising/falling trend labels. dynamicScore
is 0 during cold start or when the server cannot find a valid approximate
24-hour prior snapshot.
During initial dashboard startup, Learning Mode suppresses noisy early CII
alerts while data and trend baselines settle. Server-side pre-computation means
users still receive immediate scores; Learning Mode primarily affects local
alert generation.