Foreline/Products/Player Radar
Product 2 · Player RadarJudge accounts by price, not by outcomes
Every bet an account places is compared with our fair closing price of exactly the line it took. An account that systematically beats that close is sharp — whether or not it happens to be up on you yet. That is why a first call takes 10–20 bets instead of thousands.
CLV against a close you can audit
Closing-line value is the standard measure of sharpness. What it usually lacks is a close worth measuring against: one that exists for the exact line the customer took, is de-vigged, and cannot be revised after the fact.
POST /v1/score, with the components
exposed so your risk team can see why an account was flagged, not just that it was.False positives, measured on a real null
A detector that flags aggressively is easy to build and expensive to run — every false positive is an ordinary customer you limited for nothing. So we set a budget first and measured against it on flow where there was nothing to find.
- Family-wise, not per-test. Scoring a book means running the same test across thousands of accounts, so a per-test error rate flatters itself. The 1.32% is controlled across the whole family of tests — the rate at which the system raises any false flag, not the rate per account examined.
- On a real null, not a simulation. The rate was measured on real flow where no professional was present, so it reflects the messiness of actual customer behaviour rather than a well-behaved generator.
- A budget set before the measurement. 2% was the design constraint; 1.32% is what came out. Publishing both is the point — a rate with no stated budget is a number chosen after seeing the answer.
Scored on the lines your customers actually took
Your book does not only offer the lines the reference market quotes — and neither do sharp customers only bet them.
- Arbitrary customer lines. A bet on a rung the reference never quoted is repriced from the ladder tables and scored like any other, instead of being skipped for lack of a benchmark.
- Every bet carries a band. The uncertainty on the reprice travels with the score, so a call built on thinly-supported rungs is visibly weaker than one built on quoted ones.
- The close cannot be revised. Our closing prices are committed in the ledger as they are produced, so a score cannot be improved after the outcome is known — the same guarantee applies to us as to you.
- Same engine, offline: the retro-audit runs this scoring walk-forward over 6–12 months of your history and returns two figures in your money.
One call, live
Post an account with its bets, get a score back. The endpoint is in the point rate class — 60 calls a minute per key.
curl -s "https://api.foreline.io/v1/score" \
-H "X-Foreline-Key: $FORELINE_KEY" \
-H "Content-Type: application/json" \
-d '{
"account_id": "acct_7d41c9",
"bets": [
{ "event_id": "EVT_8F3A21", "market": "handicap", "line": -0.75,
"side": "home", "price": 1.94, "stake": 120,
"placed_ts": "2026-07-24T15:02:11Z" }
]
}'
Request and response fields are documented in the API reference. Values here are illustrative.
The other three products
Fair-Price Surface
The whole ladder, de-vigged and banded — the close every score is measured against.
See the product →Line Radar
Main-line changes as a fact-stream, plus warnings when your price drifts from fair.
See the product →Parlay Protection
A coherent score matrix, so joint outcomes are priced consistently with the marginals.
See the product →Request a trial of Player Radar
Tell us roughly how much flow you take and in which markets. We reply with a trial key, or with the retro-audit route if you would rather see it on your own history first.
We usually reply within one business day. Pricing is quoted per scope — ask and we will send terms.
Foreline