RTW RESTON TECHWIZ
home / works / Real-time sports platform
Case study - USA TODAY - active retainer

USA TODAY sports data, rebuilt for real-time.

USA TODAY's sportsdata.usatoday.com launched in 2021 on a data provider that could not hold. By 2023 RTW was brought in to rebuild the frontend, migrate to a reliable real-time feed, and wire the platform for scale: live scores, NFL Draft tracker, parlay calculator, and betting legality map. Dozens of dynamic pages, all live data, still running on active retainer.

Active - multi-year retainer sportsdata.usatoday.com ->
Client USA TODAY / Gannett
Industry Sports media / data
Engagement Multi-year / active retainer
Year shipped 2023 / rebuilt from 2021
RTW role Frontend / data integration
USA TODAY Sports Data Platform
SPORTS MEDIA - 2023 CASE STUDY - ACTIVE RETAINER
Sports covered real-time feeds
real-time
Live scores, standings, and event data across NFL, MLB, NBA, and more.
Dynamic pages and tools platform scope
dozens
Score dashboards, draft tracker, parlay calculator, legality map - all live data.
Platform lifespan still running
3+ yrs
Launched 2021, rebuilt 2023, and maintained on active retainer.
Cross-team reach collaboration
2 continents
RTW and Gannett teams coordinating across time zones for the engagement.

What the work required.

When USA TODAY built sportsdata.usatoday.com in 2021, it ran on a data provider that turned out to be unreliable. Feed inconsistencies, real-time gaps, and scaling limitations were undermining the platform before it had a chance to prove itself. By 2023 the question was no longer "how do we iterate" - it was "how do we rebuild the foundation without losing the surface." That is what RTW was brought in to do.

The scope of the rebuild covered the full frontend stack: Next.js and React with a GraphQL data layer, TypeScript for type-safe feed normalization, and a component architecture designed to support what sportsdata.usatoday.com actually needed to be: not a single dashboard but a multi-tool, multi-sport platform. Live scores. Standings. An NFL Draft tracker. A parlay calculator. A state-by-state betting legality map. Dozens of pages, each with a live data dependency, all built from a shared component system.

The engagement has been active since. RTW has stayed on retainer through the rebuild and feature expansion, working in iterative cycles with close coordination between the frontend team and Gannett's backend and editorial teams across two continents. The platform is live with the NFL Draft page, legality map, parlay calculator, and NBA scores all running production data today.

Where the platform was failing.

[01]

Migrating data providers without breaking live coverage

The platform was live and users were on it. Every data feed dependency had to be rebuilt against the new provider API contract without triggering visible breakage across existing pages and tools.

Critical
[02]

Ensuring real-time accuracy under high-frequency update cycles

Sports data changes constantly: live scores, in-game events, and live odds. Any normalization error or caching miss shows up immediately as a wrong number to a reader who knows the score.

Critical
[03]

Building sports domain knowledge into the data layer

NFL scoring, MLB innings, NBA overtime - each sport has structural logic that has to live in the normalization layer, not as an afterthought in the UI.

Critical
[04]

Handling large data volumes across concurrent sports and events

Game days bring simultaneous events with high-frequency updates. The GraphQL layer had to handle concurrent feed subscriptions without degrading response time or dropping updates.

Medium
[05]

Cross-continent async collaboration at pace

RTW and Gannett teams operate across different time zones. Work had to be structured so blocked tasks never waited for a synchronous answer, with ownership clear at every API boundary.

Medium
[06]

Maintaining platform performance through peak event traffic

Super Bowl Sunday, draft night, playoff runs - the frontend had to be engineered for peak traffic from the start, with caching and rendering strategies that did not degrade under national attention.

Medium

How we moved from broken feed to live platform.

A live platform with a broken foundation, rebuilt from underneath.

Rebuilding a live sports platform is not the same as building one. The existing surface had users; we could not take it down while replacing what was underneath. The work was structured so the new data layer and component system could be validated in parallel, then swapped in progressively - sport by sport, tool by tool.

A
API-first development The GraphQL contract between the data layer and frontend was defined before any component was written.
B
Component-based frontend architecture Each sports tool was built from a shared component library, keeping dozens of pages manageable for a small team.
C
Continuous testing and validation Normalization logic was tested against real feed formats because wrong scores are visible immediately.
D
Async collaboration across time zones Work was divided at clear API and component boundaries so RTW and Gannett teams could move in parallel.
PHASE // 01 Discovery

Data provider research and API contract design

Mapped existing data dependencies and failure points. Evaluated providers against feed reliability, real-time latency, sports coverage, and TypeScript-friendly API contracts.

provider eval dependency map GraphQL schema v1 architecture decision
PHASE // 02 Foundation

GraphQL layer and TypeScript normalization

Built the GraphQL server layer and TypeScript normalization logic that translated raw feed data into sport-correct, component-ready shapes.

GraphQL server TypeScript models normalization tests feed validation
PHASE // 03 Build

Frontend shell rebuild: Next.js and React component library

Rebuilt the frontend with shared score tables, standings grids, stat blocks, live update wrappers, and responsive data cards.

Next.js + React component library SSR routes live update layer
PHASE // 04 Integration

Tool-by-tool wiring: scores, draft, calculator, maps

Connected each product surface progressively: score dashboards first, then draft tracker, parlay calculator, and betting legality map.

scores live draft tracker parlay calculator legality map
PHASE // 05 QA

Cross-team integration testing and data validation

Joint QA with Gannett data and backend teams covered feed edge cases, scoring rules, normalization accuracy, and peak-traffic rendering behavior.

cross-team QA data edge cases performance validation cutover plan
PHASE // 06 Retainer

Progressive rollout and ongoing retainer

After cutover, RTW transitioned into active retainer: iterating on existing tools, adding sports coverage, and supporting Gannett feature work.

platform live retainer active feature expansion ongoing collaboration

The exact tools we used.

Frontend

[01]
  • Next.js framework
  • React ui
  • TypeScript lang
  • HTML5 / CSS3 markup
  • Responsive layouts mobile-first

API layer

[02]
  • GraphQL query lang
  • Type-safe queries contracts
  • Subscriptions real-time
  • Resolver caching performance

Backend

[03]
  • Node.js runtime
  • TypeScript layer normalization
  • Feed integration real-time
  • Unit tests data accuracy

Data

[04]
  • Sports data APIs primary
  • Feed normalization logic
  • High-frequency updates live scores
  • Multi-sport schemas NFL / MLB / NBA

Design

[05]
  • Figma design tool
  • Data visualization charts
  • Multi-sport system design sys
  • Component library shared UI

Dev ops

[06]
  • GitHub version control
  • Iterative CI/CD pipeline
  • Cross-team review async QA
  • Unit test pipeline feed validation

Three things worth showing.

Feature 01 / 03 - live data at scale

Real-time sports data dashboards, rebuilt on a foundation that holds.

The core of sportsdata.usatoday.com is live scores, standings, and game stats across major sports leagues. The 2023 rebuild replaced an unreliable data provider with a stable real-time feed wired through a TypeScript normalization layer.

  • Live scores and standings updated in real time across major sports leagues.
  • SSR routes for season and sport context pages; React live state for in-game score updates.
  • Shared score tables, stat blocks, and standings grids reused across dozens of pages.
  • Edge-cached SSR routes engineered to absorb game-day traffic spikes.
Real-time sports data dashboards, rebuilt on a foundation that holds. LIVE - NFL / NBA / MLB
Feature 02 / 03 - specialist tools

Interactive sports tools, each one wired to live data.

Beyond scores and standings, the platform needed to support specific sports moments and decisions. RTW built the NFL Draft tracker, parlay calculator, and state betting legality map on the same GraphQL contract.

  • NFL Draft tracker with round-by-round picks, position filters, and team views.
  • Parlay calculator using live odds and projected payout logic.
  • State-by-state sports betting legality map with jurisdiction-level rules.
  • New tools could be composed from existing data and UI contracts.
Interactive sports tools, each one wired to live data. TOOLS - LIVE DATA
Feature 03 / 03 - data visualization

Dynamic data visualizations, consistent across every sport.

A multi-sport platform needs the same visualization logic to work for NFL records, MLB batting averages, and NBA player stats. The component library made visual consistency and data accuracy part of the same contract.

  • Standings tables, box scores, and stat comparisons as reusable components.
  • Layouts scale from dense tables to mobile-first stat cards.
  • Chart and table components receive typed data from the GraphQL layer.
  • Consistent visual system across NFL, MLB, NBA, and future sport additions.
Dynamic data visualizations, consistent across every sport. DATA - MULTI-SPORT

Three things we would do again.

// 01

Validate your data provider before you build on it.

Every live-data platform lives or dies on what is upstream. Before writing components, provider reliability, feed edge cases, and normalization tests need to be validated against real data samples.

// 02

Sports domain knowledge lives in the normalization layer.

Scoring rules, innings counts, overtime, stat definitions, and feed quirks are not UI details. They belong in tested data logic before they reach components.

// 03

Async collaboration needs explicit ownership.

When teams span continents, ambiguous ownership becomes delay. RTW and Gannett split the work at clear data and frontend boundaries so tasks could move without waiting on shared time zones.

// real-time data at national scale?

We build data platforms that stay accurate under load.

Multi-year retainers on live sports data, election coverage, and editorial platforms. If your platform needs to hold up when everyone is watching - and the score has to be right - we would like to hear about it.