{
  "schema_version": "1.0.0",
  "last_updated": "2026-05-23T00:00:00Z",
  "last_updated_by": "system_genesis",
  "rules": {
    "large_transaction": {
      "enabled": true,
      "weight": 0.25,
      "params": {
        "threshold_amount_ugx": 5000000
      },
      "description": "Flags transactions exceeding the configured UGX amount. Default threshold matches the value previously hardcoded in kyt-engine.ts."
    },
    "new_recipient": {
      "enabled": true,
      "weight": 0.20,
      "params": {},
      "description": "Flags transactions where recipientType is NEW. No tunable parameters at present; recipientType classification is upstream of this engine."
    },
    "flagged_recipient": {
      "enabled": true,
      "weight": 0.35,
      "params": {},
      "description": "Flags transactions where recipientType is FLAGGED. No tunable parameters at present; flag membership is maintained outside this config."
    },
    "after_hours": {
      "enabled": true,
      "weight": 0.15,
      "params": {
        "hour_range_start": 6,
        "hour_range_end": 22
      },
      "description": "Flags transactions where ctx.timeOfDay falls outside [hour_range_start, hour_range_end] inclusive. Hours-of-day integer matching ctx.timeOfDay shape; TZ is implicit in the caller."
    },
    "api_channel": {
      "enabled": true,
      "weight": 0.10,
      "params": {
        "monitored_channels": ["API", "AGENT"]
      },
      "description": "Flags transactions whose channel is in monitored_channels. Default set matches the previously hardcoded API+AGENT pair."
    },
    "high_risk_category": {
      "enabled": true,
      "weight": 0.20,
      "params": {
        "categories": ["GAMBLING", "CRYPTO", "FOREX", "REMITTANCE"]
      },
      "description": "Flags transactions whose merchantCategory matches an entry in categories. Default set matches the previously hardcoded list."
    },
    "geo_anomaly": {
      "enabled": true,
      "weight": 0.25,
      "params": {
        "allowed_jurisdictions": ["UG", "KE", "TZ", "RW"]
      },
      "description": "Flags transactions whose geoLocation is outside allowed_jurisdictions. Default set matches the previously hardcoded East African allowlist."
    }
  },
  "global_settings": {
    "rule_evaluation_mode": "weighted_sum",
    "medium_threshold_score": 0.25,
    "alert_threshold_score": 0.5,
    "critical_threshold_score": 0.7,
    "log_all_evaluations": false
  }
}
