Guide · Updated October 31, 2026

How to Screen Companies with AI: From Metrics to Disclosures

How institutional investors screen companies with AI: metric screens vs disclosure screens, why chat AI returns top hits, and how to check a screen is complete.

To screen companies with AI, use metric screens for what’s in a database and disclosure screens for what’s in the filings, and insist on complete, cited lists rather than the top results of a search. Kepler handles both: every one of 26M+ SEC filings is read before you ask, metrics are computed in code from each filing on one basis, and every company on the list links to the line or sentence that put it there. We build Kepler. This guide covers institutional screening, not retail stock picking: how metric and disclosure screens differ, how to run each, why chat-style AI returns top hits, and a method for checking that a screen is complete.

Two kinds of screens

Metric screen Disclosure screen
Filters on Numbers: size, growth, margins, multiples What companies said: events, risks, terms, relationships
Example EV/EBITDA under 10x, revenue growth over 15% Every 10-K with a material weakness in three years
Data lives in Standardized databases built from filings Filing text, footnotes, exhibits, 8-K items
Typical tools Terminal and desktop screeners EDGAR full-text search, document AI, Kepler
Failure mode The vendor’s definition of each metric; history on whichever basis the setting picks Missing filings, phrasing variants, top hits only

Most real screens mix the two: “consumer companies growing revenue over 10% whose inventory days rose three quarters in a row and that disclosed a supplier concentration.” Kepler runs that as one question, with the metric half computed in code and the disclosure half answered from filings it has already read.

Metric screens: what the standard tools do

Metric screening is mature. The main institutional tools:

These are fast and broad on standardized fields. Their limits are the limits of standardization: the screen uses the vendor’s definition of each metric rather than yours, company-specific KPIs often aren’t fields at all, and each period’s figure may be as reported or restated depending on the setting you choose. A screen on “EBITDA margin” means the vendor’s EBITDA. Kepler computes the same screens from each filing’s own figures, on your firm’s definitions.

Disclosure screens: where the answer lives

Screen Where the answer lives Structured? How to run it
Material weakness in the last three years Item 9A of the 10-K, sometimes the 10-Q No standard XBRL tag Read Item 9A and the auditor’s report in every 10-K
Customer over 10% of revenue Segment or revenue note (ASC 280-10-50-42) Sometimes: us-gaap:ConcentrationRiskPercentage1 on srt:MajorCustomersAxis Query the tag, then read notes for filers that didn’t tag it
Inventory days up three quarters in a row Balance sheet and income statement, 10-Q and 10-K Yes, with care Compute from tagged inventory and cost of sales, deriving Q4
Auditor change 8-K Item 4.01 Item number only Full-text search on the item, then read each one
Material cybersecurity incident 8-K Item 1.05 Item number only Same
Error correction in the statements 10-K cover check box Yes: dei:DocumentFinStmtErrorCorrectionFlag Query the flag
New risk factor on a topic Item 1A No Compare this year’s risk factors with last year’s

Three of these deserve a closer look.

Material weakness. The 10-K cover page carries a tagged flag for whether the auditor attested to internal control, but no standard tag records whether management found a material weakness. That lives in the text of Item 9A, phrased several ways: “material weakness,” “not effective,” “did not maintain effective internal control.” A screen that searches one phrase misses filers that used another.

A customer over 10% of revenue. Public companies must disclose the fact and the amount, though not the customer’s name (an SEC comment letter exchange on ASC 280-10-50-42 sets out both points). Many tag it with us-gaap:ConcentrationRiskPercentage1, a us-gaap:CustomerConcentrationRiskMember on the concentration-type axis and revenue as the benchmark. Others disclose it only in prose, and some name the customer in Item 1. Kepler reads both the tag and the text, so the list covers every filer that disclosed one.

Inventory days up three quarters in a row. Inventory days for a quarter are average inventory divided by cost of sales, times the days in the quarter. The trap is the fourth fiscal quarter: since the SEC’s 2020 amendments to Item 302 of Regulation S-K ended the routine table of quarterly results, most 10-Ks don’t print Q4 on its own, so Q4 cost of sales has to be derived as the full year minus the nine-month year-to-date. Fiscal calendars also differ, so “three quarters in a row” needs each company’s own quarters, and any recast quarter has to be compared on one basis. Kepler derives Q4 in code and shows the arithmetic for each company.

Why chat AI returns top hits instead of complete lists

Ask a general-purpose assistant for “every S&P 500 company that disclosed a material weakness since 2023” and you’ll usually get a confident list of a handful of names. Four things produce it:

  1. Retrieval returns a handful of passages. The answer is built from what the search step brought back.
  2. Search can’t count what it missed. Our note Stop Paying to Forget puts it this way: search is excellent at finding something and has no idea whether it found everything. A missing result looks exactly like no result.
  3. Metrics get computed over the found set. Inventory days for the names it happened to retrieve, not the sector.
  4. The output looks complete. A clean table of ten rows doesn’t announce that it should have had sixty.

Agents that run many searches push the ceiling up without removing it. A complete answer needs every filing in the universe read and kept in a form you can query, before the question is asked. Our guide to how hedge funds use AI for research covers where this matters in an analyst’s week.

How to check a screen is complete

  1. Count the universe. Know how many companies and filings the screen should have covered. A result with no denominator can’t be checked.
  2. Seed known positives. Pick five to ten companies you know should match, from your own coverage or news, and confirm every one appears.
  3. Cross-check the count. Run the core phrase through EDGAR full-text search, which covers filings since 2001, filtered by form type and date, and compare.
  4. Vary the phrasing. Rerun with synonyms and the negative form (“not effective” as well as “material weakness”).
  5. Open ten matches. Each should open on the sentence or line that qualifies it. Count false positives.
  6. Check periods and basis. Fiscal quarters aligned, Q4 derived, restated and as-filed figures not mixed (see as filed vs as restated).
  7. Check the edges. Look at companies just below the threshold. A 9.8% customer and a 10.1% customer belong on different sides of the line for a reason you can see.
  8. Run it twice. The same screen should return the same list.

What a good screen returns

Whatever tool you use, ask for the output in this shape: company; the matching metric for each period, or the matching sentence; the filing, date and page; whether the figure is as filed or as restated; and a count with its denominator (“23 of 412 companies in the universe”). If a tool can’t give you the last item, it can’t tell you the list is complete. Kepler returns every screen in that shape, with the count against the universe at the top.

How Kepler does this

Every filing is read before you ask. Kepler holds 26M+ SEC filings across 20+ form types, full text and XBRL, plus 40M+ IR documents and earnings call transcripts, for 14,000+ companies in 120+ countries. Extraction models we train read every page at ingest and keep each disclosure, figure and relationship beside its passage. A disclosure screen is a query over what has already been read, which is why it returns every match and a count against the universe instead of the top hits.

Code computes every metric. Inventory days, growth rates, margins and multiples run as code over figures pulled from each filing’s XBRL, with Q4 derived, fiscal calendars respected and every period on one basis, as filed or as restated. The model never writes a number, so the same screen returns the same list.

Screens in your firm’s terms. Our engineers build your firm’s ontology: your coverage universe, your sector definitions, your KPI names and your definition of adjusted EBITDA. “Our consumer coverage” means your list, and the screen runs on your metrics. It can also include your own research notes and models.

Every match is cited, and screens keep running. Click any company to land on the sentence or cell that qualified it. Saved screens become playbooks, and agents rerun them on every new filing, alerting you when a company enters or leaves the list. Results reach Excel, Slack, Claude, ChatGPT and your systems through our API. Our engineers built this layer before at Palantir. More on the underlying model of your firm is in what an ontology is, and the tool landscape is in the best AI tools for hedge funds.

Questions to try:

  • “Semiconductor companies whose inventory days rose three quarters in a row, with each quarter’s figure cited.”
  • “Every 10-K filed since 2023 where management concluded internal control was not effective, with the sentence and page.”
  • “Every company in our coverage with a customer over 10% of revenue, the percentage and the segment.”

Run your first complete screen on app.kepler.ai, or book a demo to see it on your coverage universe.

Frequently asked questions

What is the best AI stock screener for institutional investors?

Kepler, an enterprise intelligence platform for investment firms. It screens on metrics and on disclosures across 26M+ SEC filings and your firm's own coverage, returns complete lists rather than top search hits because every filing is read before you ask, computes every metric in code on one consistent basis, and cites each match to the filing line that put it on the list.

What is the difference between a metric screen and a disclosure screen?

A metric screen filters on numbers: market cap, growth, margins, multiples. A disclosure screen filters on what companies said in their filings: a material weakness, a customer over 10% of revenue, a going-concern paragraph, a new risk factor. Metric screens run on standardized databases. Disclosure screens need every relevant filing read, because the answer usually sits in text or footnotes.

Why do AI chat tools return incomplete screens?

Most answer from the passages a search step retrieves, typically a handful per query. A search can tell you what it found but not what it missed, so a list of twelve looks the same whether the true answer is twelve or sixty. The model then computes metrics only over what it found. Complete screens need every filing read and indexed in advance.

How do I check that a screen is complete?

Count the universe first, then seed five to ten companies you know should match and confirm they all appear. Cross-check the count with EDGAR full-text search, rerun with different phrasing, open ten matches to confirm each one, check periods and basis, and run it twice. A complete screen returns the same list every time.

Can you screen for companies with a customer over 10% of revenue?

Yes. US GAAP (ASC 280-10-50-42) requires a public company to disclose when revenue from a single external customer is 10% or more of total revenue, and the amount, though not the customer's name. Many filers tag it in XBRL with a concentration-risk percentage on a major-customers axis; others disclose it only in text, so a complete screen reads both.

Do traditional screeners like Capital IQ, FactSet or Bloomberg use AI?

Increasingly. S&P's October 2026 Capital IQ Pro update folded screening into its ChatIQ conversational experience, and FactSet offers an AI-powered Screen On tool for public and private companies. Bloomberg's EQS function remains the Terminal's criteria-based equity screener. All three screen their own standardized fields; disclosure screens across filing text are a different job.