How We Score

Trust Score and confidence explained.

Our Trust Score (0-100) combines editorial Trust Radar axes, verified facts from our database, and small adjustments for payouts, complaints, and geographic restrictions. Confidence (0-100) reflects how complete and fresh our evidence is - it is not the same as the Trust Score.

Trust Radar (five axes)

Each casino can have up to five numeric axes stored in trust_radar. Editors score each axis from 0 to 10 (decimals allowed).

  • Payout Reliability (payoutReliability)
  • Fair Play Signals (fairPlaySignals)
  • Stability (stability)
  • Complaint Resolution (complaintResolution)
  • KYC Friction (kycFriction) - lower friction scores higher on the chart

We take every numeric value present in the radar object, then:

Step 1 - average on 0-10 scale
avg10 = (sum of all numeric radar values) / (count of those values)
Step 2 - map to 0-100 for blending
S_radar = clamp( avg10 * 10 , 0 , 100 )

If there is no radar data or no numeric values, S_radar is omitted from the weighted blend.

Facts quality score

We load the casino's facts rows and count totals by status:

  • verified - treated as strong evidence
  • estimated - counted toward a penalty (uncertain data)
  • Other statuses count in the denominator but not as "verified".
N = total number of facts
V = count with fact_status = verified
E = count with fact_status = estimated
verified_ratio = V / N
estimated_penalty = (E / N) * 20
S_facts = clamp( verified_ratio * 100 - estimated_penalty , 0 , 100 )

If the casino has no facts, S_facts is omitted from the blend.

Weighted blend (core Trust Score)

Let w_r be Trust Radar weight and w_f be facts weight. Current defaults from configuration:

  • w_r = 0.5
  • w_f = 0.3
T = 0, W = 0
if S_radar exists: T += S_radar * w_r, W += w_r
if S_facts exists: T += S_facts * w_f, W += w_f
if W = 0: Trust Score = unchanged
otherwise: base = (W < 1) ? T / W : T

If only one component is present, we re-normalise by dividing by the sum of active weights so the result stays on a sensible 0-100 scale.

Adjustments after the blend

Starting from base, we add a payout bonus and subtract penalties, then clamp to 0-100 and round to an integer.

Adjustment Rule Configured values
Payout bonus If avg_withdrawal_hours is set and <= 24h, add bonus; else 0. + up to 10 pts
Complaints penalty If verified_complaints is set, non-empty, and not "None" (case-insensitive), subtract fixed penalty. - 5 pts
Restricted countries Subtract min(cap, count x per-country) using restricted_countries_count. 0.5 pts/count, cap 15
Trust Score = round( clamp( base + payout_bonus - complaints_penalty - restricted_penalty , 0 , 100 ) )

Confidence (0-100)

Confidence measures how much evidence supports the profile, not how "good" the casino is. It is computed from verified facts ratio, number of sources, and recency of verification.

verified_ratio = (verified facts) / (all facts), or 0 if no facts
sources_norm = min( 1 , sources_count / 10 )
D = days since last_verified (or updated_at if missing)
If D <= 90: freshness_norm = max(0, 1 - D / 90)
Else: freshness_norm = 0
C = verified_ratio * 0.5 + sources_norm * 0.3 + freshness_norm * 0.2
Confidence = round( clamp(C, 0, 1) * 100 )

Weights are normalised in configuration (defaults: 0.5 / 0.3 / 0.2). If you change them in admin, the live site uses the updated values; this page shows the current effective settings.

Caching

Trust Score and Confidence are recalculated by our pipeline and stored on the casino. Intermediate computation may be cached briefly per casino ID to keep admin and batch jobs fast.