On-chain reconciliation for prediction-market bots

Your bot's logs lie.
FillProof doesn't.

FillProof reconciles what your bot claims against what the chain settled — fills, fees, resolutions, PnL. Every number is an on-chain fact or explicitly marked unknown. Nothing in between.

See a drift report

Read-only. No signing keys, no custody, no order routing. Just truth.

Exhibit Aone wallet · three answers
The bot's dashboardexpected profit, 6,904 signals
+$22,159.14Fiction
Its own shadow resolversame bot, different subsystem
88.3% winsFiction
The chain, 23 fills settledfees included, nothing estimated
−$76.34Fact
Two subsystems of the same bot disagreed with each other — and both disagreed with the chain. Verify it yourself: 0xb4eaaa… $5.285148 · 0xe71571… $5.570289 · 0x5dd3a6… $5.431999
2.51%
of traded volume paid in fees — invisible in every dashboard
$0.00
what the public API reported those fees as. 0 of 23 rows.
6,904 → 6
claimed signals vs fills that ever touched the chain

The fee you can't see

Polymarket's public trades API exposes no fee field — at all. Any tool built on it that shows a fee column is showing a fabricated zero. Your net PnL is overstated by every fee you've ever paid, and nothing on screen tells you.

What the API told us

$0.00
fees, across a wallet's complete trade history

What the chain recorded

$9.82
2.51% of $390.80 traded — enough to invert a strategy's profitability

Recovered three independent ways — and they must agree

The OrderFilled event's own fee field, on the wallet's row
The dedicated fee event, keyed to the fee-collector address
Settled pUSD transfer − price × size — the gap is the fee

FillProof computes all three on every fill. If they ever disagree, it flags the fill and keeps the fee unknown — a disagreement means the model of the contract is wrong, and you want to know, not average over it. On every fill audited so far: agreement to the micro-dollar.

The rule the whole product is built on

Absent means unknown.
Never zero.

A missing measurement is never presented as a measured value. It's enforced in the schema, the engine, and every response: an unknown fee is null, an unmarked position is unknown, and net PnL stays unknown until every component is a fact. We'd rather show you a blank than a number we can't stand behind.

Five ways your log lies. One report that catches all of them.

POST what your bot thinks it did. FillProof returns the diff against venue truth — and tells you how each match was made, because match confidence is disclosed, not implied.

okprice_slippartialunfilledphantom
Your claimVenue recordDrift
buy 25 @ 0.47
BTC-up-1455
buy 25 @ 0.49
slipped 2¢ · cost $0.50
price slip
sell 40 @ 0.55
ETH-up-1500
sell 40 @ 0.55
exact
ok
buy 50 @ 0.31
SOL-up-1505
no venue record
unfilled
buy 100 @ 0.40
XRP-up-1510
buy 62 @ 0.40
38 shares short
partial
18 matched by order id (certain) 5 matched heuristically (probable) method disclosed on every row
"If you've never reconciled against venue records, you don't know your PnL — you know your bot's opinion of it."
A profitable backtest, a profitable log, and a profitable bot are three different things. Only one of them pays.

Sixty seconds to find out if your bot has been lying to you.

Paste your wallet. Get a drift report on your last 50 fills — real fees, real drift, real net. Free, read-only, no email gate.

We report the gap. We never execute it. No signing keys — ever.

Design-partner beta · limited seats
$49/mo
Beta pricing — locked for early partners
  • Continuous reconciliation on your wallets
  • Drift API — POST claims, get the diff
  • Fees verified on-chain, three ways, every fill
  • Honest PnL: facts, settlements, and nulls — never blended
  • Direct Telegram support
Demo data shown. Your wallet's numbers appear here after the first backfill completes (~2 minutes).
Net PnL
−$76.34
23 fills · 18 markets · complete, nothing estimated
Fees paid
$9.82
venue API reported $0.00
Fee verification
23 / 23
triple cross-validated · 0 mismatches
Where the result came from
Closed by trade fact−$3.47
Closed by on-chain resolution fact−$63.05
Open positions, marked estimatenone open
Fees−$9.82
Drift — your claims vs venue truth match method disclosed per row
Your claimVenue recordDrift
buy 25 @ 0.47
BTC-up-1455
buy 25 @ 0.49
slipped 2¢
price slip
sell 40 @ 0.55
ETH-up-1500
sell 40 @ 0.55
exact
ok
buy 50 @ 0.31
SOL-up-1505
no venue record
unfilled
2 exact (certain)1 heuristic (probable)
API key
fp_••••••••••••••••••••••••••••3kq8 created today · last used 2 min ago