How risk is scored
GeoPulse produces a single 0–100 situational risk score: a weighted average of the available signal sub-scores. Weights are renormalized over only the signals that resolved, so a missing one never silently counts as zero.
Signal weights
- Population30%
- Traffic25% (deferred)
- Weather25%
- Air quality20%
score = Σ(weightᵢ × sub-scoreᵢ) ÷ Σ(weightᵢ), over available signals only.
Sub-scores (each 0–100)
Population
clamp(density ÷ 15,000 × 100)Air quality
clamp(US AQI ÷ 3)Weather
clamp(40×rainProb + 0.6×max(0, °C−32) + 0.6×max(0, 5−°C) + 1.2×max(0, wind−25))Traffic
congestion % from sampled routes (Phase 2, deferred)Risk bands
Low
0–25
Moderate
26–50
Elevated
51–75
High
76–100
Constants live in one place (RISK_CONFIG) and are tuned against real data, not hardcoded magic.