Warddocs
Concepts

Scores and confidence

score is between 0 and 1, but not every score is a probability. score_kind says which it is.

score_kind Meaning Use it as
calibrated Fitted on your own labelled outcomes (Platt scaling) A probability: 0.30 means about 3 in 10 such cases are bad
heuristic Noisy-OR of published signal weights A ranking: higher is riskier, not a frequency
name_similarity Best list match similarity How close the name is; read with dob_check and country_check
kya KYA Score of an AI agent (trust zones GREEN ≥ 0.70, AMBER 0.40–0.70, RED 0.20–0.40, CRITICAL < 0.20) Agent trust
null The capability decides without a score (for example KYC) Read decision and reasons

From score to decision

Each capability maps its score to a decision with cut-offs. Platform defaults are published on each capability page; you can set your own:

  • Card and payment: assess_step_up_at 0.40, assess_decline_at 0.80 (PUT /api/v1/thresholds).
  • Statement, credit, merchant bands: low < 0.30 ≤ medium < 0.60 ≤ high (PUT /api/v1/ward/thresholds), within half to double each default.

See Thresholds.

Evidence tier

Card scores carry an evidence_tier: STRUCTURE_ONLY (rules), DISCRIMINATION (out-of-fold AUC ≥ 0.70 on your data) or CALIBRATION (and calibration error ≤ 0.05). Below CALIBRATION the probability is marked advisory.

Confidence-gated routing

Route on the score and its kind, not on the decision alone, when you want a softer middle:

d = client.decide("payment", txn)
if d.decision == "STEP_UP" and d.score_kind == "calibrated" and d.score < 0.5:
    challenge_with_otp()      # likely genuine: low-friction step-up
elif d.decision == "STEP_UP":
    send_to_review(d.id)