Tacnode™
← The lineup

The Averaged Lie

The hourly job ran at nine. By ten, a campaign had brought in a different set of buyers.

Hourly job computes the typical basket.

What’s true
$82
The warehouse
$82
reads
Decision
Set the per-order cap at 3× typical?
waiting

Illustrative figures.

Where this shows up

Dynamic pricingPrices set from demand as it looked an hour ago.
Per-customer limitsA rolling average that runs a little behind what the customer is doing.
Velocity checksThe window closed before the burst started.
Budget pacingSpend caps set from last hour’s delivery.

Why the warehouse gets it wrong

$82$95$110$125$131$138$140“typical” $82, from 09:0009:0010:0011:0012:0013:0014:0015:00CAP = 3 × $82 = $246

Averages and totals get computed in batches because, for a long time, computing them on every request cost too much. So the limit engine reads a number about a window that already closed, and nothing on the number says how old it is.

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

Compute the average when the cap needs it.

$82$95$110$125$131$138$14009:0010:0011:0012:0013:0014:0015:00CAP = 3 × $140 = $420, read when the decision runs

In Tacnode, the typical basket, velocity and rolling spend are derived from current data, and you choose per number how fresh it has to be. The ones a cap depends on can be computed at the moment the cap is set. Ones that can lag a little sit in a view you refresh on your own schedule.

What comes inSource data arrives via change streams, and decision state is written to Tacnode.
What staysYour pricing and limit rules don’t change.
What the decision getsEach number is as fresh as you’ve decided it needs to be.
If an engineer asks how

Sums, counts and windows resolve at query time against hybrid row and column storage. Heavier ones become incrementally refreshed views on a schedule set in SQL.

Questions to put to your team

  1. How old is the window your limits are computed on?
  2. Which of those numbers can afford to be an hour old?
  3. What did your limits do during the last big campaign?

Is your limit engine 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 →