How it worksOne engine keeps running totals for everything your product tracks, and answers the moment something changes.
EventTotalAnswerDecision
AggregationsCount anything, per anything, over any windowReal timeAnswers in your app, pushed to your systemsDecisionsYour rules first, AI for the restWorkspaceBuild, test and change without codeSecurityIsolated, private, on record
Acme
Globex
Initech
Usage & limitsKeep usage live for every account and act before a customer hits a wall.
How much of their plan has each account used this month?
→ Warn the owner at 80 %
Customer insightEngagement, churn signalsTrust & safetyAbuse, fraud, account securitySaaSUsage and engagementBanking & fintechLimits, risk, KYCE-commerceOrders and returnsIoT & industryReadings and silenceGamingFair, safe playMobilityFleets and driversAll use cases
QuickstartTwo calls in your hot path: send events, ask questions.
POST /v1/events
POST …/profiles/usage_check:evaluate
→ { "reasons": ["near_limit"] }
DocsConcepts and guidesAPI referenceEvery endpointTechnical overviewArchitecture and limitsAuthenticationKeys, OAuth, workload identitySelf-hostingHelm and Docker Compose
SecurityA database per customer, scrambled identifiers, everything on record.
Acme
Globex
Initech
DeploymentShared, dedicated, your cloudPlatformsLive numbers for your own customersContactTalk to a personChangelogWhat we shipped
Pricing
Product
How it worksFrom events to live numbers to actionAggregationsCount anything, per anything, over any windowReal timeAnswers in your app, pushed to your systemsDecisionsYour rules first, AI for the restWorkspaceBuild, test and change without codeSecurityIsolated, private, on record
Use cases
Usage & limitsQuotas, plans, meteringCustomer insightEngagement, churn signalsTrust & safetyAbuse, fraud, account securitySaaSUsage and engagementBanking & fintechLimits, risk, KYCE-commerceOrders and returnsIoT & industryReadings and silenceGamingFair, safe playMobilityFleets and driversAll use cases
Developers
QuickstartYour first live numberDocsConcepts and guidesAPI referenceEvery endpointTechnical overviewArchitecture and limitsAuthenticationKeys, OAuth, workload identitySelf-hostingHelm and Docker Compose
Company
SecurityHow your data is kept apartDeploymentShared, dedicated, your cloudPlatformsLive numbers for your own customersContactTalk to a personChangelogWhat we shipped
Pricing
Sign inRequest access

Turn every event into a live number you can act on — for any industry, in any region.

Request access

Product

  • How it works
  • Events and answers
  • Decisions
  • Pricing
  • FAQ

Use cases

  • Usage & limits
  • Banking & fintech
  • Operations & IoT
  • Trust & safety
  • All use cases

Developers

  • Docs
  • API reference
  • Quickstart
  • Technical overview

Company

  • Security
  • Deployment
  • Platforms
  • Contact
  • Changelog
© 2026 AggrelisTermsPrivacyCookiesData centers worldwide
Use cases · By industry

Keep play fair and players safe.

Deposits, sessions, wagers, transfers and messages are counted per player and device, so the limits players choose hold and abuse stands out while the game is running.

Request accessSee the questions
Live questions · illustrative
How much did this player deposit this week?Responsible play
% of their own limit28 %
Enforce their limit
watching
How many accounts play from the same device?Fair play
1/ 3 · accounts on device
Review the group
watching
Is this player cashing out a bonus before playing it through?Bonuses
Bonus takenWagering not metCash-out asked
Hold the cash-out
watching
What you can ask

The questions this answers

Typical questions, each with the window it usually looks at. Thresholds are starting points you set yourself.

  • Honour deposit limits

    How much has this player deposited today, this week and this month, against the limits they set?

    calendar day, week and month, player's time zone
  • Track time played

    How many minutes has this player played today and this week?

    calendar day and week, player's time zone
  • Check bonus wagering

    How much has this player wagered since their last bonus, before they cash out?

    since the last bonus, at most 30 days
  • Find multi-accounting

    How many different accounts play from this device?

    rolling 30 days
  • Spot chip dumping

    How much has one player passed to the same other player, again and again?

    rolling 7 days, per sender and receiver
  • Throttle chat floods

    How many messages did this player send, to how many different players, and how often were they reported?

    rolling 10 minutes
Worked example

A weekly deposit limit the player chose

A player set themselves a weekly deposit limit of 200 EUR. Before each deposit, your cashier asks how much they have deposited this week, in their own time zone, with this deposit added. Over the limit, the deposit is refused and the player sees what is left of their week.

  • Send each completed deposit with the player and the amount
  • Define deposits per player, exact to the cent; keep each player's own limit and time zone on the player
  • Ask before each deposit, with its amount: where would the week end up?
  • Act: refuse what goes over the limit and show the player what is left
POST /v1/events
{
  "id": "dep_55018",
  "type": "deposit_completed",
  "ts": "2026-11-02T19:05:44Z",
  "attrs": {
    "player_id": "p_5120",
    "amount": "50.00",
    "currency": "EUR"
  }
}
POST /v1/admin/profiles
{
  "name": "deposit_check",
  "description": "This week's deposits against the player's own limit",
  "spec": {
    "entity": "player",
    "input": [{"name": "amount", "type": "decimal(2)"}],
    "features": {
      "depositsToday": {
        "state": "deposits_by_player",
        "window": {"calendar": "day", "tz": "subject.timezone", "defaultTz": "UTC"}
      },
      "depositsThisWeek": {
        "state": "deposits_by_player",
        "window": {"calendar": "week", "tz": "subject.timezone", "defaultTz": "UTC"}
      }
    },
    "derived": [
      {
        "name": "weekAfter",
        "expr": "double(depositsThisWeek) + (has(input.amount) ? input.amount : 0.0)"
      }
    ],
    "reasons": [
      {
        "name": "over_own_limit",
        "when": "has(entity.weeklyLimit) && weekAfter > double(entity.weeklyLimit)"
      }
    ]
  }
}
POST /v1/entities/{type}/{id}/profiles/{name}:evaluate
{
  "entity": {"type": "player", "id": "p_5120"},
  "values": {
    "depositsToday": "50.00",
    "depositsThisWeek": "170.00",
    "weekAfter": 220
  },
  "reasons": ["over_own_limit"],
  "degraded": [],
  "skipped": [],
  "profileVersion": "deposit_check@v3",
  "configVersion": 18,
  "evaluatedAt": "2026-11-02T19:06:10.207Z"
}
Illustrative. Field names are examples.
What it uses

The parts of Aggrelis behind it

Nothing built for one industry: the same building blocks, configured for this job.

  • The player's own week

    Day, week and month start at the player's local midnight, from the time zone you keep for them.

  • Since the last bonus

    Wagering counted from the player's last bonus, not from a fixed date.

  • Exact amounts

    Deposits and wagers as exact decimals, per currency, never rounded through floating point.

  • How many different

    Accounts per device, players one player sends to, recipients per message: counted per player, device or pair.

  • Ask before the deposit

    The answer comes back inside the cashier's request, and results can be pushed to your player-safety team.

  • Change rules without a release

    Your team adjusts thresholds and tests them on real play in the workspace.

Related

Often used together

  • Trust & safetyAbuse, account security, riskHow many failed sign-ins from this network in 15 minutes?
  • Banking & fintechLimits, risk, KYCHas this customer's activity outgrown what they declared?
  • Customer insightEngagement, churn signalsWhich accounts went quiet this week?
Early access

Your first live numbers, configured not coded

Tell us what you would count first, and we'll help you set it up.

Request accessSee how it works