Filings Desk

How it works

Four steps, and a list of things we refuse to guess.

Everything here comes from EDGAR. Most of the engineering is not in fetching it — it is in knowing when the thing you fetched is not what you asked for.

01

Resolve the company

A ticker becomes a CIK through EDGAR's own index — which is keyed by array position rather than by ticker, and hands CIKs back as integers that need zero-padding to ten digits before anything downstream will accept them. A ticker with no filer behind it is refused before anything is charged.

02

Read only what is needed

A company's full XBRL fact set is 3.8 MB for Apple and 7.9 MB for JPMorgan. One concept is about 18 KB. Filings Desk asks for concepts, never the whole set, and requests are spaced to the SEC's fair-access rate — EDGAR publishes no throttle header and returns no 429, so the only safe assumption is that its limit is real and silent.

03

Cut the section out

A 10-K runs to 220,000–1,400,000 characters. Two of them will not fit in any prompt worth paying for, so the section is located and extracted first, by the widest-gap rule — and then checked to make sure it reads like the section it claims to be.

04

Compare, then describe

Paragraphs are matched by similarity and sorted into added, removed and reworded. Only after that does a language model see anything, and what it sees is the comparison's output — never the filings. It can describe what was found; it cannot invent what was not.

The widest-gap rule

Finding Item 1A is harder than it sounds.

Search a 10-K for “Item 1A. Risk Factors” and the first hit is almost always the table of contents. Take the last hit instead and you get nothing on a filing like Crocs’, which contains twelve of them and whose final one falls after its final Item 1B.

So neither end works. What works is the gap: for every “Item 1B. Unresolved Staff Comments” heading, take the last “Item 1A” before it, and keep whichever pair is furthest apart. The contents-page pair spans a few characters; the real one spans forty to a hundred and fifty thousand.

Two details are load-bearing. Non-breaking spaces and zero-width characters sit inside the heading in most filings’ HTML and have to be stripped before matching, or nothing matches at all. And filings before 2005 have no Item 1B, so the section is bounded by Item 2 instead.

And then it is checked

Locating the section is not the same as having it. The extracted text has to be long enough to be a section and has to read like one before it is compared. Three ways that check fires, all of them real:

  • omittedSmaller reporting companies are permitted to leave risk factors out altogether.
  • by referenceSome filers put MD&A in an exhibit. JPMorgan’s Item 7 extracts to 363 characters of cross-reference — a pointer, not a section.
  • wrong cutIf the text does not read like risk factors, it is rejected. A diff of the wrong section would be fluent, confident and false.

In every one of those cases you get the reason, and you are not charged.

Matching

Position tells you nothing. Similarity does.

Filings are re-paginated, re-ordered and re-numbered every year. Compare paragraph four with paragraph four and one insertion at the top makes everything below it look rewritten. So each paragraph becomes a set of word bigrams and is matched to its closest counterpart wherever that counterpart ended up.

LAST YEARTHIS YEARmatched by similarity — one pair crosses, because filings get re-ordered

≥ 0.985

unchanged

≥ 0.55

the same paragraph, reworded

no match

added, or removed

Tags

Why the response names the tag.

XBRL has no single tag for most concepts, and the wrong choice fails silently. Apple carries Revenues — with no data after FY2018 — alongside the tag it actually uses. JPMorgan carries the first and not the second. A priority list that stops at the first tag returning data reports seven-year-old revenue for Apple as current.

So every candidate is queried, the one with the most recent annual coverage wins, and the tag that answered is named in the response along with the ones that were tried. You can check the choice yourself.

METRIC: REVENUERevenueFromContract…117 points · through FY2025Revenues11 points · stops at FY2018SalesRevenueNet404 · not taggedtag: RevenueFromContract… — named in the response

What this is not

Filings Desk reports what a company filed and how the language changed. It is not investment advice and it is not a recommendation.

There is no score, no rating and no outlook anywhere in this product, and there never will be. EDGAR holds filings, not quotes — so there is no price data here either. What you get is what a company wrote, and how the writing moved.