# MockGrader — methodology

_Last updated: 2026-04-06 (document version; scoring code may ship between dated revisions)._

## What we compare

We compare each analyst’s **published final mock** for **NFL Draft Round 1** (32 picks, or the length captured in our actual board for that year) to the **actual pick order** we record for that draft. The site is descriptive editorial work: we document published predictions vs outcomes. MockGrader is not affiliated with the NFL, teams, or media outlets.

## Final mock window

“Final mock” means the outlet’s last published full first-round projection **before the draft begins**, as labeled in our dataset for that analyst and year. If an outlet posts multiple late updates, we snapshot the version we tag as final in data. Methodology may differ slightly by era as sources change; each year’s page is authoritative for that season.

## Trust index (single year)

For each pick slot index _i_ (0 through _n_−1 on that year’s board), we compare the mocked pick to the actual pick at that slot on our actual board.

Match types (simplified):

- **Exact hit** — correct player and team at the slot (trades use the real pick order in our actual board).
- **Player hit** — correct player, wrong team/slot (common after trades).
- **Position + team hit** — correct team and position group, wrong player.
- **Proximity** — mocked player appears on the actual board within three **board index** slots of this pick (by index in the actual array, not string matching on objects).

Weights (before normalization across _n_ picks on that year’s actual board): exact × 3.0, player × 1.5, position+team × 1.0, proximity × 0.5. A small per-analyst **chaos adjustment** may apply when we document systematic risk-taking in the mock. We sum those weighted credits across slots, divide by _n_, then multiply by **100 ÷ 3** so a board of all exact hits (max 3.0 credit per slot) maps to **100** — a true 0–100 **trust** score. **Trust and exact-hit counts are the primary read** for accuracy vs the actual board.

**S–D tiers** (leaderboard / compare) use **fixed trust cutoffs** on that 0–100 score: `DEFAULT_SEASON_TIER_THRESHOLDS` in `src/lib/scoring.ts` defines inclusive minimum trust for S, A, B, and C (below C is D). **S** is intentionally rare. Optional column sorts on the leaderboard re-order rows only; each row’s tier still reflects that season’s trust value.

## Writers page (career tier)

The **established** table (writers with ≥2 published years) shows a **career tier** from **mean trust** using **stricter** cutoffs: `DEFAULT_CAREER_TIER_THRESHOLDS` in the same file. The **single-year** section uses **season** thresholds on that row’s mean trust (one year), matching the year’s leaderboard logic.

When mean trust ties, sort by more seasons in the dataset, then higher latest-year trust, then stable `writerId`.

## Edge cases (high level)

Heavy trade years, QBs who slide, and surprise positional reaches affect exact counts; softer match types exist so the exercise stays informative. If a player is mocked in Round 1 but is not selected in Round 1 in reality, that projection is scored as a miss for Round 1 scoring purposes.

## Multi-year “most trusted” aggregate

Analysts use a stable `writerId` so job changes do not split the same person across rows. The aggregate page uses **mean trust across years present** (with median shown for transparency). Writers need **at least two published years** in our manifest to appear in the primary aggregate table; others appear in a separate single-year section until more history exists. See **Writers page (career tier)** above for how tiers are assigned on that page.

## Limitations

- **Round 1 only** unless a future season explicitly documents a different scope in data.
- **Final mock** definition varies by outlet; we rely on what we label as final in the dataset.
- **Trust, exact counts, and S–D threshold tiers** are MockGrader metrics only (not official league or outlet grades).
- **Historical corpus grows over time**; the archive and aggregates are incomplete until prior years are researched and published.

## Citation

When citing MockGrader, link the specific year or page URL (e.g. rankings for that season) and this methodology page or `/methodology.md`.

## Implementation note

Scoring logic is implemented in TypeScript (`src/lib/scoring.ts`) with automated tests; methodology changes should stay aligned with that code and this document.
