$ cat projects/runout.md
Runout
web appby Jacob Relkin
The edge for serious pool players: AI scouting reports on any FargoRate-rated opponent, head-to-head odds verified against FargoRate to five decimal places, and live brackets that update mid-event, all in one daily app. In private release.
Designed and shipped end to end: five live product surfaces (player intel, edge calculations, tournament data, a personal match journal and broadcast-quality share cards) in a production TypeScript monorepo on Vercel. The Next.js 16 app and a versioned site-generator package run on one shared analytics engine that models race odds, event EV and full standings reconstruction.
See it live on its first player site, 75 tournaments deep: amateurcueist.me
$ architecture
- data
- Its own private results store: every FargoRate-rated player’s entries and matches, deduplicated, with personal fields stripped before anything is saved.
- ai
- On-demand Claude scouting reports on any opponent, bring-your-own-key, cached until their rating moves.
- proof
- Accuracy you can audit: odds match FargoRate to five decimal places, a golden fixture pins the engine to the published player page’s own answers, and 17 real events replay on every run.
- tests
- Roughly 2,000 automated tests across Vitest, node:test and Puppeteer, on self-hosted Apple Silicon CI.
$ stack
- TypeScript
- Next.js
- Vercel
- Claude API
- Vitest
- Puppeteer