XOCP X's & O's & Couch Potatoes
A high-frequency, mathematically rigorous fantasy football decision engine and browser extension companion. Designed to answer the four questions that actually decide seasons: who to start, what to bid, what to change before kickoff, and who to draft.
Decommissioning Legacy Drupal: The Rebuild with Empirical Integrity
The Problem with Fantasy Advice
Standard fantasy tools assume generic PPR (Points Per Reception) and cookie-cutter settings. In reality, private leagues use nuanced custom rule configurations: custom point floors, distinct touchdown escalators, reception bonuses, interception deductions, and non-standard flex roster layouts.
A generic ranking says Josh Allen is worth 361.5 points. Under the league's true scoring rules, his value is 405.5. That 44-point discrepancy represents the difference between a championship roster and an early exit.
The Thesis: One Clause Proven, One Clause Killed
Clause 1 (Proven): Every projection is calculated through your league's own rule parameters. This is verified against Yahoo's reported actuals at a maximum delta of 0.000.
Clause 2 (Killed on Evidence): The original concept included an advanced win-probability optimization layer (floors for favorites, ceilings for underdogs). Across 4,400 simulated rosters, the two objectives disagreed 0 times out of 400. Rather than shipping speculative complexity, the feature was cut before launch on pre-registered criteria.
The Four Questions Answered Weekly
One row per roster slot showing the exact alternative and whether the point difference clears the noise floor.
Maximum FAAB valuation against the displaced player rather than arbitrary bidding consensus.
Lock decisions evaluated by game-time kickoffs (Wed/Thu/Sun) rather than arbitrary 13:00 constants.
Precomputed tiered snapshot board and Chrome Extension side panel flagging real-time Yahoo queue traps.
Production Technology Stack
Next.js 16 (App Router) & React 19
Utilizes the latest App Router paradigms with React 19 server components, Turbopack, and strict sub-tree boundaries. Ensures instantaneous static rendering for draft board pages.
Supabase, PostgreSQL & Drizzle ORM
Type-safe relational modeling using Drizzle ORM over PostgreSQL. Houses game schedules, 18-week historical points allowed, raw stat categories, and multi-tenant league settings.
High-Speed Parquet Ingestion
Direct browser and Node parsing of raw columnar datasets using hyparquet and hyparquet-compressors for rapid ingesting of millions of nflverse play-by-play rows.
Chrome Extension Side Panel
Manifest V3 companion extension docks inside Chrome side panel during live Yahoo/ESPN drafts. Intercepts draft network calls to calculate live VOR arbitrage against Yahoo's queue.
29 Automated Test Gates
Rigorous testing framework powered by Vitest. Enforces schema invariants, oracle scoring parity, luminance floor contrast ratios, and crosswalk completeness before any build can pass.
Automated tsx CLI Tooling
Stand-alone CLI pipelines (build-board, snapshot-board, sync-crosswalk, build-defense-profile) generating committed static artifacts.
How Data Moves: From Columnar Parquet to Real-Time Arbitrage
Win Probability as Field Position
Rather than an abstract percentage bar, probability is expressed as field geometry: 50% is midfield (the 50-yard line), 68% is the opponent’s 32-yard line. A lineup adjustment worth four points renders directly as a tangible 4-yard drive gain.
The End-to-End Pipeline Architecture
| Stage | Source Provider | Transformation & Invariant | Emitted Output |
|---|---|---|---|
| 01. Ingestion | nflverse, Sleeper, Yahoo API | Streams compressed Parquet files and JSON REST endpoints; stores raw stats without rounding. | Raw play-by-play & rosters |
| 02. Crosswalk | 62,201 Resolved Records | Resolves Yahoo ID, Sleeper ID, nflverse ID, and ESPN ID into one internal UUID. Name-matching is prohibited by Gate v2. | Canonical Player Registry |
| 03. Scoring Oracle | League JSON Ruleset | Multiplies every raw statistic by custom league weights. Proven against Yahoo actuals at 0.000 max delta. | Materialized Player Points |
| 04. Snapshot Board | Static Build Pipeline | Pre-computes tier dropoffs and cross-positional VOR. Emits committed JSON snapshot for zero runtime database dependency. | Committed Board Artifact |
| 05. Live Arbitrage | Chrome Extension MV3 | Side panel intercepts live draft room WebSocket/XHR packets, contrasting Yahoo's suggested pick vs true XOCP VOR. | Real-Time Steal & Cliff Alerts |
Development Process: Gate-Driven Verification
Automated Gate-Driven Invariants
29 automated gates enforced on every build: `npm run gates:static && npm run gates:data`
The Gate Philosophy: If a measurement contradicts something previously written down, the build halts. Name-only crosswalk matching fails the build. If an API drops a parameter, fallback to zero is forbidden; explicit typed null is enforced.
Draft Day Reliability
Draft rooms operate under zero tolerance for downtime. The entire draft board is precomputed into a committed snapshot artifact (snapshot.json). Even if the PostgreSQL instance paused, the draft room remains 100% interactive.
Empirical Pruning
If an experimental metric does not prove its utility, it is deleted. 52 correlation calculations that showed no predictive power were removed four days before scheduled release, preventing cognitive clutter.
Zero Fallback to Zero
Gate v6 enforces that missing data emits an explicit typed null rather than defaulting to 0. A kicker with a bye week is not a player who scored 0 points; conflating them corrupts statistical models.
Explore the interactive dashboard & draft board
See the 2026 season roster evaluations, weekly schedules, and draft intelligence engine in action.