Which AI model tags SEC filings best?
Ten AI models tagged 100 real SEC filings with 41 investor tags, such as raised guidance, a going-concern warning or a pending acquisition. Every answer was checked against reviewed labels.
We ran this benchmark to choose the model that tags filings for Panabee.
DeepSeek V4.1 Flash
Gemini 3.5 Flash-Lite
DeepSeek V4.1 Flash, against $494 for Gemini 3.5 Flash-Lite
Priority tags
Higher is betterThe 14 tags investors screen for most: strategic review, pending acquisition, strategic pivot, financial distress, going-concern warning, material litigation, backlog inflection, profitability milestone, revenue record, beat guidance, missed guidance, guidance raised, guidance lowered and margin inflection.
| Rank | Model | F1 | 90% range | Precision | Recall | Per earnings filing | Per event 8-K | Six-month retag |
|---|---|---|---|---|---|---|---|---|
| 1 | DeepSeek V4.1 Flash | 91.3 | 87.6 to 95.0 | 89.2 | 93.5 | $0.0047 | $0.0013 | $106 |
| 2 | Qwen 3.8 Flash | 90.6 | 85.7 to 95.2 | 87.9 | 93.5 | $0.0088 | $0.0027 | $203 |
| 3 | GPT-6 Luna | 89.1 | 84.7 to 93.3 | 86.4 | 91.9 | $0.0059 | $0.0014 | $127 |
| 4 | Gemini 3.8 Flash | 87.3 | 81.4 to 92.5 | 100.0 | 77.4 | $0.0473 | $0.0160 | $1,131 |
| 5 | Claude Haiku 5.5 | 83.7 | 77.4 to 89.7 | 80.6 | 87.1 | $0.0081 | $0.0025 | $188 |
| 6 | Gemini 3.5 Flash-Lite | 80.6 | 73.7 to 87.0 | 77.6 | 83.9 | $0.0198 | $0.0076 | $494 |
| 7 | GPT-6.1 Terra | 78.9 | 70.9 to 86.2 | 91.5 | 69.4 | $0.0552 | $0.0122 | $1,172 |
| 8 | Clef | 75.9 | 69.9 to 81.5 | 62.5 | 96.8 | $0.0125 | $0.0036 | $284 |
| 9 | Jev 1.14 | 75.7 | 69.7 to 81.3 | 67.9 | 85.5 | $0.0021 | $0.0005 | $46 |
| 10 | Gemini 3.1 Flash-Lite | 74.7 | 68.9 to 80.0 | 63.6 | 90.3 | $0.0134 | $0.0041 | $312 |
14 tags with 62 true cases across 100 filings.
F1 combines precision, the share of yes answers that were right, and recall, the share of true tags a model found. 100 is perfect. The 90% range comes from resampling the filings 2,000 times. Costs are measured on these runs and include reasoning tokens. The six-month retag projects the cost of retagging 24,631 Panabee articles from each model's measured cost, scaled to the $494 the current tagger costs.
Other special situations
Higher is betterSpinoffs, divestitures, activist campaigns, tender offers, deleveraging, contract wins and the other event tags.
| Rank | Model | F1 | 90% range | Precision | Recall |
|---|---|---|---|---|---|
| 1 | DeepSeek V4.1 Flash | 93.0 | 88.3 to 97.2 | 95.2 | 90.9 |
| 2 | Qwen 3.8 Flash | 90.9 | 83.7 to 96.6 | 90.9 | 90.9 |
| 3 | Gemini 3.8 Flash | 90.0 | 84.0 to 95.2 | 100.0 | 81.8 |
| 4 | GPT-6 Luna | 86.7 | 80.0 to 92.3 | 84.8 | 88.6 |
| 5 | Claude Haiku 5.5 | 84.8 | 78.2 to 90.9 | 81.3 | 88.6 |
| 6 | Gemini 3.5 Flash-Lite | 83.7 | 75.9 to 90.7 | 85.7 | 81.8 |
| 7 | Clef | 82.8 | 75.9 to 88.9 | 83.7 | 81.8 |
| 8 | GPT-6.1 Terra | 81.3 | 72.7 to 88.7 | 78.7 | 84.1 |
| 9 | Jev 1.14 | 79.1 | 71.2 to 86.0 | 76.6 | 81.8 |
| 10 | Gemini 3.1 Flash-Lite | 76.2 | 67.3 to 84.2 | 65.6 | 90.9 |
15 tags with 44 true cases across 100 filings.
Industry tags
Higher is betterAI, crypto, biotech, energy, solar, finance, real estate and semiconductors.
| Rank | Model | F1 | 90% range | Precision | Recall |
|---|---|---|---|---|---|
| 1 | Gemini 3.8 Flash | 100.0 | 100.0 to 100.0 | 100.0 | 100.0 |
| 2 | Claude Haiku 5.5 | 98.7 | 96.1 to 100.0 | 100.0 | 97.4 |
| 3 | GPT-6.1 Terra | 97.5 | 94.1 to 100.0 | 95.1 | 100.0 |
| 4 | Gemini 3.5 Flash-Lite | 96.2 | 92.1 to 99.0 | 95.0 | 97.4 |
| 5 | GPT-6 Luna | 96.1 | 91.8 to 98.9 | 97.4 | 94.9 |
| 6 | DeepSeek V4.1 Flash | 96.0 | 91.8 to 98.9 | 100.0 | 92.3 |
| 7 | Clef | 94.7 | 90.0 to 98.6 | 97.3 | 92.3 |
| 8 | Qwen 3.8 Flash | 92.3 | 86.8 to 97.1 | 92.3 | 92.3 |
| 9 | Jev 1.14 | 91.6 | 85.7 to 96.3 | 86.4 | 97.4 |
| 10 | Gemini 3.1 Flash-Lite | 82.6 | 75.0 to 88.9 | 71.7 | 97.4 |
8 tags with 39 true cases across 100 filings.
Run-to-run spread
Priority tagsThree models ran twice on the same filings. A gap between two models smaller than a model's own spread is not a real difference.
| Model | First run | Second run | Same answer |
|---|---|---|---|
| DeepSeek V4.1 Flash | 91.3 | 91.3 | 87.2% |
| Gemini 3.5 Flash-Lite | 80.6 | 78.7 | 77.6% |
| GPT-6 Luna | 89.1 | 90.5 | 85.2% |
Same answer is the share of priority-tag cells where either run said yes and both runs agreed.
Long filings
Special-situation tags10 more earnings filings of 55,000 to 113,000 tokens, above the main test's range. Treat this small sample as a sanity check.
| Model | Found | False alarms | Missed | F1 |
|---|---|---|---|---|
| Gemini 3.8 Flash | 9 | 0 | 0 | 100.0 |
| DeepSeek V4.1 Flash | 8 | 1 | 1 | 88.9 |
| GPT-6 Luna | 8 | 3 | 1 | 80.0 |
| Gemini 3.5 Flash-Lite | 7 | 2 | 2 | 77.8 |
| Claude Haiku 5.5 | 8 | 6 | 1 | 69.6 |
Coverage
True cases per tag4 priority tags have no true case in these filings: material litigation, backlog inflection, missed guidance and margin inflection. For them the test only counts false alarms. Among the other tags, management buyout, rights offering, bankruptcy emergence and receivership have fewer than 3 true cases and are also scored for false alarms only. 61 cells where a careful expert could go either way are left out of scoring.
- strategic review3
- pending acquisition7
- strategic pivot3
- financial distress7
- going-concern warning8
- material litigation0False alarms only
- backlog inflection0False alarms only
- profitability milestone4
- revenue record6
- beat guidance3
- missed guidance0False alarms only
- guidance raised14
- guidance lowered7
- margin inflection0False alarms only
Other and industry tags
- spinoff3
- divestiture3
- asset sale2
- activist campaign3
- unsolicited offer4
- tender offer2
- deleveraging5
- recapitalization5
- bankruptcy filing4
- major contract win1
- major contract loss0False alarms only
- pricing action2
- capacity expansion6
- special dividend2
- buyback authorization2
- AI3
- crypto2
- biotech18
- energy7
- solar0False alarms only
- finance8
- real estate0False alarms only
- semiconductors1
How the test works
Each model got Panabee's production tagging prompt as the system message and one filing as the user message. The filing text is exactly what the production tagger sends: a short context block with the date, ticker and company, then each document converted from HTML to Markdown. The model answered all 41 tags yes or no in one JSON object, with an evidence quote and a reason for each yes. Only yes answers count.
The 100 filings are from May to November 2026. 50 are quarterly earnings: the earnings press release plus the full 10-Q, with a median of about 42,600 tokens. Half of those were drawn at random and half were picked for rare situations and hard negatives, such as reaffirmed guidance. The other 50 are event 8-Ks with their press releases, with a median of about 4,600 tokens, including routine filings that should get no special-situation tags.
Language models ran through OpenRouter at temperature 0 with medium reasoning. Decision models return a probability for each yes-or-no question. They got the same text and one question per tag, and a probability of 0.5 or more counts as yes. Neither decision model returns an evidence quote.
Scores pool every filing and tag in a group, so each true tag counts once. The production converter wraps table cells in background-color markers that carry no content, so they were removed. Rerunning two models with the markers left in changed no score beyond run-to-run noise. Running the whole benchmark cost $14.86 in model calls.
How the labels were made
Two models labeled every filing with the same prompt: Gemini 3.8 Flash and GPT-6.1 Terra. Claude Code then adjudicated 339 calls by reading each filing against the written tag definitions. It ruled on every tag either labeler said yes to, every disagreement, and every yes from a tested model that both labelers said no to. Each ruling quotes the filing, and a script confirms the quote appears in it word for word. A tag nobody flagged counts as no.
The rulings came out 146 yes, 132 no and 61 ambiguous. A separate Claude review of 52 sampled rulings found none to overturn. No person reviewed the labels.
Three judgment calls shape the labels. A company that doubts it can continue as a going concern but has no debt is left out of the financial distress score. Medical device makers are not tagged biotech. Guidance narrowed to a range with a lower midpoint, as in one EDAP earnings release, counts as lowered guidance.
Limits
- Gemini 3.8 Flash and GPT-6.1 Terra made the labels and Claude adjudicated them, which could favor those model families. A tag both labelers missed was caught only if a tested model flagged it.
- Coverage is thinner than planned, with 62 true priority tags. Raised guidance, going-concern warnings, financial distress, pending acquisitions, lowered guidance and record revenue carry most of the priority score.
- Earnings filings stop at 55,000 tokens, which leans toward smaller companies. The long-filing check is the only test above that.
- These are November 2026 model versions with one prompt. A different prompt could change the order.
Models and providers
| Model | Version | Served by | Median time per filing |
|---|---|---|---|
| DeepSeek V4.1 Flash | deepseek/deepseek-v4.1-flash-1017 | DeepInfra | 22.2 s |
| Qwen 3.8 Flash | qwen/qwen3.8-flash | Alibaba | 47.0 s |
| GPT-6 Luna | openai/gpt-6-luna | OpenAI | 12.2 s |
| Gemini 3.8 Flash | google/gemini-3.8-flash | 17.3 s | |
| Claude Haiku 5.5 | anthropic/claude-haiku-5.5 | Claude Platform on AWS | 12.4 s |
| Gemini 3.5 Flash-Lite | google/gemini-3.5-flash-lite | 6.9 s | |
| GPT-6.1 Terra | openai/gpt-6.1-terra | OpenAI | 11.8 s |
| Clef | cloudflare/clef | Cloudflare | 4.5 s |
| Jev 1.14 | typesafe/jev-1.14-20261014 | TypeSafe | 0.4 s |
| Gemini 3.1 Flash-Lite | google/gemini-3.1-flash-lite | 4.8 s |
Not run: Muse Spark 1.3 Contributor. Its only provider may train on prompts, and our gateway account blocks providers that do. GLiDE. No gateway we use carries it. It needs a separate account, and it bills each filing once per tag.
The dataset
The download holds 80 filings with their labels and evidence, the prompt, the scoring code and every model's raw answers. Another 20 filings are held out so future models can be tested on filings they have not seen. Their scores count in the tables above, but their text is not published.
SHA-256 6fe6d397e2005ed8e6fbf6c6107d97d99508ac5367e84b2cd7bd247653047250