pick6
Terminal war room for fantasy drafts. Live-syncs Sleeper (and FPL Draft), tracks
tiers, and tells you when the RB run means the value's gone.

A scripted room drafts, the cliff banner fires, the ranking re-sorts under it; a stops the
clock, / finds a player, and tab drops to every number the engine holds. Recorded from the
real thing — docs/demo.tape, vhs docs/demo.tape to regenerate.
what it does
- Survival odds on every player — the chance he's still there at your next pick, by
simulating the picks between you and your turn 500 times against your opponents' actual
rosters: their open slots, your room's measured appetites, and the measured share of real
picks that go to players no board ranks. (
-survival=adp falls back to the pure
price-curve model.)
- Tiers that alarm — amber when a tier is probably gone before you act, red when the man on
screen is the last of it. Tiers come from your rankings file; where it runs out, they're
derived from the value curve.
- Run detection that isn't noise — four RBs in six picks only fires when it beats what the
market itself expected for those picks.
- Your room, not the market — feeds it your league's past drafts and it reprices survival
against how those people actually draft.
- A verdict, not a spreadsheet — on the clock it names a man and the two or three facts that
justify him, in picks and odds rather than abstract points.
- Two sports, one engine —
-sport fpl points the whole thing at a Fantasy Premier League
draft (beta). The engine never asks which game it is scoring; it reads your lineup and
derives the rest.
install
Download a release (no toolchain needed) — grab the tarball for your platform from the
releases page, then:
tar -xzf pick6_*.tar.gz
xattr -d com.apple.quarantine pick6 # macOS only: clears the "unverified developer" block
mv pick6 ~/bin/ # or anywhere on your PATH
pick6 version
checksums.txt on the release page carries the sha256 of every tarball.
Or with Go:
go install github.com/trisslazaj/pick6/cmd/pick6@latest
That installs to go env GOPATH/bin, which is often not on PATH — GOBIN=$HOME/bin go install ...
puts it somewhere that is. Working on the code? go run ./cmd/pick6 <cmd> always runs current source.
quickstart
pick6 fetch # 1. pull data (players, adp, values, tiers)
pick6 live <draft_id> -user yourname # 2. sync your live sleeper draft
That's the whole thing. Your draft id is in the url: open the draft room in a browser and
it reads sleeper.com/draft/nfl/<draft_id>. -user finds your seat from the draft order;
-slot 4 sets it directly if the draft hasn't been seeded yet.
No Sleeper league? pick6 board runs the same war room with you typing the picks.
commands
pick6 fetch — pull the data
Downloads the Sleeper player pool, half-PPR ADP, and player values; joins everything onto
Sleeper ids; applies your rankings; caches it all. Run it once before drafting and again on
draft morning — inside 12 hours it's served from disk.
pick6 fetch # defaults: 12-team half-ppr
pick6 fetch -format ppr # other scoring
pick6 fetch -rankings my-tiers.csv # your tiers and points win (see below)
pick6 live <draft_id> — the main event
Polls the draft every few seconds and updates the board in place. Every pick is cross-checked
against the snake math; traded picks land on the right roster; a dropped poll self-heals on the
next one. Reads your league's real lineup (two flex? superflex?) from Sleeper.
On the clock the board leads with a verdict — the man, his price, his odds, the tier he's
the last of — then the field ranked by what the pick is worth.
pick6 board — no feed, same brain
For in-person drafts, or any platform without an API. / finds a player, x marks him gone,
u takes it back. Everything downstream is identical — the engine never asks where a pick
came from.
pick6 board -slot 7 -teams 10 -lineup "qb rb rb wr wr te flex flex k def" -bench 6
pick6 * -sport fpl — the same war room for an FPL draft (beta)
Fantasy Premier League Draft is a snake draft over a hard-quota squad, so it runs on the same
engine with nothing turned off but the machinery that only means something in football.
Beta, and the board says so on every frame. Everything structural is tested — 105 real picks
replay across all seven seats of a completed draft with zero desyncs — but the calibration
isn't there yet. NFL survival has a referee (pick6 calibrate) and NFL decisions have another
(pick6 regret); FPL has neither. Measured against eight completed public drafts, the room model
draws too few keepers and defenders and too many midfielders, so a green safe tag on a defender
is right about 60% of the time against 81–85% everywhere else. Read it as a very good tier sheet
with live odds, and trust the odds a little less on GKP and DEF.
pick6 fetch -sport fpl # 1. the pool, from bootstrap-static
pick6 live -sport fpl <league_id> -slot 3 # 2. sync the draft
The id is your LEAGUE id, the one in draft.premierleague.com/…/league/<id>. FPL publishes
the draft order nowhere until round one happens, so pass -slot N when you see your seat —
-user "your name" works too, from the moment you have made a pick.
Positions are gkp/def/mid/fwd, the squad is 2/5/5/3 with no bench and no flex, and the price is
FPL's own draft_rank. A position you have filled to its quota reads def full rather than
"bench depth", because there is no bench and the app will not let you draft him. No auth,
nothing to expire mid-round.
pick6 board -sport fpl and pick6 tiers -sport fpl work the same way. Notes and rankings csvs
live in ~/.config/pick6/notes/fpl/ and ~/.config/pick6/rankings/fpl/, so a football seat file
never turns up on a football board.
pick6 mock — watch it think
Replays a scripted draft against the real UI with real players — only the pick sequence is
synthetic. -seed N replays the same draft every time; space steps, a autoplays.
Off the clock each ranked row is the position's depth — its best three by value, each with
his odds of still being there when you pick — and under the ranking the pane fills with the
board behind it: what the room is about to do (expect 10 wr · 7 rb · 4 qb, and the men
likeliest gone before you pick — the simulation's rollouts read as picks instead of
percentages), and every position's tiers as a row of dots with the taken ones filled in.
pick6 tiers — the tier board, printed
pick6 tiers -pos wr -depth 15
The paper cheat sheet, but the tool crosses names off by itself: every man at the position,
grouped by tier, straight from the cache — no live draft, no -slot, nothing but -pos and
-depth to slice it.
the data tab
tab flips any board to the numbers, in views you switch with ←/→: value is every
available player and every number the engine holds — value, tier, adp, spread, survival,
format gap — with your rankings file's opinions riding the names; adp is the same table by
price; tiers is the ladder, every man at every position grouped by tier, the taken struck
through; and every rankings csv in ~/.config/pick6/rankings/ (or -rankings <dir>) is a
view of its own, shown exactly as the file ranks them — its order, its tiers, its opinions —
with nothing added but each man's odds of reaching your pick and a strike once he is gone. The
file you gave fetch -rankings is always there. A name the board does not know gets a ?,
not dropped.
Late in the draft, kickers and defenses light up exactly when they should and not a round
before:
the notes tab
tab again is your own notes, next to the board, so draft night is two screens (this and
sleeper) and not three. It is a folder of markdown files — ~/.config/pick6/notes/, or
-notes <dir> — rendered with player names in their position colours and struck through
as they get taken, beside a map of the draft so far. global.md sits on top of everything;
slot-N.md opens itself when you draw seat N; anything else you flip between with ←/→.
e opens the current file in $EDITOR. Nothing on it feeds the engine — the notes are your
side of the argument, and the board is the other.
An example folder lives in docs/notes-example.
for the curious
pick6 scout profiles each manager's tendencies from your league's cached drafts; pick6 calibrate backtests both survival models against real completed drafts and grades every model
choice — the simulation ships because it won that backtest on every draft that could test it
fairly. pick6 regret does the same job for decisions, which a survival backtest cannot
grade: it replays your own completed drafts with your seat played by each policy in turn —
what you really did, best-available, the formula, each of the two scorers — and prints the
team each one walked out with. None of the three is needed to draft.
keys
| key |
does |
/ |
search players — taken ones stay in the results with the pick that took them |
x / u |
mark taken / undo (board mode) |
tab |
cycle board → data table → notes |
j k / p / ← → |
scroll / position filter / switch view (data tab) |
← → / e |
switch file / open it in $EDITOR (notes tab) |
space / a |
step / autoplay (mock mode) |
q |
quit |
bring your own rankings
A CSV turns the board into your board — its tiers drive the cliff alarms, its opinions ride
the names. Column order doesn't matter, unknown columns are ignored, FantasyPros exports load
as-is:
name,position,team,tier,points,sentiment
Jahmyr Gibbs,RB,,1,,target
De'Von Achane,RB,,4,,avoid
Philadelphia Eagles,DEF,PHI,,,target
tier — your tier lines, kept exactly; oversized tiers are subdivided, never merged.
points — projected points; overrides the fetched values.
sentiment — target / pass / avoid. Display-only: an avoid badge rides the player's
name, and a verdict crowning a man you flagged says so. Rows with only a name, position and
sentiment are valid — that's how kicker and defense calls work.
the math
Everything on screen is a probability with a paper trail — an opponent-aware Monte Carlo
(rosters, room appetites, and a measured escape rate for picks that leave the ranked board),
survival curves per player, an exactly-N correction, expected-best-later urgency,
probabilistic tier holds — and every constant was chosen by backtesting against real completed
drafts. The whole derivation, the calibration methodology, and the ideas that measured worse
and were removed (including the leak that briefly flattered the simulation) live in
the engine paper (also attached to every
release).
data sources
license
MIT — see LICENSE.