How this pipeline works

Watch-only: we listen, transcribe, log when a market word is said, and record both venues' prices and trades. Nothing places orders.

1. Get the audio as early as possible

We pull several public copies of the broadcast at once: RSBN on X's low-latency stream, RSBN on Rumble (fetching each segment the moment it exists), Rumble's normal edge, X 320p, and YouTube through Paul's PC. A race process in us-east-1 lines them up by sound and forwards whichever copy arrives first. X's low-latency stream wins ~99% of the time, about 2 s ahead of Rumble.

2. Transcribe continuously

That audio (16 kHz) goes into Moonshine Small, a streaming speech model, on an NVIDIA L4 GPU. Every 40 ms it re-reads the current ~15 s segment and outputs its best guess of the whole sentence (~7 ms per update). Because it re-reads, the last few words can change as more audio arrives ("standing away" becomes "standing in the way"). Those are the cards on the left.

3. Fire only on words that hold

A counter checks every update for market words. A word fires only after it appears in 3 updates in a row (K=3, about 80 ms), which filters out one-update flickers. Lane A watches the Polymarket words and lane B the Kalshi words. Count markets ("Job 18+ times") fire when the running count passes the threshold. Counting starts when we arm the run, once Trump is on stage.

4. Record the market

Polymarket: public websocket books and trades, recorded in us-east-1 and London (closer to Polymarket's servers). Kalshi: public REST prices and trades about every 0.5 s. Every box is clock-synced to microseconds, so afterwards we can line up spoken → our fire → first Kalshi/Polymarket reaction.

Where the time goes

  1. Speaker to the stream copy we get: broadcaster encoding + CDN (seconds; X low-latency is the fastest found).
  2. Race and decode: a few ms to forward, ~7 ms per model update, every 40 ms.
  3. K=3 persistence: +80 ms after the word first appears.
  4. Fire written: about 1 ms.

The model in this build doesn't expose word probabilities, so "confidence" here is stability: how many updates a guess has survived, which is exactly what the trigger uses.