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.
Comments
Post a Comment