Gaming/Player protection flags

Flag a change in play while the session is still running.

Signals tells your player protection team and tooling when a player's stakes, session length or deposits have moved away from their own pattern, so the review happens during the session instead of after it.

Earlier player protection flags

Raise the flag while the player is still in the session.

A flag is early when it reaches your team while the session it describes is still running. Signals gives your player protection team and tooling how this player's stakes, session length and deposits compare with their own pattern, and how long since one of their own limits was reached. What counts as a marker, and what happens next, stay your rules under your own obligations.

Flag a stake climbing past this player's own norm

A player whose stake has sat near the same figure for a month is betting far above it tonight, and the last few bets are each bigger than the one before. The scheduled risk review reads this session after it ends, so the pattern reaches your team as history. Against the whole player base this stake may look ordinary. Against this player's own month it is a change, and the moment to see it is while the bets are still going in.

What Signals knows
mean_stake_1h
Mean stake over the last hour of this session
mean_stake_30d
Mean stake over the last 30 days
bets_1h
Bets placed in the last hour
What your team and tooling do

Compares the two means and, when this hour's stake passes the ratio your protection policy sets for a marker, opens a case in your player protection tooling with both figures attached. Your team decides what, if anything, happens next.

protection.ts · 17 lines
// In the service that checks protection markers after each bet
const player = await signals.getServiceAttributes({
  name: "game_protection_stakes",
  attribute_key: "user_id",
  identifier: playerId,
});
// { mean_stake_1h: 42.5, mean_stake_30d: 8.1, bets_1h: 37 }

const rising = player.mean_stake_1h >= player.mean_stake_30d * policy.stakeRatio;

if (player.bets_1h >= policy.minBets && rising) {
  protection.openCase({
    playerId,
    marker: "stake_rising",
    evidence: { thisHour: player.mean_stake_1h, usual: player.mean_stake_30d },
  });
}

Try it on your own site.

Add the SDK, define one thing you want to know about a visitor, and watch it update while you click around. The free tier runs on the real engine: no card, no sales call.