Documentation Index
Fetch the complete documentation index at: https://setup.cevro.ai/llms.txt
Use this file to discover all available pages before exploring further.
What Is the Bonus Engine?
The Bonus Engine determines whether players qualify for bonuses during a conversation. Think of it like a VIP host at a casino—it evaluates who the player is, what they’ve done, and decides what special offers they deserve. Key benefits:- Consistent qualification — Same rules apply to every player, every time
- Tiered rewards — VIPs get better offers automatically
- Seamless integration — Works with your existing AI Procedures
End-to-End Setup
Getting bonuses working requires three things: a bonus configuration, an AI Procedure that uses it, and instructions telling the AI what to do with the qualification result.Create a Bonus Configuration
- Qualification rules — Who is eligible (e.g., players with positive NGR)
- Reward tiers — What they get (e.g., VIPs get 50 spins, others get 15)
Set up your AI Procedure
- Enable player authentication — Toggle on Verify Player Identity in the AIP settings. The bonus engine needs player data to evaluate eligibility.
- Reference the bonus action in your instructions — In the instructions editor, type
@to open the mentions dropdown. Go to the Actions tab and select Qualify for Bonus. This inserts a mention that tells the AI it can check bonus eligibility.
Decide what happens after qualification
- Build a custom integration to call your back-office and issue bonuses (see Custom Integrations)
- Escalate to a human for manual processing
- Send an external message to notify your team
- Or any combination that fits your workflow
Write instructions for the AI
How It Works
The Bonus Engine uses a three-layer system:Creating a Bonus Configuration
Name Your Configuration
Define Segmentation Rules
- Player Fields — Computed attributes configured in your workspace (e.g., VIP level, lifetime value). See Player Fields for how to set these up.
- Tool Fields — Data returned by your back-office integrations (e.g., balance, deposit count, player tier).
Define Qualification Rules
Add Reward Tiers
Reward Types
The Bonus Engine supports different reward types depending on your back-office integration:Standard Free Spins
- Game Provider (BGaming, Mascot, etc.)
- Number of spins
Boosted Free Spins
- Template name (from back-office)
- Value per spin description
Premium Free Spins
- Template name (from back-office)
- Value per spin description
Reward Tiers
Tiers let you give different rewards based on player attributes. They’re evaluated based on their priority number—the first match wins.Example Tier Structure
| Priority | Condition | Reward |
|---|---|---|
| 3 | VIP Player (player.category == 'VIP') | 50 Premium Free Spins |
| 2 | High depositor (player.lastDeposit >= 500) | 30 Boosted Free Spins |
| 1 | Default (always true) | 15 Standard Free Spins |
Brand Scoping
Using “Qualify for Bonus” in Your Instructions
To check bonus eligibility in your AIP, you reference the action using the mentions system:- In the instructions editor, type
@ - A dropdown appears — go to the Actions tab
- Click Qualify for Bonus
- A mention chip is inserted into your instructions
- Evaluates all your bonus configurations against the current player
- Returns whether they qualify and what reward they’d receive
- Provides the reward details (spin count, game provider, template name, etc.)
qualified (true/false) and rewardType. Other fields depend on the reward type:
| Reward Type | Fields You’ll See |
|---|---|
| Standard | spinsCount, game, gameProvider, wager |
| Boosted | templateName, valuePerSpinDescription |
| Premium | templateName, valuePerSpinDescription |
| Cash Amount / Free Spins | amount, amountType, name, description, wager |
comment if one was configured.
What to Do After Qualification
The Bonus Engine tells you IF a player qualifies and WHAT they’d receive. What happens next is up to you. Here are the common patterns:Option A: Build a Custom Integration
Create a custom integration that calls your back-office API to issue bonuses automatically.Option B: Escalate to a Human
Let a human agent handle the actual issuance.Option C: Send an External Message
Notify your back-office team via webhook or email.Option D: Just Inform the Player
Sometimes you just want to tell them what they’re eligible for.Complete AIP Example
Here’s a full example. Note that@Qualify for Bonus and @Transfer to Live Agent would be mention chips inserted via the @ dropdown — not typed as plain text:
@mentions in the example above would appear as styled chips in the actual editor, not as plain text. You insert them by typing @ and selecting from the dropdown.Qualification Rules
Rules compare player data against expected values. All conditions within a rule set are combined with AND logic — every condition must pass. See Condition Logic below for how to achieve OR behavior.Available Operators
| Operator | Use For | Example |
|---|---|---|
== | Exact match | player.vipLevel == 'gold' |
!= | Exclusion | player.status != 'banned' |
> >= | Minimum threshold | player.totalDeposits >= 100 |
< <= | Maximum limit | player.bonusRate <= 30 |
contains | Array has value | player.tags contains 'loyal' |
is_in | Value in list | player.status is_in ['active', 'verified'] |
contains any of | Array has ANY of multiple values | player.tags contains any of ['vip', 'whale'] |
contains all of | Array has ALL of multiple values | player.badges contains all of ['verified', 'depositor'] |
does not contain any of | Array has NONE of multiple values | player.restrictions does not contain any of ['banned', 'abuser'] |
Tag-Based Qualification
Thecontains any of, contains all of, and does not contain any of operators are powerful for tag-based bonus qualification:
Example: VIP-tier bonus qualification
Example: VIP-tier bonus qualification
vip OR whale OR high-roller OR platinum in their tags.Example: Multi-requirement qualification
Example: Multi-requirement qualification
Example: Exclusion-based qualification
Example: Exclusion-based qualification
Data Sources
Rules can reference:- Player Context data — From back-office integrations (balance, deposits, VIP level)
- Computed attributes — Custom calculations you’ve configured (like bonus rate or lifetime value)
Condition Logic
Within each section (segmentation, qualification, and tier conditions), all conditions are combined with AND logic — every condition must be true for the section to pass. There is no OR toggle within a single rule set. If you need OR logic, create separate bonus configurations (segments) with different priority levels. For example, instead of “VIP OR high depositor” in one segment, create two segments — one targeting VIPs and another targeting high depositors.Testing Your Configuration
Before enabling a bonus configuration, use the built-in test panel on the Bonus Engine page itself:Open the Test Panel
Select an Authenticated Ticket
Run the Test
- Whether the player qualifies (pass/fail)
- Which reward tier matched
- The full reward details (spin count, template, etc.)
Review the Rule Trace
Generate an AI Explanation
- CSM-friendly — Simple language explaining why the player did or didn’t qualify
- Engineering — Detailed view with field paths, resolved values, and compute expressions
Bonus Explain (Ticket-Level Debugging)
When investigating why a specific player qualified (or didn’t), use the Explain Bonus feature from the ticket inbox:Review the Evaluation
- Context — Ticket metadata, player ID, brand, authentication status
- Classification — Which bonus config matched (with expandable rule trace)
- Qualification — Whether the player qualified (with rule-by-rule breakdown)
- Reward Tier — Which tier matched and what rewards were calculated
- Player Context — All tool responses and computed attributes used
Toggle Cached vs Fresh
- Cached shows data as it was at evaluation time
- Fresh re-invokes tools and re-evaluates with current player data (without affecting the ticket)
Restoring Deleted Configurations
If you accidentally delete a bonus configuration, you can restore it from the Archived tab.Find the deleted configuration
Click Restore
Troubleshooting
| Issue | What to Check |
|---|---|
| Player qualifies but AI denies them | Check your AIP instructions. If they check amount for all reward types, Boosted/Premium rewards will be incorrectly denied — use templateName instead. |
| Player doesn’t qualify when they should | Is the ticket being evaluated? Check segmentation rules first. |
| Wrong reward tier matches | Tiers evaluate by descending priority (highest number first). A broad tier with a high priority number may shadow more specific ones. Adjust priority numbers or conditions. |
| ”Template not found” error | Template names are case-sensitive. Verify it exists in your back-office. |
| Player data not available in rules | Is the back-office tool configured? Is authentication working? |
| No reward returned | Did you add a default catch-all tier? |
Best Practices
Start with simple rules
Start with simple rules
Use descriptive names
Use descriptive names
Test with real player data
Test with real player data
Document your template names
Document your template names
Add catch-all tiers
Add catch-all tiers
Related Documentation
- AI Procedures (AIPs) — Creating procedures that use bonus data
- Player Context & Actions — Using back-office data in AI Procedures
- Custom Integrations — Setting up bonus issuance endpoints
- Automation Rules — Automatic routing based on player data
- Player Fields — Configuring player attributes