Call It: an AI runs my Twitch predictions while I play, and 10 of 12 payouts matched chess.com's record
Twitch Predictions are locked behind Affiliate, and someone still has to open every bet and call the result by hand. Call It watches the game through OBS and does it: it opens the bet, locks it, pays out and clips the moment, on any channel. On a chess stream it had never seen, 10 of 12 payouts matched chess.com's record and it refunded 8 bets rather than guess.

Mid-pull, chat can only watch
I used to stream WoW on a small channel. Mid-pull, both hands on the keyboard, my chat could only watch. Twitch has a betting game for exactly that moment, Predictions, but it is locked behind Affiliate, and even with it someone has to start every bet and call the result by hand. Call It does that job. It watches the game through OBS and runs prediction bets in chat: it opens them when a fight is about to start, locks them near the end, settles them when the result is on screen, and posts a clip and a stream marker. Any channel can run it, with no Affiliate, no mods and no server to host.

What happened on stream
On my own game, Orvandel, an MMO I built, live on Twitch: a boss title card appears and Call It opens "Will The Bellows be defeated?" in chat. A viewer bets !1 300 (my main account, playing the viewer). The overlay card fills as points come in, and near the end of the fight it locks. When the kill banner shows, a fast model proposes the result and a second, stronger model checks the frames before anyone is paid. The payout lands in chat with a clip link, and a marker goes into the VOD. The agent makes all three Twitch calls itself.


How it decides
Every 4 seconds gpt-5.4-mini sees the last three OBS frames, the bet state and the recent decisions, and must call exactly one tool: wait, open_bet, lock_bet, resolve_bet or cancel_bet. Code never picks the action; it only enforces limits: one bet at a time, a gap between bets, question and outcome length, a timeout refund, and spend caps. A proposed payout goes to a second look on gpt-6.1-sol, which sees the proposal frames and the newer frames and settles on the outcome the frames prove, or rejects it. Every decision, with the frames it saw, is in the decision log.

When it can't see the result, it refunds
It once opened a bet while I was talking to a quest-giver, saw no fight, and gave everyone their points back. A refund is the agent's answer whenever the frames do not prove an outcome, and the broadcaster or a moderator can force one at any time with !callit cancel.

Measured against something I do not control
My own game cannot grade a bet, because I wrote it. So I replayed real chess streams through the same loop and graded every game-result payout against chess.com's public game records, with a script that has no model in it. On a 2.4-hour stream Call It had never seen, 10 of 12 payouts matched the record and it refunded 8 bets instead of guessing. The second look stepped in on 11 of 18 proposed payouts (5 wrong winners corrected, 6 payouts from another game's result rejected) and was right all 11 times. Before those fixes, on the stream I tuned on, it was 4 of 10. The run files, decision logs and grades are in eval/results/, and npm run grade re-grades them with no model calls.

Built in one Codex thread
All product code was written in OpenAI Codex, in one thread, from SPEC.md and AGENTS.md: 18 prompts, 26 commits, 72 tests. Codex wrote the Twitch EventSub client, the device-code auth, the agent loop and tool schemas, the guards and spend caps, the points ledger and payout math, the second look, the clip and marker calls, the overlay, replay mode and the chess grader. Every prompt I sent is in CODEX_PROMPTS.md in the order it was sent, and the commit history shows the build step by step. I used Claude Code alongside Codex for planning, prompt review, live testing and the evaluation runs.

What is not claimed
The 10 of 12 is graded by chess.com's records, not by me or by a model, but it comes from one streamer's chess VODs, so the held-out run tests unseen games on a layout the agent had already been tuned on, and twelve payouts is a small number. The live demo on my own game has no outside grader at all, which is why the measurement is on chess. The agent reads pixels and can be wrong: the second look reduces payout mistakes but does not guarantee them away, and the streamer can refund any bet with !callit cancel. It runs bets in chat mode with its own points; native Channel Points Predictions for Affiliate channels are the next step. Clips and markers are made only while the channel is really live, and live mode defaults to a cap of 600 model calls.
Call It: an agent that watches your game through OBS and runs your Twitch chat's prediction bets, opening, locking, paying out and clipping the moment, on any channel with no Affiliate needed
View the project