a jets fan · ajetsfan.comSaturday, September 5, 20265 straight · stock 3/4

Inside the composing room / Engineering case study

How the
paper is made

The score chooses the story. The streak ages the paper. Every effect starts with a fact in the archive.

Built by Garo Vartabedian. An independent fan project with its workings left open to inspection.

  1. 01 / Sourcenflverse play-by-play
  2. 02 / CheckReal snaps, reconciled scores
  3. 03 / RankSecond-half probability
  4. 04 / PrintLead, headline, paper

The season leaves a mark

Compare the five paper conditions. This sample changes only the sheet below; it does not change the archive or the current streak.

A sample from the composing room · stock 0/4

The feeling
has a texture.

Fresh stock. They won.

A win resets the paper. Losses progress through one–two, three–four, five–six, and seven or more games. A tie uses the first worn condition. Text describes every state, so the meaning survives without the color or texture.

The headline is a calculation

Heartbreak ranks losses by the highest Jets win probability reached in the second half. Miracle ranks wins by the lowest probability reached in the second half. Overtime is included.

The most recent result chooses the mood: after a loss, the lead comes from heartbreak; after a win, it comes from miracles. The story itself may be an older extreme in the archive. Headline size grows with distance from a 50–50 game.

These are model estimates at particular moments, not a measurement of how every fan felt. The archive covers the 19992025 seasons; this is not a live scoreboard.

Inspect the rankings and game curves →

The useful finding was a bad number

A quarter-ending administrative row in the 2000 Oakland game carried a 99.4% win probability while nearby real snaps were around 4%. Checking only for a non-null possession team did not remove it: the row contained an empty string.

The extraction now requires a possession team that is neither null nor empty, plus a play type, before reading probability. Selecting the decisive play also excludes no-plays, kneels, and spikes. The source query keeps those rules beside the calculation.

Read the extraction and integrity checks →

Keep the exception visible

The current dataset contains 449 games; 448 qualify for the two rankings. 1 game is flagged because the running play-by-play score does not reconcile with the recorded final score.

Flagged records remain in the dataset for inspection but cannot win a ranking or supply the lead. No replacement probability is invented.

A small system with a visible chain of decisions

DuckDB reads the source Parquet files during data preparation and writes static JSON. Next.js renders the front page from that snapshot. Small React controls handle comparison and archive interaction; CSS carries the paper, typography, and print texture.

There is no runtime language-model call deciding the headline. The source data, rules, and output can be inspected independently.

Return to The Back Page →