Back to Blog Narrative

Building a Pre-Game Narrative Engine for Daily Sports Coverage

By Leul Dadi 8 min read
Building a Pre-Game Narrative Engine for Daily Sports Coverage

A daily sports media operation covers multiple matchups on a typical game day, often with one or two writers responsible for producing pre-game content for all of them. The math does not work unless significant parts of the workflow are automated or templated. But templated content has a known problem: readers recognize it, and it stops generating engagement.

The way we think about this problem is the narrative engine: a system that generates specific, factually-grounded pre-game angles for each matchup that a writer can develop into a full preview in under 20 minutes, without every piece reading like it came from the same template. This post explains what that system looks like in practice and what the editorial constraints are.

What a Narrative Engine Actually Does

A narrative engine in this context is not a natural-language generation system that writes articles. It is a structured analysis pipeline that identifies the analytically interesting dimensions of a specific matchup and presents them in a form a writer can immediately use.

The output is a set of pre-game angles, each grounded in a specific data signal: a historical trend relevant to this matchup configuration, a current-form indicator that is diverging from the team's seasonal baseline, an upset-risk assessment based on the prediction model's confidence interval, a scheduling context that affects one or both teams. Each angle is specific to this game, not a generic observation that could appear in any preview.

The critical requirement is freshness. A pre-game angle is only useful if it reflects the current state of both teams, including roster news from the last 24 hours. An angle that cites a performance metric that was updated before last night's injury report is not just outdated; it is potentially misleading. The system has to run on current data, which means it cannot be a batch process that runs weekly or even nightly for game-day coverage.

The Five Angle Types We Generate

Through iteration, we have settled on five types of pre-game angles that consistently translate well into editorial content. Not every matchup has a compelling angle in all five categories; a typical matchup might have two or three that are worth developing.

Historical matchup angle: a statistical pattern that is specific to when these two teams or two teams with these characteristics meet. This is distinct from each team's overall statistics; it is about what happens in this type of confrontation. Historical angles need to be qualified by sample size: an angle based on 4 meetings is very different from one based on 22 meetings in comparable circumstances.

Form divergence angle: when a team's recent performance is substantially different from their season aggregate in a specific measurable dimension, that divergence is newsworthy. "This team's defensive efficiency has dropped 12 percentage points over the last four games relative to their season average" is a form divergence angle that gives a writer a specific number to investigate and explain.

Upset-risk angle: when the prediction model's confidence interval is wider than typical for this matchup type, there is a structural reason the outcome is harder to call. Surfacing that reason as an editorial angle creates discussion. "The win probability is 62% for the home side, but the variance is elevated because of a specific scheduling factor that has historically disrupted this team's defensive execution" is more useful than just publishing a 62% number without context.

Scheduling context angle: rest differential, travel distance, back-to-back status, and altitude for relevant sports all affect performance in quantifiable ways. These are editorial angles that readers often do not have access to unless someone does the schedule math for them.

Key performance threshold angle: when a specific player or unit is approaching a historically significant threshold (a streak that is atypical, a head-to-head comparison that is anomalous relative to the league average), that threshold is a natural narrative hook. We are careful here: the threshold has to be meaningful, not trivially constructed. "Player X has scored in 7 of 10 games" is not a threshold angle. "Player X's efficiency rating in their last 9 appearances against this defensive scheme type is 40% above their season average" is a threshold angle.

Freshness and the Daily Update Problem

The hardest operational challenge in building a daily narrative engine is data freshness. Sports data has a shelf life measured in hours on game day. Pre-game narratives are typically prepared the morning of or evening before a game. Injury and lineup news can break at any point in that window.

The way we handle this is a two-pass architecture. The first pass runs on the morning of game day using the most recent available data and produces a full set of pre-game angles. The second pass runs two to three hours before game time and checks whether any of the angles in the first-pass output are affected by new roster news or lineup announcements. If they are, the affected angles are flagged for manual review or regenerated with the updated inputs.

This two-pass approach requires that the data pipeline has an efficient way to diff roster state between runs and identify which prediction and analytical features are affected by roster changes. It is not technically complex, but it requires explicit design; a system that does not track roster state separately from performance state cannot do this correctly.

What the Writer Does

We are deliberate about the boundary between what the narrative engine produces and what the writer does. The engine produces specific, qualified, data-grounded angles. The writer decides which angles to develop, adds editorial voice and fan-relevant context, structures the piece, and connects the angles into a coherent pre-game narrative.

We are not trying to produce ready-to-publish content automatically. That would eliminate the editorial judgment that distinguishes good sports coverage from adequate sports coverage. What we are trying to do is eliminate the data-gathering and calculation work that eats time without adding editorial value, so the writer can spend their 20 minutes on the 20 minutes of work that actually requires editorial skill.

A writer who used to spend 45 minutes gathering statistics and computing trends for a single matchup preview can now spend 10 minutes reviewing a structured angle set and 20 minutes writing. That productivity change is meaningful for a small editorial operation covering multiple games per day. The quality of the output depends on the writer's editorial judgment, which is exactly what should be true.

Where Template Fatigue Comes From

The risk with any narrative engine is template fatigue: previews that follow the same structural pattern become recognizable to regular readers as formulaic. We are not dismissing this concern. It is real and it is the main failure mode of automated content assistance tools in sports media.

The defense against template fatigue is angle specificity. If every matchup generates angles that are genuinely specific to that matchup, the resulting articles will not read as templated even if they are built using the same underlying angle types. Template fatigue happens when the angles are generic ("Team A needs better defense" is the same template dressed in different names). It does not happen when the angles are specific ("this particular combination of rest differential, historical head-to-head, and current form has produced a specific measurable pattern in comparable matchups").

The editorial test is simple: could this exact angle appear in a preview of a different matchup this week without changing a single number? If yes, it is a generic angle and it will cause template fatigue. If no, it is a specific angle and readers will not recognize the template even if the structural type is consistent across previews.

More from the Blog

Browse all articles