How AI Evaluates Bonuses at Lucky Line

How AI Evaluates Bonuses at Lucky Line: Technical Methodology

TL;DR: We don’t eyeball bonuses. We compute them. Our WordPress backend (ACF) runs an automatic recalculation on every casino/sportsbook update. Data (amounts, currency, wagering, transparency, etc.) is gathered by AI via a strict JSON prompt; editors don’t touch the scores. Then we normalize metrics, apply configurable weights, and output separate 5-star ratings for casino and sportsbook plus an overall score.




1) Data Intake — Editors Don’t Rate, AI Does

Editors provide only the inputs (brand, URL, language, currency). An AI prompt fetches public terms and returns a strict JSON block with raw fields that we store. Example schema:

{
  "bonusPercent": 100,          // integer
  "bs": 100000,                 // max bonus amount in currency (integer)
  "bonusCurrency": "USD",       // ISO-4217 (USD/EUR/GBP/BTC…)
  "freeSpins": 150,             // integer
  "minDeposit": 10,             // integer, in currency
  "wr": 35,                     // wagering multiplier, number only
  "payoutSpeed": 60,            // avg withdrawal time in minutes
  "tr": 80, "or": 85, "ab": 75, "wf": 70, // 0–100: transparency, reputation, extras, withdrawal feasibility
  "bestBonus": "One-line ad copy with the best offer.",
  "sources": ["https://…","https://…"]   // mandatory citations
}

AI returns only JSON — no prose — which allows us to validate and ingest it safely.

2) Recalculation on Save (Auto)

Each time a casino post is saved, we recompute ratings (acf/save_post hook). Autosaves, revisions and drafts are skipped to avoid noise.

3) Currency Handling & Safety

  • We extract a 3-letter currency code from the field (robust parser handles “USD”, arrays, or “USD ($)”).
  • We convert both the bonus amount and the minimum deposit to USD using per-currency rates stored in Options (e.g., usd_rate_eur). If a rate is missing/invalid — fallback 1.
  • Minimum deposit is clamped to ≥ 1 USD for stability.

4) Normalizing Bonus Size with Diminishing Returns

Raw “value” is a ratio of bonus to required deposit (in USD):

value = bonus_usd / min_deposit_usd

To prevent outsized % from dominating the scale, we apply square-root smoothing and a configurable cap (bs_usd_cap, default 1000 USD). Final normalized BS (0–1) is:

BS = min( 1, sqrt( value / ( bs_usd_cap / 50 ) ) )

This makes a 500% headline bonus less likely to swamp more realistic, achievable offers.

5) Wagering & Other Metrics (0–1)

We map wagering to a 0–1 score where lower and more forgiving terms score higher. Our pragmatic scale:

// 10× ≈ ideal, 40× ≈ mid, 70× ≈ worst edge
WR = 1 - clamp( ( wr_raw - 10 ) / 60, 0, 1 )

Other editor/AI inputs already arrive on a 0–100 scale, and we normalize them to 0–1:

TR = clamp( tr / 100, 0, 1 )
OR = clamp( or / 100, 0, 1 )
AB = clamp( ab / 100, 0, 1 )
WF = clamp( wf / 100, 0, 1 )

6) Weights — Transparent & Configurable

Weights are editable in the Options page and can be tuned per project without touching code:

w = {
  BS: weight_bs, WR: weight_wr, TR: weight_tr,
  OR: weight_or, AB: weight_ab, WF: weight_wf
}
// safety floor for misconfigs
if any weight ≤ 0 ⇒ set to 0.1

7) Casino vs Sportsbook — Separate and Overall Ratings

We compute two raw composites and convert them to 5-star ratings (1.0–5.0, step 0.1). Extras (AB) are included for casino but omitted for sportsbook:

casino_raw  = BS*w.BS + WR*w.WR + TR*w.TR + OR*w.OR + AB*w.AB + WF*w.WF
sports_raw  = BS*w.BS + WR*w.WR + TR*w.TR + OR*w.OR           + WF*w.WF

rating_casino     = clamp( round( casino_raw  * 5, 1 ), 1, 5 )
rating_sportsbook = clamp( round( sports_raw  * 5, 1 ), 1, 5 )
overall           = round( ( rating_casino + rating_sportsbook ) / 2, 1 )

All three values are saved back to the post fields, creating a reproducible audit trail.

8) Why This Is Robust

  • Reproducible: same inputs → same outputs; formulae are fixed and public.
  • Resistant to outliers: square-root smoothing reduces “wow”-% distortions.
  • Transparent: all weights are visible and adjustable in one place.
  • Auditable: sources are required in the AI JSON; we keep them with the post.

9) Future Work

  • Regional availability weighting once reliable RA data is ready.
  • Time decay for stale offers (soft penalty if T&Cs haven’t been updated).
  • Confidence score based on source quality and data freshness.

See live rankings on LuckyLine.net →

Comments

Popular posts from this blog

Guide: Autumn Sports Seasons and Betting Opportunities

Guide: Understanding Wagering Requirements