2026-09-19-day-one-jev-is-the-lever.md 3.0 KB


title: "Day one: Jev is the lever"

date: 2026-09-19

Day one: Jev is the lever

Started from a concept doc that said "no gambling", ended the day with a working slot machine for group decisions. Here's what changed and what we learned.

The reframe

The concept doc treated "no money" and "no stakes" as the same constraint. They aren't. The regulatory line is value changing hands; the fun is odds, near-misses and a named winner. So chips came back, vetoes came back, and the lever pull became the ritual. Balatro structure: table (persistent group), run (a sequence of hands toward a goal), hand (one decision), round (one pass of options → chips → lever → posted decision).

Jev is not an LLM, and that's the whole point

We'd sketched "Jev" as a text-generating negotiator. Then we read what it actually is: TypeSafe's System One model. State in, calibrated probabilities out, ~350 ms, no text, no hallucination. That shape fits a live odds engine far better than a chatbot does:

  • every chip drag is a state change → Jev re-answers a fixed question set → the odds bar moves
  • the lever samples Jev's distribution, seeded, so the reveal is replayable
  • every string a player sees is human-authored; Jev picks the line by tag from a bank

What the API told us (first contact, real key)

Finding Evidence
Latency 6 questions in one call: 320–420 ms. One question: ~200 ms. Debounce at 200 ms and ease the bar.
Chips dominate 9 vs 10 → 45/43. 8 concentrated beats 10 spread across four options (93 %).
The fairness dial is prose Same chips, Sam won the last four hands. No fairness clause → pizza 99 %. "Be fair across the ledger" → pizza 18 %. "Lean toward the others" → pizza 5 %. The instruction text is the tuning surface. It's a config var now.
Classification wants features "Which format?" over raw chips picked craps every time. Pre-compute chip_agreement, live_option_count, spice into the state and name them in the criteria → 97–100 % correct.
Spice reads low Contention 0.76, spice 0.27 on the same round. Chip position alone doesn't read as heat; needs velocity, vetoes, re-placements.
Big banks are fine 40 dealer tags in 301 ms. Duplicate tags split probability, so tags must be unique.
Straight sampling punishes unanimity Both members 10-on-Thai, Jev 78 %, the sample landed Ramen at 6 %. Fix: one_tap format confirms instead of sampling.

What exists tonight

Hono + Better Auth (phone OTP, anonymous) + D1 from the better-auth-cloudflare CLI; one Durable Object per hand with WebSocket fan-out, debounced Jev odds, seeded lever with the runner-up placed last in the reel order; a one-file mobile client with a CRT reels reveal and an UPSET banner. scripts/drive.sh ran a full two-member hand end to end. The dealer line for a round where Tom's veto sent Sam's chips home: "That veto did some heavy lifting."

Next

Two phones. Does dragging a chip and watching the odds move feel like anything? Everything else waits on that.