Methodology

Our covenant: every number is sourced, stamped, and format-labeled, and every tool’s math is documented. If we can’t explain it plainly, we don’t ship it.

Commit–reveal draft order

On setup, the browser draws a random seed via crypto.getRandomValues. We compute commitment = SHA-256(seed) and show it before the reveal so it can be shared and “locked.” The draft order is derived by seeding a 32-bit PRNG (cyrb128 → sfc32) from a stable string built out of the seed, the exact team list, the mode, and (for lotteries) the weights, then running a Fisher–Yates shuffle. Because it uses only integer math, every browser produces the identical order. Verification recomputes SHA-256(seed) against the commitment and re-derives the order against the published one. Honest limit: commit–reveal proves the order was fixed before the reveal and produced by this algorithm from this seed; it can’t prove the commissioner didn’t pre-generate seeds, which is why we use a CSPRNG and commit immediately.

Weighted lottery odds

The draw picks a team first with probability equal to its weight ÷ total weight, removes it, and repeats. We compute the exact probability of every team landing every slot via a subset dynamic-program (not a simulation) and display it before the draw. A Monte-Carlo check confirms the seeded draw matches the exact table.

ADP

Average Draft Position is the mean draft slot across real drafts, sourced from Fantasy Football Calculator’s public mock-draft API. It’s market data, not a ranking. Scoring format and league size are first-class labels on every series; we refuse to average across formats. Deltas across formats are shown side-by-side and framed in plain English.

Market tiers

We sort by ADP and start a new tier wherever the gap to the next player exceeds a set multiple (default 2.5×) of the median gap. It’s deterministic — same input, same tiers — and it describes where the crowd’s behavior clusters. We call them market tiers to be clear they’re not our opinion.

Snake & auction math

Snake pick numbers are pure arithmetic: odd rounds run forward, even rounds reverse; third-round reversal repeats round 2’s order into round 3, then resumes. The auction splitter distributes your cap across roster slots by a preset weight table, guaranteeing $1 minimums and an exact total. No projections anywhere — just arithmetic.

Weather flags

We pull Open-Meteo forecasts at each outdoor game’s kickoff (matched on the UTC instant), flag wind ≥ 15 mph (alert at 20+), meaningful precipitation, and temperature extremes, and mark domes no-impact. We render only within the ~7-day reliable window, label lead-time confidence, and stamp the fetch time. We describe conditions and general effects — never start/sit advice.

Freshness & fallback

Every dataset carries an “as of {date}” stamp. Feeds load edge-cache → direct → last-good copy, so you always see something with its provenance, never a blank. Stale data renders with a visible staleness note.