← Ground Truth

Earnings flash: guidance numbers pulled from the 8-K press release, not the call

OpenFilings··2 min read
earnings8-KSECguidanceMCPproduct

When a company reports earnings, the first public document is not the 10-Q. It is an 8-K under Item 2.02, with the actual press release attached as exhibit EX-99.1 — revenue, EPS, and next-quarter guidance, published as prose, hours before anyone files a structured report.

OpenFilings now reads that exhibit at ingest time instead of waiting for the 10-Q.

Where the numbers actually live

Every earnings 8-K creates a row in event_transcripts, keyed to the filing: fiscal quarter, fiscal year, call date, a press_release payload, and a guidance payload. No LLM in the loop — the extraction is regex-based against the press release text, tagged extractor: regex on every result so you can tell a parsed number from a missing one instead of getting a confident guess.

What gets extracted

{
  "fiscal_quarter": "Q2",
  "fiscal_year": 2026,
  "guidance": {
    "revenue_range": { "low": "3.1", "high": "3.3", "unit": "billion" },
    "gross_margin_pct": 42.5,
    "eps": { "value": "1.18", "high": "1.24" },
    "field_count": 3,
    "extractor": "regex"
  }
}

Four fields, matched independently: revenue range or single figure, gross margin, and EPS (with a high end when the release gives a range). field_count tells you upfront how much of a given release actually parsed — useful when you are scanning a batch of filings and want to skip the ones where the release didn't state numbers in a matchable format.

Where it shows up

  • REST / MCPget_filing returns an earnings_event extension for any 8-K Item 2.02 filing; same payload over MCP, documented right in the tool schema.
  • Workbench — filings with parsed guidance get a badge in the filing list, and an Earnings tab on the filing detail view with the guidance fields laid out instead of buried in exhibit text.

Because it hangs off the existing get_filing call, nothing changes for an integration that already fetches filings — the earnings data just appears for the 8-Ks that have it.

What is still rough

This is press-release-level guidance, not call transcript parsing — no sentiment, no Q&A section, no "beat vs. whisper number" analysis. The regex patterns miss releases that phrase guidance unusually (a table instead of prose, for instance), and there is no backfill promise for older 8-Ks yet — coverage starts from when the pipeline went live and extends backward opportunistically, not retroactively guaranteed. If field_count comes back low or zero on a release you know contains numbers, that is the parser missing a phrasing, not the data being unavailable.