All posts

Engineering note

Postmortem: the 2 AM financial-news pipeline

What failed, what changed, and how the production workflow became observable and recoverable.

AirflowGeminiBigQueryReliability

The workflow before

Two people were waking at 2 AM to collect and filter overnight market news by hand. Each morning cost four to five hours before the first editorial decision could be made.

What the system does now

The pipeline ingests the overnight news stream, classifies it, and produces a focused, reviewable editorial queue. Ingestion, classification, review, and publishing are orchestrated as explicit steps with evidence attached to every decision, so a human reviewer can see why an item was surfaced.

What failed along the way

  • Silent ingestion gaps. Early runs could finish "successfully" with missing sources. The fix was treating source coverage as a checked contract rather than an assumption.
  • Model drift without a baseline. Without a human reference set, there was no way to know whether classification quality was improving. Measuring agreement against editorial decisions gave the system a number to defend: 84%.
  • Recovery was manual. Failure paths were designed after the happy path. Reordering that — designing recovery first — removed most of the operational anxiety.

Result

Four to five hours became about eight minutes, two overnight operators became zero, and every published item carries its evidence trail.

View the related repository
Have a hard workflow?Let's make it operable.

Build the
system.

LLM-ready/index.md
Download .md