Real-Time Decisioning Demo | Sportsbook Real-Time Bonus Decisioning
Pipeline<12ms
1 / 9
1
Architecture
2
Session Start
3
Ingest
4
Context
5
Feature Serving
6
Ranking
7
Business Impact
8
Outcome
9
Architecture Recap
Stage 1: The Architecture
Unified bonus decisioning on top of the operator stack
Bonus decisions should not be static campaign logic. Wallet state, product history, bonus exposure, session intent, payment readiness, risk signals, and responsible gaming guardrails flow through RDI and Redis Feature Form into Redis. Redis serves the decision-ready context needed to choose the right offer, suppress the wrong one, or show no bonus at all.
Data Sources

Account + Wallet

Balance, deposits, withdrawals, limits

Bonus Engine

Eligibility, wager state, prior redemption

Sportsbook + Casino

Product behavior, session value, inactivity

Payments + KYC

Payment success, verification, risk state

Kafka or Redis Streams

Clicks, opens, dismissals, and campaign triggers via Kafka or Redis Streams built-in

Ingest Layer

RDI

Syncs wallet, bonus, account, and product state

Redis Feature Form

Serves promotion response, deposit, churn, and suppression features

Unified Context Layer

Redis RAM

Hot session, active promo state, deposit readiness

Redis Flex

Warm bonus history, product affinity, vectors, and long-tail behavior

Feature Store

Offer response, wallet friction, reactivation, RG suppression

Redis Context Retriever

Assembles the Player 360 — wallet state, bonus history, and product affinity — and exposes it as structured MCP tools for the offer decision engine

Decision Engine

Eligibility Rules

Wager state, geo, age, product, exclusion rules

Offer Ranker

Conversion, margin, reactivation, and trust weighting

Suppression Logic

Bonus fatigue, low relevance, safer-play blocks

Policy Arbitration

Choose best offer or no offer

Output Surfaces

Homepage Module

Contextual bonus tile or suppression

Deposit Flow

Pre-fund or post-fund bonus path

Sportsbook / Casino

Contextual in-product offer placement

CRM + Push

Session recovery and reactivation

Decision Target
<12 ms
Outcome
Best offer or no offer
Business Goal
Conversion + trust
Stage 2: Session Start
The player lands after a quiet week and the platform must choose carefully
Camila returns after five inactive days. She usually plays slots and occasionally in-play football, but her last two generic bonus banners were ignored. She has MXN 120 in wallet, no open wagers, and a payroll deposit just cleared. The decision now is whether to show a bonus, which one, or suppress it entirely.
Promo Decision Moment
CR
Camila Rojas
Slots-first player | Occasional sportsbook crossover | 5 days inactive | Prior banner fatigue
REACTIVATION WINDOW
Eventsession_start_after_inactivity
Wallet balanceMXN 120
Recent deposit signalPayroll deposit posted today
Last offer interactionIgnored 2 generic deposit banners
Bonus stateNo active wagering requirements
Primary affinitySlots with bonus responsiveness
Risk / RG statusNo active suppressions
Why This Moment Matters
Generic bonus merchandising creates fatigue. Real-time bonus decisioning chooses whether a bonus should help this session or hurt it.
The best outcome is not always “show the biggest bonus.” Often the best outcome is a smaller contextual offer, a product-specific offer, or no offer at all.
The opportunity: Camila has reactivation potential and wallet replenishment, but also clear banner fatigue. The bonus decision has to be contextual and precise.
Stage 3: Ingest
Wallet, bonus, product, and campaign state flow into Redis
RDI keeps the bonus operating picture synchronized. Redis Feature Form serves the online features needed to decide whether to show a bonus, suppress it, or route the player to a better action.
Source Systems → Redis
ACC
Account + Identity
Profile, language, geography, verification state
WLT
Wallet + Payments
Balance, deposit success, preferred rails, failed payments
BON
Bonus Engine
Eligibility, redemption history, wagering state, suppressions
PRD
Sportsbook + Casino Behavior
Product affinity, session frequency, bonus response by product
CRM
CRM + Campaign Stream
Opens, clicks, dismissals, reactivation triggers, banner fatigue
Pipeline Status
Wallet syncSub-second
Bonus stateContinuous CDC
Campaign response feedStreaming
Redis Feature Form parity100%
Promo lookup pathServed from Redis
Cold-start rate<2%
Stage 4: Context
Redis assembles the offer context, not just the player profile
The decision needs more than player profile. It needs wallet readiness, bonus fatigue, product affinity, reactivation likelihood, and suppression state in the same path.
Redis RAMRedis FlexRedis Context Retriever
Durable Context
Primary productSlots
Sports crossoverOccasional in-play football
Prior bonus responseStrong on slot free spins, weak on generic deposit offers
Dormancy trend5-day lull after active 3-week run
Average deposit sizeMXN 500
Wager completion behaviorUsually completes small promo requirements
Live Session Context
Wallet balanceLow but positive
Deposit triggerFresh payroll deposit signal today
Active bonus stateNone
Banner fatigueHigh on generic bonus tiles
Current intentReactivation / low-friction session start
Suppression stateNo RG or fraud suppressions
Context signal: Redis Context Retriever assembles the Player 360 — wallet state, bonus history, and product affinity — so the offer decision engine knows exactly what action to take. A generic deposit banner would likely be ignored again.
Stage 5: Feature Serving
Offer decision features hydrate in milliseconds
Redis Feature Form serves the features that matter for offer choice and suppression: bonus fatigue, reactivation likelihood, deposit need, product affinity, and offer response history.
bonus_fatigue_score
Probability the player ignores another generic promo exposure
0.890.3 ms
slot_offer_response_propensity
Likelihood the player converts on slots-specific incentives
0.810.4 ms
deposit_need_score
Probability the player needs fresh funds before meaningful play
0.370.3 ms
reactivation_lift_score
Incremental lift potential if the right contextual offer is shown
0.760.4 ms
safer_play_suppression_flag
Guardrail signal for when promotions should be held back
FALSE0.2 ms
wager_completion_confidence
Likelihood the player clears small requirements without friction
0.730.3 ms
Feature Serving Performance
Features Hydrated
164
P99 Lookup
1.8 ms
Train / Serve Parity
100%
Stage 6: Ranking
The best offer wins — and sometimes the best decision is suppression
The decisioning stack evaluates deposit bonus, free spins, sportsbook boost, or no offer. Redis provides the context needed to avoid generic merchandising and choose the right action for this session.
#1 Winner
CONTEXTUAL OFFER
Low-friction free spins
Best match for current product affinity, wallet state, and prior response history.
Offer score0.91
#2 Secondary
SPORTS BOOST
In-play football odds boost
Good fit for crossover behavior, but not the strongest first action today.
Offer score0.67
Suppressed
GENERIC DEPOSIT BONUS
Welcome-back deposit banner
This is the kind of offer a static campaign system would over-show and a real-time context layer would correctly suppress.
Offer score0.24
Stage 7: Business Impact
Better bonus decisioning means better conversion and less fatigue
The win is not higher promo volume. The win is better promo precision: more relevant offers, fewer ignored banners, and more trusted session starts.
Offer Economics
Offer conversion+20 to +35% on contextual vs generic
Ignored banner reduction-25 to -40%
Promo cost efficiencyLess wasted bonus exposure
Trust + relevanceHigher because suppressions are smarter
Cross-product liftBetter when the first offer matches intent
Per-Session Outcome
ignored
generic banner
fatigue path
action
contextual offer
reactivation path
Stage 8: Outcome
Same site. Different offer decision.
Without Redis, bonus logic behaves like static campaign merchandising. With Redis, the best session-level offer is assembled from live context.
Generic Bonus Logic
CR
Welcome back, Camila
Promo of the day
Deposit 50%
Broad-segment campaign
low
relevance
high
fatigue
ignored
likely result
Redis-Powered Bonus Decision
CR
Welcome back, Camila
Recommended bonus
Free spins
Slots-led reactivation path
Context assembled in Redis
Offer confidence: 91%
Bonus fatigue, wallet state, and product affinity all point to a lower-friction offer.
91%
confidence
lower
promo waste
higher
conversion
Stage 9: Architecture Recap
Redis turns bonus logic into real-time decisioning
The operator’s campaign, wallet, bonus, and product systems stay in place. Redis makes them actionable together in the live moment, so the platform can decide the best offer — or no offer — before banner fatigue takes over.
Data Sources

Account + Wallet

Balance, deposits, withdrawals, limits

Bonus Engine

Eligibility, wager state, prior redemption

Sportsbook + Casino

Product behavior, session value, inactivity

Payments + KYC

Payment success, verification, risk state

Kafka or Redis Streams

Clicks, opens, dismissals, and campaign triggers via Kafka or Redis Streams built-in

Ingest Layer

RDI

Syncs wallet, bonus, account, and product state

Redis Feature Form

Serves promotion response, deposit, churn, and suppression features

Unified Context Layer

Redis RAM

Hot session, active promo state, deposit readiness

Redis Flex

Warm bonus history, product affinity, vectors, and long-tail behavior

Feature Store

Offer response, wallet friction, reactivation, RG suppression

Redis Context Retriever

Assembles the Player 360 — wallet state, bonus history, and product affinity — and exposes it as structured MCP tools for the offer decision engine

Decision Engine

Eligibility Rules

Wager state, geo, age, product, exclusion rules

Offer Ranker

Conversion, margin, reactivation, and trust weighting

Suppression Logic

Bonus fatigue, low relevance, safer-play blocks

Policy Arbitration

Choose best offer or no offer

Output Surfaces

Homepage Module

Contextual bonus tile or suppression

Deposit Flow

Pre-fund or post-fund bonus path

Sportsbook / Casino

Contextual in-product offer placement

CRM + Push

Session recovery and reactivation

Decision Target
<12 ms
Outcome
Best offer or no offer
Business Goal
Conversion + trust
Stage 2: Session Start
The player lands after a quiet week and the platform must choose carefully
Camila returns after five inactive days. She usually plays slots and occasionally in-play football, but her last two generic bonus banners were ignored. She has MXN 120 in wallet, no open wagers, and a payroll deposit just cleared. The decision now is whether to show a bonus, which one, or suppress it entirely.
Promo Decision Moment
CR
Camila Rojas
Slots-first player | Occasional sportsbook crossover | 5 days inactive | Prior banner fatigue
REACTIVATION WINDOW
Eventsession_start_after_inactivity
Wallet balanceMXN 120
Recent deposit signalPayroll deposit posted today
Last offer interactionIgnored 2 generic deposit banners
Bonus stateNo active wagering requirements
Primary affinitySlots with bonus responsiveness
Risk / RG statusNo active suppressions
Why This Moment Matters
Generic bonus merchandising creates fatigue. Real-time bonus decisioning chooses whether a bonus should help this session or hurt it.
The best outcome is not always “show the biggest bonus.” Often the best outcome is a smaller contextual offer, a product-specific offer, or no offer at all.
The opportunity: Camila has reactivation potential and wallet replenishment, but also clear banner fatigue. The bonus decision has to be contextual and precise.
Stage 3: Ingest
Wallet, bonus, product, and campaign state flow into Redis
RDI keeps the bonus operating picture synchronized. Redis Feature Form serves the online features needed to decide whether to show a bonus, suppress it, or route the player to a better action.
Source Systems → Redis
ACC
Account + Identity
Profile, language, geography, verification state
WLT
Wallet + Payments
Balance, deposit success, preferred rails, failed payments
BON
Bonus Engine
Eligibility, redemption history, wagering state, suppressions
PRD
Sportsbook + Casino Behavior
Product affinity, session frequency, bonus response by product
CRM
CRM + Campaign Stream
Opens, clicks, dismissals, reactivation triggers, banner fatigue
Pipeline Status
Wallet syncSub-second
Bonus stateContinuous CDC
Campaign response feedStreaming
Redis Feature Form parity100%
Promo lookup pathServed from Redis
Cold-start rate<2%
Stage 4: Context
Redis assembles the offer context, not just the player profile
The decision needs more than player profile. It needs wallet readiness, bonus fatigue, product affinity, reactivation likelihood, and suppression state in the same path.
Redis RAMRedis FlexRedis Context Retriever
Durable Context
Primary productSlots
Sports crossoverOccasional in-play football
Prior bonus responseStrong on slot free spins, weak on generic deposit offers
Dormancy trend5-day lull after active 3-week run
Average deposit sizeMXN 500
Wager completion behaviorUsually completes small promo requirements
Live Session Context
Wallet balanceLow but positive
Deposit triggerFresh payroll deposit signal today
Active bonus stateNone
Banner fatigueHigh on generic bonus tiles
Current intentReactivation / low-friction session start
Suppression stateNo RG or fraud suppressions
Context signal: Redis Context Retriever assembles the Player 360 — wallet state, bonus history, and product affinity — so the offer decision engine knows exactly what action to take. A generic deposit banner would likely be ignored again.
Stage 5: Feature Serving
Offer decision features hydrate in milliseconds
Redis Feature Form serves the features that matter for offer choice and suppression: bonus fatigue, reactivation likelihood, deposit need, product affinity, and offer response history.
bonus_fatigue_score
Probability the player ignores another generic promo exposure
0.890.3 ms
slot_offer_response_propensity
Likelihood the player converts on slots-specific incentives
0.810.4 ms
deposit_need_score
Probability the player needs fresh funds before meaningful play
0.370.3 ms
reactivation_lift_score
Incremental lift potential if the right contextual offer is shown
0.760.4 ms
safer_play_suppression_flag
Guardrail signal for when promotions should be held back
FALSE0.2 ms
wager_completion_confidence
Likelihood the player clears small requirements without friction
0.730.3 ms
Feature Serving Performance
Features Hydrated
164
P99 Lookup
1.8 ms
Train / Serve Parity
100%
Stage 6: Ranking
The best offer wins — and sometimes the best decision is suppression
The decisioning stack evaluates deposit bonus, free spins, sportsbook boost, or no offer. Redis provides the context needed to avoid generic merchandising and choose the right action for this session.
#1 Winner
CONTEXTUAL OFFER
Low-friction free spins
Best match for current product affinity, wallet state, and prior response history.
Offer score0.91
#2 Secondary
SPORTS BOOST
In-play football odds boost
Good fit for crossover behavior, but not the strongest first action today.
Offer score0.67
Suppressed
GENERIC DEPOSIT BONUS
Welcome-back deposit banner
This is the kind of offer a static campaign system would over-show and a real-time context layer would correctly suppress.
Offer score0.24
Stage 7: Business Impact
Better bonus decisioning means better conversion and less fatigue
The win is not higher promo volume. The win is better promo precision: more relevant offers, fewer ignored banners, and more trusted session starts.
Offer Economics
Offer conversion+20 to +35% on contextual vs generic
Ignored banner reduction-25 to -40%
Promo cost efficiencyLess wasted bonus exposure
Trust + relevanceHigher because suppressions are smarter
Cross-product liftBetter when the first offer matches intent
Per-Session Outcome
ignored
generic banner
fatigue path
action
contextual offer
reactivation path
Stage 8: Outcome
Same site. Different offer decision.
Without Redis, bonus logic behaves like static campaign merchandising. With Redis, the best session-level offer is assembled from live context.
Generic Bonus Logic
CR
Welcome back, Camila
Promo of the day
Deposit 50%
Broad-segment campaign
low
relevance
high
fatigue
ignored
likely result
Redis-Powered Bonus Decision
CR
Welcome back, Camila
Recommended bonus
Free spins
Slots-led reactivation path
Context assembled in Redis
Offer confidence: 91%
Bonus fatigue, wallet state, and product affinity all point to a lower-friction offer.
91%
confidence
lower
promo waste
higher
conversion
Stage 9: Architecture Recap
Redis turns bonus logic into real-time decisioning
The operator’s campaign, wallet, bonus, and product systems stay in place. Redis makes them actionable together in the live moment, so the platform can decide the best offer — or no offer — before banner fatigue takes over.
Decision Latency
<12 ms
Outcome
Best offer or suppression
Redis Role
Operational context layer
This is the shift from static bonus campaigns to contextual offer decisioning. Redis is not just caching bonus content. Redis is providing the live context needed to decide what promotion should happen now.