Tacnode™
← The lineup

The Crowded Total

The home team scores late, and a few thousand bets land on the same outcome in the same second.

Late in the game. Liability on a home win is $180K, against a $250K cap.

What’s true
$180K
The stream job
$180K
reads
Decision
Accept a $10K bet on a home win?
waiting

Illustrative figures.

Where this shows up

Sportsbook tradingLiability per outcome across singles, parlays and bet builders.
Prediction-market makersExposure per event while orders arrive in bursts.
Pick’em operatorsWhat the house owes if one projection hits.
Promo budgetsA shared cap that thousands of redemptions draw on at once.

Why the stream job gets it wrong

PUBLISHED TOTAL: WHAT EVERY CHECK READS$186KBETS ACTUALLY ACCEPTED$246Kstill acceptingcap $250KEVERY CHECK SEES $64K OF ROOM

Liability is a sum over every accepted bet on an outcome, so a stream job keeps it running and publishes it for the bet checks to read. That works until a few thousand bets arrive in the same second. Each check reads the published total, none of them can see what the others are accepting, and the stream job is still counting when they all say yes.

By the time the decision ran, its context was outdated. We call that a context gap.

Check each bet against the bets accepted a moment before.

LIABILITY, EVERY ACCEPTED BET INCLUDED$246K+$10K would crosscap $250Keach accepted bet is written to TacnodeDECLINED: WOULD CROSS THE CAP

Accepted bets are written to Tacnode, and each bet check reads liability computed from them, including the ones accepted a moment earlier. The bets and the total live in the same place, so the cap holds when the burst arrives.

What comes inDecision state is written to Tacnode.
What staysPricing, trading and settlement stay in your systems.
What the decision getsA cap that holds on the busiest night of the year.
If an engineer asks how

Accepted bets are held in Tacnode with ACID semantics, so concurrent acceptances against the same cap are serialized. Liability is a query over those bets at the latest committed data.

Questions to put to your team

  1. When a thousand bets hit the same market at once, how do you enforce the liability cap?
  2. How far behind the accepted bets is the total your bet check reads?
  3. Has a big game ever ended with liability past the cap?

Is your liability total telling this lie?

Bring it to a demo, and we’ll trace what it reads and how old that data is by the time it runs.

Book a demo →