Platform reference · Levels and ranks
The Levels Ladder
Players earn XP from every bet they place. XP carries them up a ladder you build, and if they go quiet, back down it. Here is how that works, what you can change, and where it catches people out.
- Unit of progress
- XP, earned from bet stakes
- Counters per player
- Total XP and Period XP
- Ladder shape
- Ranks, levels, bonuses
- Reset rhythm
- Monthly by default
Color key: You configure Runs automatically Watch out
The model in a minute
The whole system in six points.
- Every settled bet gets converted into XP. The rate depends on which currency the bet was placed in.
- That XP lands in two separate counters. Total XP is a lifetime figure. Period XP resets on a schedule you set.
- A player's level is whichever rung on the ladder has the highest XP threshold their Total XP has passed.
- Each level also carries a Maintenance XP figure. That is the Period XP a player needs to keep the level when the period closes.
- When a period closes, one of two things happens. Either their Period XP resets and they keep their level, or they drop one rung and their Period XP resets.
- Levels carry bonuses. Reaching a level makes its bonuses claimable, and leaving it makes them unclaimable again.
Nearly all of this looks after itself. The ladder you build plus a player's betting history is enough to work out where they belong, and nobody has to touch it day to day.
An admin can grant a specific level to a specific player. It only ever moves someone up, and it works by topping up their XP rather than by pinning a label on them. Section 09 covers what it does and what it costs you.
Anatomy of the ladder
Four things are involved. You build three of them and the system writes the fourth.
Rank
A visual family: a name, a color and an icon. Bronze, Silver, Gold. Ranks carry no XP figure and have no bearing on progression. They exist so several levels can share one look. The color is what tints a player's name in chat, on live wins and on tournament leaderboards.
Rank names, colors and icons all have to be unique. Icons come from a fixed list of 33.
Level
One rung. It has a name, a parent rank, an XP Threshold (the XP needed to reach it), a Maintenance XP figure (the Period XP needed to keep it), a details image and a list of bonuses.
Position on the ladder comes from the XP Threshold and nothing else. There is no separate ordering field, and which rank a level belongs to makes no difference to where it sits.
Level bonus
A link between a level and a bonus that already exists. Only bonuses created for use with levels can be attached, and the system rejects the rest. You can attach the same bonus to more than one level.
Player level record
The system writes a fresh row every time a player's level changes, and only the newest row is live. Each row holds their Total XP, their Period XP, their level, whether they leveled up during the current period, and a copy of the XP figures that applied when the row was written.
Nothing gets overwritten, so every player has a full level history. You will find it in the admin on their Engagement tab.
If your lowest rung has a threshold above 0, brand new players sit on no level at all. No rank color, no level tag, no level bonuses. Set the bottom rung's XP Threshold to 0 if you want everybody on the ladder from signup.
How XP is earned
XP comes from bet stakes and nothing else. Deposits, logins and wins earn none of it. When a bet finishes, its stake gets converted to XP and added to both counters. It makes no difference whether the bet won or lost, so a 10 SC losing spin and a 10 SC jackpot spin earn the same XP.
The conversion rates
| Bet currency | Conversion | Example stake | XP earned | Set where |
|---|---|---|---|---|
| Sweeps Coins (SC) | Stake × the SC multiplier | 100 SC | 85.00 | Brand config |
| Gold Coins (GC) | Stake × the GC multiplier | 100,000 GC | 10.00 | Brand config |
| Crypto or fiat | Converted to USD at the live rate, then 1 USD becomes 1 XP | 25 USDT | about 25.00 | Exchange rates |
Those examples use the reference multipliers in the platform config, 0.85 for SC and 0.0001 for GC. Both are per brand settings and both have to sit between 0 and 1. You can slow XP earning down, but you cannot push an SC or GC multiplier above face value.
Crypto and fiat bets skip the multipliers entirely and convert straight to USD at 1 XP per dollar. So on a brand that takes both, a $1 crypto bet earns roughly 18% more XP than a 1 SC bet does at the reference multiplier. If your brand runs both rails and you want them level with each other, that is an engineering change. There is no way to correct it from the ladder.
Which bets count
- Any settled bet with a stake amount recorded against it, in any game and any currency.
- Bets with no stake amount earn nothing and get skipped quietly. Free spin rounds fall into this group unless a stake value was recorded.
- XP is calculated on the stake and never on the win. Nothing is layered on top of the currency rate.
XP updates run on a background queue rather than inside the bet, so a player's progress bar catches up a moment after the spin, and a little further behind when the platform is busy. Jobs that fail get retried and then parked on a dead letter queue, so XP does not go missing.
Climbing
One rule decides a player's level, and it gets applied fresh every time.
Current level is the level with the highest XP Threshold at or below the player's Total XP.
Next level is the level with the lowest XP Threshold above the current level's threshold.
Previous level is the level with the highest XP Threshold below the current level's threshold.
Three things follow from that rule, and they matter more than they look at first.
- Total XP never gets spent. Reaching a level consumes nothing. Play only ever pushes the number up. The one thing that pulls it down is a downgrade at period close.
- A single bet can clear several rungs. A big enough wager takes the player straight to whichever level their new Total XP lands in, however many thresholds sit in between.
- The top rung has nothing above it. A player who reaches it keeps accumulating Total XP, but there is no next threshold to measure against, so their progress bar reads "Max" and stays there.
Skipped rungs mean skipped rewards. If your bands are narrow next to the stakes your players actually place, high rollers can clear two or three rungs on one bet and never see those levels' bonuses. A reward that everyone passing through should receive needs to sit on a rung nobody can jump, or on every rung from that point upward.
The period: hold or drop
The period is what turns the ladder into a retention mechanic, and it is the only part of the system that can take a level away.
When it fires
- A job wakes at midnight on the server clock every day and checks one thing: does today fall on a period boundary, according to your brand's schedule?
- The reference schedule is
0 0 1 * *, which means the 1st of every month. Change the expression and you change the rhythm to weekly, fortnightly or quarterly. - Only the day part of the schedule gets used. The time of day is ignored, and a boundary always gets processed on the daily midnight run.
- Two switches gate the whole thing. Levels have to be enabled for the brand and periods have to be enabled. Turn periods off and nobody is ever reset or downgraded.
Two different clocks are involved. The daily trigger follows the server's own timezone, while the test for whether today is a period boundary is worked out against the UTC date. On a server running in UTC those agree and there is nothing to think about. Nothing in the deployment config pins the timezone, so it is worth asking engineering what our servers actually run on before you promise anyone a specific hour.
What happens to each player
Maintenance XP is set per level. Put it at 0 and that level can never be lost, because the check always passes. That is how you turn a rung into a permanent achievement instead of a monthly commitment.
How the run behaves
The run sweeps every registered player, so it is built for safety ahead of speed.
- Players get walked in pages of 1,000, and each one becomes its own small job. Nothing runs inside a single long transaction.
- A lock stops two servers starting the same run, and every player gets marked off as processed, so a retry or a deploy partway through cannot process anybody twice.
- The run takes a while to drain. On the morning a period closes, expect level changes and their emails to arrive spread across a window rather than all at once.
How a downgrade lands
A downgrade keeps a player's progress percentage and re-projects it onto the band underneath. Someone 40% of the way through Silver I lands 40% of the way through Bronze II, so they do not fall to the bottom of the rung below.
Three cases behave differently
| Situation | What the drop does | Why it matters to you |
|---|---|---|
| Player is on the top rung | Total XP gets set to the previous level's threshold exactly, so they land at 0% of the rung below. | Your VIPs take the harshest drop in the system. No progress carries over and they land on the floor of the rung below, losing all the overflow XP they had built up. Worth remembering when you price Maintenance XP at the top. |
| Player is on the bottom rung | Total XP gets set to that rung's own threshold. Their level does not change, and their progress within it is wiped. | Progress toward the second rung disappears, and the change still gets recorded and emailed as a level change. Setting bottom rung Maintenance XP to 0 avoids the whole situation. |
| Player is on no level | Nothing. There is no maintenance rule to fail, so they always get a Reset. | Players below the ladder never get penalized, though they never show up in level reporting either. |
A downgrade only ever costs one rung, however long a player has been away. Nothing compounds. Someone who misses six periods in a row falls six rungs across six months, one at a time.
Rewards
The only functional reward attached to a level is its list of bonuses. Whenever a player's level changes, the system reconciles their level bonuses against the new level in a single pass.
Granted
Any bonus on the new level that this player has never held gets created for them and becomes claimable.
Switched back on
A bonus they held before and had switched off becomes claimable again. It is the same bonus record, not a fresh copy.
Switched off
Any level bonus missing from the new level stops being claimable. Nothing gets deleted, so the record survives for history.
Two things follow from that, and both are deliberate.
- A level bonus only ever gets granted once per player. Bouncing between two rungs across periods switches the same bonus back on each time instead of issuing a new one, so nobody can farm rewards by hovering around a threshold.
- A bonus attached to several levels survives moves between them. If Gold I, II and III all carry the same weekly cashback, a player moving among those three keeps it live throughout. That is the usual way to make a reward stick from a given rank upward.
Since a bonus never gets granted twice, a level bonus cannot serve as a repeatable reward. A recurring perk, say a monthly free spin drop for Gold players, has to come from the bonus's own recurrence rules. The levelling system will not hand it out again. And a player who ends up on no level loses every level bonus at once.
Only bonuses set up for use with levels can be attached to a rung. Tournament, package and CDP bonuses get rejected. If a bonus you want is missing from the level form's picker, it was created for something else and needs a level version.
Player journeys
Six paths, which between them cover about every state a player can be in. They all assume the reference ladder: Bronze I at 0, Bronze II at 5,000, Silver I at 15,000 and Gold I at 40,000, with Silver I asking for 8,000 Period XP to hold.
- 01The account is created and a level record is written immediately, with 0 Total XP and 0 Period XP.
- 02The bottom rung sits at 0 XP, so they resolve straight onto Bronze I and any Bronze I bonuses are granted there and then.
- 03Their rank color and level tag show up in chat, on live wins and on tournament leaderboards from their first message.
- 01They play through the month. Each settled bet adds XP to both counters, and the progress ring on Profile › My Level creeps up as they go.
- 02Mid-month they cross 15,000 Total XP. A new level record opens at Silver I, Silver I's bonuses are granted, an email goes out and an in-app level up notification fires.
- 03That level up also marks them immune to downgrade for the rest of the period.
- 04At period close they get a Reset. Silver I stays, Total XP stays, Period XP goes to zero and the immunity clears.
- 01They start the period on Silver I with 22,500 Total XP, needing 8,000 Period XP to hold it.
- 02They wager steadily and finish on 9,400 Period XP, over the line but well short of Gold I at 40,000.
- 03At period close they get a Reset. Their level has not changed, so no email and no notification go out. All they see is their period counter going back to zero.
- 01They start on Silver I with 25,000 Total XP, 40% of the way to Gold I.
- 02They have a quiet month and finish on 2,100 Period XP against a requirement of 8,000. No level up, so no immunity.
- 03At period close all three checks go against them. They drop to Bronze II and their Total XP is rewritten to 9,000, which is 40% through the Bronze II band.
- 04Silver I's bonuses switch off and Bronze II's are granted or switched back on. An email goes out. No in-app notification fires.
- 05Getting Silver I back means climbing from 9,000 to 15,000, so 6,000 XP rather than the 25,000 they had accumulated.
- 01Support escalates a goodwill case. The player sits on Silver I with 22,500 Total XP.
- 02An admin grants them Gold I. The system awards the 17,500 XP gap, so their Total XP becomes exactly 40,000.
- 03They move to Gold I, Gold I's bonuses are granted, and they get both the email and the in-app level up notification, exactly as if they had earned it.
- 04The grant also marks them immune to downgrade for the rest of the period, and it is recorded against the admin who did it.
- 01They reach Gold I, the highest rung. Their profile reads "You have reached the maximum level" and the progress bar shows Max.
- 02Total XP keeps climbing with every bet, invisibly. With no next threshold to measure against there is no visible progress and no further reward.
- 03If they ever miss Gold I's maintenance requirement they land on the floor of the rung below with no progress carried over, losing all that accumulated overflow.
What you control
In the admin
The ladder itself lives under Platform Setup › Level Management, split into a Levels tab and a Ranks tab. Level grants live somewhere else, on the player's own page. Every create, edit and delete gets recorded in the audit log against the admin who did it.
| Action | Where | Effect on live players |
|---|---|---|
| Create, edit or delete a rank | Ranks tab | Immediate and purely visual. A rank cannot be deleted while any level still points at it, and once it does go, it is gone for good. |
| Create a level | Levels tab, Create | New signups resolve against it straight away. Existing players stay put until you recalculate, or until they cross their own cached threshold through play. |
| Edit a level's XP figures | Levels tab, Edit | Existing players keep the old figures until you recalculate. A period close also refreshes those figures, without moving anyone. |
| Edit a level's bonuses | Levels tab, Edit, step 2 | Nothing changes hands until the player's next level change, or until you recalculate, which reconciles everyone. |
| Delete a level | Levels tab, Delete | Hidden from players immediately. Anyone still sitting on it stays there until you recalculate. |
| Recalculate | Levels tab, Reset levels | Re-resolves every player against the current ladder. See below. |
| Grant a level | User Administration, the player's page | Immediate, for that one player. See below. |
| Inspect a player | User Administration, the player, Engagement | Read only: current level, full level history, XP chart. |
Granting a level
You can put an individual player on a specific level without waiting for them to earn it. It is the only manual lever in the system, and it works differently from how most people assume.
What it does, in order:
- Works out the gap between the player's current Total XP and the target level's XP Threshold.
- Awards exactly that much XP, so their Total XP permanently becomes the threshold figure.
- Runs the same level up path a real bet would, which grants the target level's bonuses and marks the player immune to downgrade for the rest of the period.
- Sends the level change email and the in-app level up notification, exactly as an earned level up would.
- Writes a grant record naming the admin, the player and the level, so it shows up alongside cash and package grants in the player's history and in the audit log.
Upward only. The target level's threshold has to be above the player's current Total XP. Granting a level at or below where they already are gets rejected, so you cannot demote anyone and you cannot re-grant a level they have already passed.
The XP is permanent. A grant leaves the player holding credit they never wagered for, and it does not wear off. That shortens every future climb and cushions every future downgrade, which makes granting a top level a bigger giveaway than it looks.
It refuses stale players. If the player's cached XP figures are out of date, the grant lands them somewhere other than the level you picked, and the system rejects the whole thing rather than guessing. If you get that error, recalculate first and try again.
Granting a level sits behind the funds write permission, alongside cash and package grants, plus Admin and Super Admin. That is a deliberately tighter group than the platform setup permission that governs the ladder itself. Anyone who can hand out money can hand out levels.
The one button that matters: Reset levels
The button says Reset levels and warns you it "will reset and recalculate levels for all users". It does not reset anything. It re-resolves every player against the ladder as it stands right now. Total XP survives, Period XP survives, downgrade immunity survives, and nobody's progress gets wiped.
Here is what it actually does to each player:
- Takes their existing, untouched Total XP and looks up which level that XP now corresponds to.
- Writes a new level record if their level changed, or if any of the three cached XP figures changed.
- Reconciles their level bonuses against wherever they ended up.
Each player's record carries a copy of the XP figures that were in force when it was written, and those copies are what the system checks on each bet. A ladder edit does reach existing players on its own eventually, but only in pieces: they pick up the new shape when they next cross a threshold, and a period close refreshes their cached figures without moving them. Recalculating is how you apply an edit to everyone at once, on purpose, at a moment you choose.
The ladder edit playbook
- Make all your edits first. Add, re-price and delete every rung you mean to change before you touch Reset levels. One recalculation covers the whole batch, and one batch means one email per affected player instead of several.
- Think about the send before you press it. Every player whose level actually moves gets a level change email. Re-pricing a busy band can turn into a mass send.
- Press Reset levels and confirm. The run gets queued and drains in the background. The toast tells you it started, not that it finished.
- Spot check a few players under User Administration, Engagement, to confirm they landed where you expected.
You cannot double-start a recalculation. A second attempt within a minute comes back with "already in progress". The action needs the platform setup write permission, Admin or Super Admin.
In the brand config, with engineering
| Setting | What it does | Reference value |
|---|---|---|
| Levels enabled | Master switch. Off means no My Level page, no level tags in chat or on leaderboards, and no period runs. | true |
| SC multiplier | XP per Sweeps Coin staked. Capped at 1. | 0.85 |
| GC multiplier | XP per Gold Coin staked. Capped at 1. | 0.0001 |
| Period enabled | Off means Period XP still accrues but nothing ever resets or downgrades. | true |
| Period schedule | Which days close a period. Day granularity only. | 0 0 1 * * |
These are deploy time settings per brand rather than admin toggles, so changing any of them is an engineering request. Check your brand's live values before you plan around them. The example configs in the repo have levels switched off for some brands.
Rules and gaps
Half the job of designing a ladder is knowing which mistakes the system will catch for you and which ones it will wave straight through.
Enforced, so you get an error
- XP Threshold and Maintenance XP have to be zero or positive, and the admin form takes whole numbers only.
- Every level needs a name, a rank and a details image of at least 400 by 130 pixels.
- A level's rank has to exist.
- Rank name, color and icon are each unique platform wide, and icons come from a fixed list of 33.
- A rank cannot be deleted while any level references it.
- Only level scoped bonuses can be attached to a level.
- A player has exactly one live level record, guaranteed in the database.
- Level grants only go up, and one that would land the player anywhere other than the level you picked gets rejected outright.
- XP counters can never go negative and no bet can apply negative XP.
- Levels and their bonus links are soft deleted, so engineering can recover them and existing history keeps resolving. Deleting a rank is permanent, though the system blocks it while any level still points at that rank.
Not enforced, so nobody stops you
- Duplicate XP Thresholds. Two levels on the same figure is accepted. One of them ends up unreachable and the ordering between them is arbitrary. Keep thresholds distinct.
- Maintenance XP has no relationship to band width. You can ask for more Period XP to hold a level than it takes to climb out of it, which makes standing still harder than advancing.
- Ranks do not have to be contiguous or ascending. Nothing stops a Gold level sitting between two Bronze levels on the XP axis, and the player facing list will show exactly that.
- Ladder edits do not reach players until you recalculate, and nothing warns you.
- Deleting a level does not move the players on it. Recalculate straight after any delete.
- No preview and no dry run. There is no way to see how many players a re-priced ladder would move before you commit to it.
- No cap on grants. No limit on how many levels one admin can grant, no approval step, and no way to reverse one. The XP a grant awards cannot be taken back.
- No way to adjust XP directly. You can grant a whole level, but you cannot nudge a player's XP up or down to correct a mistake.
Edge cases
Behaviour that is correct but surprising. These are the ones that generate questions in a room.
| Case | What happens | Flag |
|---|---|---|
| Bottom rung above 0 XP | New players have no level, no rank color and no level bonuses until their first qualifying bet. | Design choice |
| One bet clears two rungs | The rung in the middle never goes live, so its bonuses never reach the player. | Reward loss |
| A level up buys immunity | Any level up during a period exempts the player from that period's maintenance check, however small the level up was. | By design |
| A granted level buys immunity too | A grant runs the same path as an earned level up, so it also protects the player from that period's downgrade. | Easy to miss |
| A grant is permanent XP | The player keeps the XP the grant awarded, which shortens every future climb and softens every future downgrade. | Easy to miss |
| Grants cannot be undone | There is no revoke, and no way to remove the XP. The only route back down is a period downgrade. | No safety net |
| A level up rebases Period XP | On a level up, Period XP drops to just the overflow into the new level rather than keeping the month's running total. | By design |
| Downgrade on the bottom rung | Progress within the rung gets wiped but the level does not change, and it still gets recorded and emailed as a level change. | Confusing email |
| Downgrade on the top rung | No progress carries over. Straight to the floor of the rung below, forfeiting all overflow XP. | Hits VIPs |
| Holding a level says nothing | A successful defence produces no email and no notification. The only sign is the period counter resetting. | Message gap |
| Downgrades email but do not notify | Losing a level sends the level change email. The in-app notification only fires when a player goes up. | Message gap |
| Recalculation can mass email | Every player whose level moves gets a level change email, all inside the same run. | Plan the send |
| Crypto and fiat skip the multipliers | Those bets convert to USD at 1 XP per dollar with no multiplier applied. | Rail imbalance |
| Bets with no stake amount | Earn no XP and get skipped quietly. | By design |
| Total XP is a running counter | It never gets recomputed from bet history, not even by a recalculation. It is what has accumulated, less any downgrades. | By design |
| Period runs drain over time | Level changes and emails arrive across a window on the morning a period closes, not all together. | By design |
| A period close refreshes cached figures | The monthly run rewrites every player's stored XP figures from the live ladder, but it does not re-resolve which level they are on. So a re-priced ladder partly lands on its own, leaving players on a level their Total XP no longer matches. | Easy to miss |
| The progress bar can disagree with itself | After a ladder edit and before a recalculation, the next level a player sees is read live while the percentage is worked out from their stored figures, so the card can name one level and measure against another. | Recalculate |
| Periods off, levels on | A perfectly valid setup. Players climb and can never fall, and Maintenance XP becomes decorative. | Your call |
Player messages
What the platform sends on its own, with no CRM campaign attached. The two blanks are the interesting part.
| Event | In-app notification | Live UI update | |
|---|---|---|---|
| XP earned, no level change | Nothing | Nothing | Yes, progress ring and counters |
| Level up from play | Yes | Yes, "level up" | Yes |
| Level up from an admin grant | Yes | Yes, "level up" | Yes |
| Level held at period close | Nothing | Nothing | Period counter resets |
| Downgraded at period close | Yes | Nothing | Yes |
| Moved by a recalculation | Yes | Nothing | Yes |
The level change email carries the new level name, its rank name and the XP threshold. It only goes out if the player has an email address on file and they landed on a level that still has a rank attached, so a player who ends up on no level hears nothing at all. One template covers both directions, so the same email announces a promotion and a demotion.
One. A single template for up and down is a real brand risk. Read the copy again imagining a player who has just lost a level, and push for a separate downgrade template if it does not hold up.
Two. Holding a level, which is the outcome you most want to reinforce, passes in silence. If defending a level should feel like an achievement, that campaign has to be built in your CRM against the level change feed, which is published to the data warehouse on every change.
A granted level is indistinguishable from an earned one as far as the player is concerned. They get the same email and the same congratulatory notification. Whether that is what you want from a goodwill gesture is a call for you rather than for engineering.
Decisions to make
The mechanics are settled. These are the calls that belong to you, and the questions worth taking into the room.
Does the bottom rung start at zero?
Starting at 0 XP puts every signup on the ladder straight away, tagged in chat and holding a welcome bonus. Starting above 0 makes the first rung something they earn, at the cost of a cohort you cannot tag or reward.
How wide, given your stake sizes?
Narrow bands give frequent, motivating level ups and more skipped rungs whose bonuses go nowhere. Wide bands mean every reward gets collected but progress feels slow near the top. Check your typical and 95th percentile stakes against your band widths before you commit.
Which levels are permanent?
Maintenance XP of 0 makes a rung impossible to lose. A common shape is permanent lower rungs and defended upper ones. Remember that a bottom rung with a non-zero requirement produces a confusing downgrade that changes nothing.
Is the VIP cliff acceptable?
Top level players who miss maintenance land on the floor of the rung below with nothing carried over. Soften it with a 0 maintenance figure on the top rung, or add rungs above so nobody sits at the ceiling.
Who can grant a level, and when?
Anyone with funds write can do it, there is no approval step, no cap and no way to reverse one. Agree what a grant is for, who signs it off, and whether a top level grant needs a second pair of eyes. The XP it hands over is permanent.
Who owns the silent outcomes?
Holding a level sends nothing, and a downgrade sends a shared template with no in-app notification. Both need either a CRM campaign or an engineering ticket. Decide which, and when.
Questions for engineering
- Can the Reset levels button be renamed and its warning corrected? It currently describes something the system does not do.
- Can the level change email be split into separate promotion and demotion templates?
- Should the in-app notification fire on a downgrade too, or is email only deliberate?
- Should a granted level really send the same celebratory notification as an earned one?
- Can a level grant be reversed, or the XP it awarded be adjusted, when someone gets it wrong?
- Is a dry run possible, showing how many players a ladder edit would move before we commit?
- Should crypto and fiat bets get an XP multiplier so all rails earn at the same rate?
- What are our brand's live values for the levels switch, the multipliers and the period schedule?
- What timezone do the servers run in, so we know what hour a period actually closes?
- Has the level grant feature shipped to our brand yet, or is it still on its way?