How the scoring engine works

A score built on behavior, not just thresholds

Every transaction triggers a full behavioral read across three signal layers. The result is a risk score delivered synchronously within the checkout flow, with sub-80ms median latency based on our benchmark data.

Request early access
The scoring engine

Reading behavior, not just thresholds

When a transaction arrives, Birdai does not ask whether the amount exceeds a threshold. It asks whether the transaction fits the behavioral pattern this account has established over time.

That distinction matters because fraud adapts to thresholds. A card tester learns to stay under your velocity limit. A synthetic identity behaves normally until it doesn't. Behavioral scoring has no static cutoff to probe.

The engine reads three signal layers simultaneously: account-level behavioral context, cross-account graph relationships, and temporal cadence patterns. Each layer contributes a weighted signal to the final score. The combined result surfaces anomalies that any single layer would miss on its own.

Abstract network graph showing transaction node cluster with anomaly detection
Signal library

Eight signal classes, one composite score

Each signal class surfaces a different dimension of fraud risk. Birdai weighs them dynamically depending on what the transaction data supports.

Account baseline deviation

How far the current transaction deviates from this account's established spending and timing patterns. Captures first-time-high-value events and unusual category shifts.

Velocity and cadence

Transaction frequency, inter-event intervals, and session density. Automated scripts and card-testing tools generate cadence patterns that human users never produce.

Graph cluster signals

Shared devices, addresses, phone numbers, and payment instruments across accounts that appear independent at the individual level but reveal coordination when viewed as a network.

Session-behavior coherence

Mouse movement profiles, form-fill timing, page dwell patterns, and navigation sequences. Human interaction leaves coherent traces. Bot sessions have consistent tells.

Payment instrument history

How many accounts have used this card, BIN cluster behavior, and first-use-in-category flags. New-instrument risk modulated by account age and behavioral match.

Merchant and category mix

The transaction category in context of this account's historical merchant mix. A first-time high-risk category purchase carries different signal weight depending on account tenure and activity history.

Time-of-day and day-of-week

Transactions at unusual hours relative to this account's own historical activity windows. 3am in a timezone where the account has never transacted is a different signal than 3am for an account with active overnight history.

Dispute and reversal history

Prior chargebacks, dispute filings, and reversal patterns on this account and its instrument cluster. First-party fraud risk elevates with dispute frequency relative to transaction volume.

Integration

Three API calls. No model training.

Birdai is designed to sit alongside your existing stack, not replace it. A REST API call returns a score synchronously within the checkout flow.

Step 01

POST the transaction

Send the transaction event at decision time. Include the account identifier, instrument, amount, and any session signals you collect.

POST /v1/score
Content-Type: application/json

{
  "account_id": "acct_92k4",
  "amount_cents": 134000,
  "currency": "USD",
  "instrument_id": "card_7f2a",
  "session_id": "sess_4d9e"
}
Step 02

Receive the score object

The API returns synchronously. The score is a 0-100 integer with a signal breakdown and the top contributing factors for review queue context.

200 OK

{
  "score": 94,
  "signals": {
    "baseline_dev": 0.87,
    "velocity": 0.42,
    "graph": 0.61
  },
  "top_reason": "behavioral_deviation"
}
Step 03

Route the decision

Pass, review, or decline based on your own threshold configuration. Score thresholds are yours to own. Birdai surfaces the signal; your team sets the cutoffs.

if score >= 80:
  action = "decline"
elif score >= 50:
  action = "review_queue"
else:
  action = "approve"

See Birdai running on your own transaction data

We set up alongside your existing stack in a 30-day pilot. No displacement, no long procurement cycle.