Overview
GOAT Lab turns basketball's greatest-player debate into an inspectable data product. Visitors can explore historical profiles, compare players, and examine the assumptions and uncertainty behind a probabilistic ranking.
The aim is to make the evidence easier to interrogate, rather than present one ordered list as an objective verdict.
Problem
Era comparisons combine unequal statistical coverage, changing playing conditions, and competing definitions of greatness. A missing historical statistic is not a zero, and a precise-looking rank can imply more certainty than the evidence supports.
What I Built
- A reproducible Bronze, Silver, and Gold pipeline separating source-faithful records, canonical basketball facts, and versioned analytical inputs.
- A frozen player corpus covering 1946–47 through 2025–26, with provenance and unavailable evidence preserved.
- Seven analytical dimensions and a probabilistic release with rank distributions, Top-N probabilities, and paired player comparisons.
- A read-only FastAPI/PostgreSQL serving layer for immutable releases.
- A Next.js frontend with a Top-100 view, full leaderboard, searchable profiles, comparisons, and methodology disclosures.
Results
The release generated on September 19, 2026 contains 5,103 player profiles, of which 1,882 are distribution-rankable. The remaining 3,221 retain an explicit unavailable status instead of receiving invented scores.
The interface displays backend-supplied probabilities and shared-scale comparison graphics. Display order supports navigation; neither that position nor an interval's center is a validated exact greatness rating.
Evaluation and Known Limits
A calibration study documented on October 30, 2026 evaluated five candidate families across six evidence patterns and 1,197 players per pattern. Every family failed at least one required coverage or integrity gate. No candidate was selected, and the frozen ranking release was unchanged.
This is a substantive negative finding: published rank-band endpoints remain research summaries, not validated nominal-coverage guarantees. The study used an already-inspected cohort and is exploratory rather than blind confirmation.
Separately, a recorded local product acceptance pass covered 32 route-and-viewport cases across eight surfaces and four widths. It checked content integrity, comparison semantics, overflow, keyboard-accessible tooltips, reduced motion, and server-rendered profile content. That is historical interface evidence, not a validation of the ranking methodology or a guarantee of current provider health. A subsequent local search-race guard has unit coverage but has not repeated that browser matrix.
What I Learned
A ranking product has two responsibilities: calculate consistently and explain what its numbers are allowed to mean. Failed calibration is useful evidence when it changes the claims the product makes, rather than being hidden behind polished charts.
Next Steps
Keep the frozen release reproducible, complete browser verification of the latest search change, and define any further calibration study separately before running it. A new methodology or release requires a new research decision; the current findings do not justify automatic promotion.
