<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jared Ablon</title>
    <description>The latest articles on DEV Community by Jared Ablon (@jared_ablon_f27e6e2896913).</description>
    <link>https://dev.to/jared_ablon_f27e6e2896913</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3930408%2Fb2dc5b12-5588-4948-a330-59c20c1a8e02.png</url>
      <title>DEV Community: Jared Ablon</title>
      <link>https://dev.to/jared_ablon_f27e6e2896913</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jared_ablon_f27e6e2896913"/>
    <language>en</language>
    <item>
      <title>I Built a SEC Disclosure-Risk Audit Tool — Here's What It Found on a Real Ticker (SNBR)</title>
      <dc:creator>Jared Ablon</dc:creator>
      <pubDate>Sun, 28 Jun 2026 03:53:30 +0000</pubDate>
      <link>https://dev.to/jared_ablon_f27e6e2896913/i-built-a-sec-disclosure-risk-audit-tool-heres-what-it-found-on-a-real-ticker-snbr-24c7</link>
      <guid>https://dev.to/jared_ablon_f27e6e2896913/i-built-a-sec-disclosure-risk-audit-tool-heres-what-it-found-on-a-real-ticker-snbr-24c7</guid>
      <description>&lt;h1&gt;
  
  
  I Built a SEC Disclosure-Risk Audit Tool — Here's What It Found on a Real Ticker (SNBR)
&lt;/h1&gt;

&lt;p&gt;I've been building &lt;a href="https://filingfirehose.com" rel="noopener noreferrer"&gt;FilingFirehose&lt;/a&gt; for the past few months — a tool that ingests every SEC 8-K, 10-K, 10-Q, S-3, and 13D filing in real time and scores each issuer for disclosure risk. This week I shipped the first end-to-end "audit" deliverable: a 12-page forensic write-up on a single ticker, with every red flag traced back to a specific EDGAR accession number.&lt;/p&gt;

&lt;p&gt;I want to walk through the actual audit it generated on &lt;strong&gt;Sleep Number Corp (SNBR)&lt;/strong&gt; — a real, mid-cap, publicly traded company — because the patterns it surfaced are a useful illustration of what's hiding in plain sight in routine 8-K cadence.&lt;/p&gt;

&lt;p&gt;The full sample is public: &lt;strong&gt;&lt;a href="https://filingfirehose.com/audit/sample/SNBR" rel="noopener noreferrer"&gt;https://filingfirehose.com/audit/sample/SNBR&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The TL;DR
&lt;/h2&gt;

&lt;p&gt;The system pulled SNBR's last four quarters of SEC filings, ran them through a red-flag taxonomy I built (bankruptcy proximity, delisting notices, dilution proximity, restatement risk, officer departure clustering, cyber-incident disclosure, going-concern language, activist 13D filings), and produced this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SNBR — ELEVATED risk band.&lt;/strong&gt; 7 distinct signals across an 8-K cluster filed late May through mid-June 2026. Trajectory: worsening.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The interesting part isn't the score. It's the &lt;em&gt;pattern&lt;/em&gt; it caught — one that any short-side analyst would also catch within 10 minutes of looking, but that most retail traders and even some IROs miss.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Pattern
&lt;/h2&gt;

&lt;p&gt;Three things happened in a 21-day window:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;May 27, June 2, June 10&lt;/strong&gt; — three consecutive 8-K filings each carrying Item 5.02 (officer/director events). Short-side desks treat clustered 5.02s as a "departure cluster" regardless of the stated reason.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;June 12&lt;/strong&gt; — a single 8-K carrying Items 1.01, 1.03, 2.04, 7.01, &lt;em&gt;and&lt;/em&gt; 9.01. The presence of &lt;strong&gt;Item 1.03 (bankruptcy / receivership)&lt;/strong&gt; alongside &lt;strong&gt;Item 2.04 (triggering events accelerating a financial obligation)&lt;/strong&gt; is one of the highest-signal item-mixes in the 8-K vocabulary. It rarely shows up benignly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;June 17&lt;/strong&gt; — a standalone Item 3.01 filing. Item 3.01 is the notice category used for "notification of delisting or failure to satisfy a continued listing rule." Standalone 3.01s are uncommon and are the first item outside readers scan for.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Taken individually, none of these &lt;em&gt;necessarily&lt;/em&gt; means anything bad. Taken as a sequence — 5.02 cluster → embedded 1.03 with 2.04 → standalone 3.01 — they form a single narrative that an experienced short-side reader will instantly assemble.&lt;/p&gt;

&lt;p&gt;That's what the audit does: it does the assembly for you, names the narrative, cites each filing, and tells you what an outside reader is seeing.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the System Works (high level)
&lt;/h2&gt;

&lt;p&gt;This is the open-source-ish stack I'm running on Fly.io:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EDGAR full-text feed (polled every 60s)
  ↓
Parquet store of every filing back to 2023
  ↓
Taxonomy classifier (8-K item parsing + buried_json extraction)
  ↓
Per-ticker risk-signal aggregator
  ↓
Claude Opus prompt with the signal list + full context
  ↓
Structured JSON → HTML PDF + Loom-style narration script
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few decisions I made that worked out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pre-compute risk scores nightly&lt;/strong&gt; instead of computing on request. Stripping parquet scans out of the request handler took the p99 response time from 3s to 8ms. Lesson: never do heavy compute in a web request, even if you "wrap it in a thread with a timeout." I tried that and it took the production app down for 45 minutes one afternoon.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cite every claim to an EDGAR accession number.&lt;/strong&gt; An audit that says "we found dilution risk" is useless. An audit that says "see accession 0000950103-26-008891, Item 7.01, where the company filed an Item 1.03 reference embedded in a Regulation FD disclosure" is forensically defensible. Every red flag in the deliverable links to the source filing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Trust the LLM for synthesis, not for fact-extraction.&lt;/strong&gt; The accession numbers, item codes, and dates come from a deterministic parser. The LLM is only used to assemble the narrative. This avoids the "the AI made up a filing" failure mode that kills credibility instantly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the Free Tool Does
&lt;/h2&gt;

&lt;p&gt;If you want to try the underlying scoring engine on any US ticker — no signup, no email — it's at &lt;a href="https://filingfirehose.com/forensic" rel="noopener noreferrer"&gt;filingfirehose.com/forensic&lt;/a&gt;. Type a ticker, hit go, get a score band + breakdown in about 800ms.&lt;/p&gt;

&lt;p&gt;The full audit deliverable (12-page PDF + every accession cited + executive summary + outside-reader interpretation) is a one-time $497 product for IROs, CFOs, and audit committees who want to know what an outside analyst is seeing in their filings &lt;em&gt;before&lt;/em&gt; the outside analyst writes the article. It's at &lt;a href="https://filingfirehose.com/audit" rel="noopener noreferrer"&gt;filingfirehose.com/audit&lt;/a&gt; if you want to see the landing — or just read the SNBR sample to see what one looks like in the real world.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd Build Next
&lt;/h2&gt;

&lt;p&gt;Two things on the roadmap:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sector-comparative scoring&lt;/strong&gt; — instead of an absolute score, show "you're in the 87th percentile of disclosure risk among small-cap consumer goods companies." Context beats absolutes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Earnings-call language drift detection&lt;/strong&gt; — pair the 8-K signal stream with transcript embeddings, surface when management's framing diverges from the filing language. This is where short-sellers actually find alpha.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you build forensic analysis tools or run a small-cap research desk, would genuinely love to hear what signals you key on that I should add to the taxonomy. Reply here or hit me at &lt;a href="mailto:jared@filingfirehose.com"&gt;jared@filingfirehose.com&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;The SNBR audit is real and public. Nothing in this post is investment advice. The "ELEVATED risk band" is a disclosure-language read on routine SEC filings, not a financial conclusion or a recommendation to short the stock.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>fintech</category>
      <category>showdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>I parsed 4,251 SEC 8-K filings — 7.3% have buried material events nobody surfaces</title>
      <dc:creator>Jared Ablon</dc:creator>
      <pubDate>Thu, 14 May 2026 04:40:13 +0000</pubDate>
      <link>https://dev.to/jared_ablon_f27e6e2896913/i-parsed-4251-sec-8-k-filings-73-have-buried-material-events-nobody-surfaces-5c8o</link>
      <guid>https://dev.to/jared_ablon_f27e6e2896913/i-parsed-4251-sec-8-k-filings-73-have-buried-material-events-nobody-surfaces-5c8o</guid>
      <description>&lt;h2&gt;
  
  
  The wedge
&lt;/h2&gt;

&lt;p&gt;US public companies file Form 8-K to disclose material events between quarterly reports. Each 8-K has one or more &lt;strong&gt;item codes&lt;/strong&gt; indicating &lt;em&gt;what&lt;/em&gt; the event is — Item 1.05 for a material cybersecurity incident, Item 5.02 for a director or officer departure, Item 1.01 for a definitive material agreement, and so on.&lt;/p&gt;

&lt;p&gt;There's also a catch-all: &lt;strong&gt;Item 8.01 ("Other Events")&lt;/strong&gt;. The SEC's instructions explicitly say that if a more specific item applies, you should use that instead. In practice, filers chronically use Item 8.01 to disclose events that fit a more specific item — sometimes innocently, sometimes to bury the disclosure.&lt;/p&gt;

&lt;p&gt;Most SEC data APIs trust the filer-reported item codes. &lt;strong&gt;We re-classify from the body text and surface the discrepancies.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://filingfirehose.com" rel="noopener noreferrer"&gt;FilingFirehose&lt;/a&gt; (a productized SEC EDGAR JSON API) and ran the body-text classifier over 4,251 8-K filings filed in a 21-business-day window. Findings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;7.3%&lt;/strong&gt; of Item 8.01 filings contain body language strongly suggesting a more specific item code&lt;/li&gt;
&lt;li&gt;Top suspected misclassifications: Item 1.01 (material agreement, 27 cases), Item 3.01 (notice of delisting, 17), Item 1.05 (cyber, 5), Item 5.02 (officer departure, 3), Item 2.01 (acquisition, 3), Item 1.03 (bankruptcy, 3)&lt;/li&gt;
&lt;li&gt;Item 7.01 (Reg FD) shows a similar pattern: 4.0% of those have body language suggesting another item should have been used&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;For three audiences specifically:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compliance teams.&lt;/strong&gt; The SEC's 2023 cybersecurity disclosure rule explicitly flags Item 1.05 misclassification as a violation. Recent enforcement actions cite this exact pattern (a company filing a cyber breach under 8.01 when 1.05 was required). If you're monitoring competitor or watchlist filings, knowing which 8.01 filings actually contain cyber language gives you a real-time risk signal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quant analysts running event-driven strategies.&lt;/strong&gt; Classification noise on filer-reported items is a known problem. The body-text classification is itself a free signal — companies that bury events under 8.01 may be doing so to delay market reaction, which means the price-impact lag is longer than naive item-code monitoring would suggest. Strategies that key off the &lt;strong&gt;discrepancy&lt;/strong&gt; between filer-reported items and body-detected items have an alpha source most consumers miss entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fintech journalists.&lt;/strong&gt; Item 8.01 filings are where the buried news lives. Manually reading every 8-K's body for cyber, officer, or material-agreement language is a Sunday-afternoon job. We do it automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pipeline
&lt;/h2&gt;

&lt;p&gt;The whole thing is ~2k LOC of Python. Stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;EDGAR poller&lt;/strong&gt;: standard SEC &lt;code&gt;getcurrent&lt;/code&gt; atom feed at 2-second cadence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filing fetch&lt;/strong&gt;: per-filing HTML body via &lt;code&gt;requests&lt;/code&gt; (cached aggressively — EDGAR rate-limits at 10 req/s)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Body extraction&lt;/strong&gt;: BeautifulSoup with custom rules for the SEC's idiosyncratic HTML&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Classification&lt;/strong&gt;: deterministic regex + keyword + co-occurrence rules. No transformer. Domain phrases are specific enough that rule-based beats LLM accuracy on this task, with no per-filing inference cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: Polars LazyFrames over a partitioned Parquet store (form_type / date). The classifier output stored as a JSON column alongside the parsed metadata.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-runs nightly&lt;/strong&gt;: full body-text re-parse with current rules; results overwrite the JSON column.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sample classifier rule for Item 1.05 (cyber):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;detect_item_105&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Detect material cybersecurity incident language.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;body_lower&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;has_breach_lang&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;body_lower&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;material cybersecurity incident&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unauthorized access&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data exfiltration&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ransomware&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cyber attack&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cybersecurity event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="n"&gt;has_temporal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;body_lower&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;on [date]&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;we became aware&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;discovered on&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;identified on&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="n"&gt;has_materiality&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;body_lower&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;material&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;significant impact&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;operations were affected&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;has_breach_lang&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;has_temporal&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;has_materiality&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Real implementation has more rules + scoring. False positive rate on a 50-filing manual audit: ~12%. False negative rate on 100 unflagged filings: 1%.)&lt;/p&gt;

&lt;h2&gt;
  
  
  The output
&lt;/h2&gt;

&lt;p&gt;Every 8-K record in our API includes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"accession_number"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0001234567-26-001234"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"company_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Example Corp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"filed_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-05-10T16:00:00-04:00"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"filer_reported_items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"8.01"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"detected_items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"8.01"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.05"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"discrepancy_items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"1.05"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"suspected_buried_events"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"reported as Item 8.01 but body suggests Item 1.05"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;discrepancy_items&lt;/code&gt; field is the difference between detected and reported. The &lt;code&gt;suspected_buried_events&lt;/code&gt; field is a human-readable string explaining the flag.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to query it
&lt;/h2&gt;

&lt;p&gt;The free public tier covers the past 72 hours, no API key required:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# All 8-Ks with suspected buried events from the last 72h&lt;/span&gt;
curl &lt;span class="s2"&gt;"https://filingfirehose.com/v1/public/8k?suspected_buried_only=true"&lt;/span&gt;

&lt;span class="c"&gt;# Filter by item code&lt;/span&gt;
curl &lt;span class="s2"&gt;"https://filingfirehose.com/v1/public/8k?items=1.05"&lt;/span&gt;

&lt;span class="c"&gt;# Recent activist 13D filings (separate endpoint)&lt;/span&gt;
curl &lt;span class="s2"&gt;"https://filingfirehose.com/v1/public/13d?activist=Saba"&lt;/span&gt;

&lt;span class="c"&gt;# Recent ATM offerings on S-3/424B5&lt;/span&gt;
curl &lt;span class="s2"&gt;"https://filingfirehose.com/v1/public/atm?min_shelf_million_usd=100"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the full archive (10+ years) + webhook delivery + 10× rate limit, there's a &lt;a href="https://filingfirehose.com/trial" rel="noopener noreferrer"&gt;free 14-day Pro trial&lt;/a&gt;, no card required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live data
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Today's flagged filings&lt;/strong&gt;: &lt;a href="https://filingfirehose.com/today" rel="noopener noreferrer"&gt;filingfirehose.com/today&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public leaderboard&lt;/strong&gt; of companies ranked by buried-event rate: &lt;a href="https://filingfirehose.com/leaderboard" rel="noopener noreferrer"&gt;filingfirehose.com/leaderboard&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-ticker pages&lt;/strong&gt;: filingfirehose.com/sec/{TICKER} for any listed US company&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Methodology piece&lt;/strong&gt;: &lt;a href="https://filingfirehose.com/research/buried-events" rel="noopener noreferrer"&gt;filingfirehose.com/research/buried-events&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP server&lt;/strong&gt; for Claude Desktop / Cursor / Windsurf: add &lt;code&gt;https://filingfirehose.com/mcp&lt;/code&gt; to your config&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT custom GPT&lt;/strong&gt;: &lt;a href="https://chatgpt.com/g/g-6a00c51251c08191ad99bf16dc80f4b3-filingfirehose" rel="noopener noreferrer"&gt;chatgpt.com/g/g-6a00c51251c08191ad99bf16dc80f4b3-filingfirehose&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'd love feedback on
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Other body-text patterns worth testing.&lt;/strong&gt; Going-concern language buried under generic 8-K items is on my list. What else?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The classifier's false-positive rate.&lt;/strong&gt; 12% feels acceptable for a screening tool but may be too noisy for a trading signal. Curious if anyone here has experience tuning rule-based classifiers in this regime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Other forms worth body-text-parsing.&lt;/strong&gt; S-1 amendments, proxy statements, going-concern 10-Q sections — what would compound the most?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're building anything in this space, happy to chat. The source on the parsing rules isn't fully open (it's the moat) but I'll share the methodology in detail with anyone serious.&lt;/p&gt;

&lt;p&gt;— Jared&lt;/p&gt;

</description>
      <category>finance</category>
      <category>python</category>
      <category>api</category>
      <category>fintech</category>
    </item>
  </channel>
</rss>
