METHODOLOGY
// Scoring rules · limitations · multi-year aggregates
Summary for citation
- Scope: Round 1 only, each analyst’s labeled final mock vs our recorded actual board for that draft.
- Metric: Trust score (0–100 style) from weighted exact / player / position / proximity hits, normalized across that year’s Round 1 pick count on our actual board (usually 32; 31 if a pick is forfeited), plus optional chaos adjustment. Primary read: trust and exact hits vs the actual board. S–D tiers use fixed trust thresholds per season; the writers page uses stricter thresholds on mean trust for established multi-year rows — not an official NFL or outlet grade.
- Multi-year: Stable
writerId; aggregate table uses mean trust and requires ≥2 published years. - Corpus: Historical years publish over time; check archive and /llms.txt.
What we compare
We take each analyst’s published final mock for Round 1 and compare it, pick by pick, to what actually happened on the clock. The public site is descriptive: we document predictions and outcomes; we are not affiliated with the NFL, teams, or media outlets.
Final mock window
Final mock means the last full Round 1 projection an outlet publishes before the draft begins, as we label it in data for that analyst and year. Late updates from the same outlet supersede earlier versions only when we replace the snapshot in the dataset. Outlet practices differ; when in doubt, treat the year’s rankings page as the live reflection of which file we scored.
Trust index (single year)
For each index i on the actual board (0 through n−1), we compare the mock pick to the actual pick at that slot.
- Exact hit — correct player and team at the slot (trades that swap who is “on the clock” still use the real pick order as published in our actual board).
- Player hit — right player, wrong team (common when trades move players between slots).
- Position + team hit — right team and position, wrong player.
- Proximity — mocked player appears on the actual board within three slots of this pick (by board index, not string matching on objects).
We convert counts into a true 0–100 trust score with weights: exact × 3.0, player × 1.5, position+team × 1.0, proximity × 0.5, plus a small per-analyst chaos adjustment when we document systematic risk-taking in the mock. Weighted credits are averaged across n picks, then scaled by 100 ÷ 3 (because a slot’s best outcome is worth 3.0), so a perfect all-exact mock scores 100. Trust and exact hits are the primary read for how close a mock was to what actually happened.
S–D letter tiers on the leaderboard and compare sheet come
from fixed trust cutoffs (defaults in DEFAULT_SEASON_TIER_THRESHOLDS
): inclusive minimums for S, A, B, and C on the 0–100 trust score; anything
below the C cutoff is D. S is intentionally rare. Optional
leaderboard column sorts re-order rows only; each row’s tier still reflects
that analyst’s trust number for the season.
Edge cases we call out in copy
Heavy trade years, quarterbacks who slide unexpectedly, and “team-specific shock picks” (e.g. interior OL early) can swing exact hits without invalidating the exercise — they are exactly why we track both exact and softer match types. When a player is mocked in Round 1 but does not hear his name called that night, that slot is scored as a miss for analysts who projected him in Round 1.
Multi-year “most trusted” page
Each analyst carries a stable writerId in our
data so job changes do not split the same person across rows. For the aggregate
leaderboard we compute per-year trust, then roll up with mean trust across years present (median is shown for transparency). Writers need at least two published years to appear in the primary aggregate table; single-year rows are listed separately
until more history ships.
Career tier on the main writers table uses DEFAULT_CAREER_TIER_THRESHOLDS
— the same S/A/B/C/D idea as the season, but with higher
minimum trust values on mean trust so sustained excellence
is harder to earn than a one-year spike. The single-year section uses the
season thresholds on that row’s mean (one year), so it matches
how they’d read on that year’s leaderboard.
Table ordering when mean trust ties: higher number of seasons in the dataset, then higher latest-year trust, then
stable
writerId string.
Limitations
- Round 1 only unless a future season explicitly documents a different scope.
- Final mock definition may vary by outlet; we snapshot what we label as final in data.
- Scores are our rubric, not a claim of universal truth or official league grading.
Scoring lives in plain TypeScript with tests so methodology tweaks do not silently reshuffle ranks.
Each year is its own route tree so archives stay linkable for fans, search, and citation.
When we only have one season live, we say so loudly on aggregate pages instead of faking longitudinal depth.
MockGrader is independent analysis. Names and teams are used factually to discuss published predictions and outcomes. Trust, exact counts, and S–D threshold tiers are MockGrader metrics only (not league or outlet grades).