Bot lab
Removal bot quality scoreboard
Fixed family fixture corpus used as a bot-quality benchmark: Adil, Kashmira, Kharmen, Jinai, Raihan, Meher, and Kevin across their known cities. Live runs measure opt-out page reachability, form detection, CAPTCHA escalation, and failures. Dry-runs only validate queue/worker plumbing.
Live queue
Current removal jobs, including Mark done and email confirmations. This is separate from the frozen September 11 benchmark below. Store: vercel-blob. The 41 scoreboard jobs that were labeled awaiting verification are in needs human with a note that the form was not posted (24 jobs). Email confirms only arrive after a real form POST.
Succeeded
43
Needs human
0
Awaiting verification
0
Queue total
184
September 11 benchmark
Frozen snapshot bench_20260919212500. Succeeded 0, needs human 167, awaiting verification 5, failures 0. These figures are not rewritten when the live queue moves.
Quality score
66
live · 15 locations · 172 jobs
Page reachability
93.0%
Form detection
70.6%
Human escalation
97.1%
Verification pending
2.9%
Automation (succeeded)
2.9%
Failure rate
0.0%
CAPTCHA block
66.3%
By person
Frozen September 11 fixture outcomes. These numbers are the historical snapshot, not the live queue.
| Person | Locations | Jobs | Succeeded | Needs human | Awaiting | Failed |
|---|---|---|---|---|---|---|
| Adil E Bharucha | Rochester, MN · Minneapolis, MN | 22 | 0 | 21 | 1 | 0 |
| Jinai A Bharucha | Minneapolis, MN | 11 | 0 | 11 | 0 | 0 |
| Kashmira A Bharucha | Rochester, MN · Minneapolis, MN | 24 | 0 | 23 | 1 | 0 |
| Kevin C Matthews | Greenlawn, NY · San Francisco, CA · Reno, NV | 29 | 0 | 29 | 0 | 0 |
| Kharmen A Bharucha | Madison, WI · Rochester, MN · Minneapolis, MN | 40 | 0 | 39 | 1 | 0 |
| Meher A Bharucha | Rochester, MN · San Francisco, CA | 20 | 0 | 19 | 1 | 0 |
| Raihan Irani | Seattle, WA · Minneapolis, MN | 26 | 0 | 25 | 1 | 0 |
Broker friction ranking
Where bots stall — highest human escalation and CAPTCHA first. Use this list to prioritize adapter work.
| Broker | Jobs | Reachable | Forms | CAPTCHA | Needs human | Failed |
|---|---|---|---|---|---|---|
| ThatsThem | 9 | 9 | 0 | 9 | 9 | 0 |
| Addresses.com | 8 | 8 | 8 | 8 | 8 | 0 |
| Intelius | 8 | 8 | 8 | 8 | 8 | 0 |
| FamilyTreeNow | 7 | 7 | 7 | 7 | 7 | 0 |
| Instant Checkmate | 7 | 7 | 7 | 7 | 7 | 0 |
| PublicRecordsNow | 7 | 7 | 7 | 7 | 7 | 0 |
| Spokeo | 7 | 7 | 7 | 7 | 7 | 0 |
| TruePeopleSearch | 7 | 7 | 7 | 7 | 7 | 0 |
| FastPeopleSearch | 6 | 6 | 0 | 6 | 6 | 0 |
| LeadsPlease | 6 | 6 | 6 | 6 | 6 | 0 |
| YellowPages | 6 | 6 | 0 | 6 | 6 | 0 |
| BeenVerified | 5 | 5 | 5 | 5 | 5 | 0 |
| Apollo.io | 8 | 8 | 8 | 0 | 8 | 0 |
| RocketReach | 8 | 8 | 0 | 0 | 8 | 0 |
| PeopleFinders | 4 | 4 | 4 | 4 | 4 | 0 |
| SmartBackgroundChecks | 4 | 4 | 4 | 4 | 4 | 0 |
| Whitepages | 4 | 4 | 4 | 4 | 4 | 0 |
| ZabaSearch | 4 | 4 | 4 | 4 | 4 | 0 |
| ClustrMaps | 7 | 0 | 0 | 0 | 7 | 0 |
| ZoomInfo | 7 | 7 | 0 | 0 | 7 | 0 |
Progress over time
Each benchmark run is snapshotted so adapter improvements show up as score deltas.
| When | Mode | Quality | Reachable | Forms | Human % | Fail % | Jobs |
|---|---|---|---|---|---|---|---|
| 9/19/2026, 9:25:00 PM | live | 66 | 93.0% | 70.6% | 97.1% | 0.0% | 172 |
Re-run locally with npm run bot:benchmark -- --mode=live --fresh. The historical JSON stays the September 11 snapshot. Live succeeded / needs human / awaiting counts move when a review is marked done or a confirmation link is opened. On Vercel the queue is stored in a private Blob when BLOB_READ_WRITE_TOKEN is set; otherwise the benchmark seed plus the visitor status cookie is used.