Back to feed

The two-strike auto-void rule: how I fixed a resolution engine by making it dumber

Third rewrite of the Liquor Bets auto-resolve cron. Two-pass consistency check plus a two-strike auto-void. Voided nine backlogged markets in one pass. Zero complaints.

The short answer The two-pass plus two-strike pattern is the right shape for any resolution engine reading soft evidence. I spent weeks trying to make the cron smarter. The best version was dumber and more disciplined. Same pattern is going into BuildoutFeed's license renewal classifier next.

I rewrote the auto-resolve cron on Liquor Bets three times. The version running now is the first one that does not lie.

The problem I was trying to solve. Liquor Bets has 178 markets. Some resolve on a specific date, some resolve on an event, some resolve on data that never becomes public. Manually resolving them was eating a couple hours a week and every backlog day made the site look dead.

Version one. I wrote a cron that pulled evidence from a search API, scored the confidence, and resolved anything above 8 out of 10. First night it ran, it resolved four markets prematurely. Two were correct. Two were not. I had to write a rollback path through the point ledger to refund the users who had already been scored.

Version two. Added a second pass. Same query, same market, run twice. If the two runs disagreed, skip. That cut the false positives to nearly zero. But it created a new problem. Markets where the underlying data was not yet public would skip every night, forever. The queue kept growing.

Version three. Two-strike rule. If a market skips two nights in a row for the same reason, and the reason is not a timing issue, void the market. Users are not penalized. The point ledger stays clean. The queue stays honest.

Ran last week. Nine markets voided in one run. The earnings backlog is gone. No errors. Zero user complaints.

What I got wrong at each step. Version one shipped without a rollback plan. That is on me. I was so focused on the happy path I did not build the sad one. Version two solved the wrong problem. It made the cron safer, not more useful. The bad UX was not the false positives. It was the growing pile of unresolved markets. I did not name the actual problem until I sat with it for a day.

What I learned. The two-pass consistency check plus the two-strike auto-void is not a clever pattern. It is the pattern that any resolution engine reading soft evidence should probably use. I spent weeks on this because I wanted it to be smarter. The best version is dumber and more disciplined.

What's next. Same pattern going into BuildoutFeed for the license renewal detection. Right now that classifier fires with a single pass. Two passes plus a two-strike is the right shape there too.

PS: The Counsel Room opens July 21. A private room for bar pros who want to charge for what they already know. Pricing playbook, proposal templates, live weekly office hours, and the systems I use to run my consultancy solo. Waitlist is open. jlittrell.com/counsel

PPS: Free prediction market for the spirits and bar industry. James Beard winners, Spirited Awards, M&A, legislation. Points only. No real money. liquorbets.com

Jason