Report Extract

2026-07-23 03:19 UTC · 2664bd8

About this benchmark

Extracts the header facts of a real equity research report (publisher, date, report type, subject, ticker, recommendation, currency, share and target price, previous target, shares issued, market cap), plus three lists: the credited analysts, the major shareholders, and any peer or sector comparison table.

These are dense multi-column PDFs with tables, disclaimers and footers, and the facts are scattered across pages rather than sitting on page one. The hard part is not reading but discipline: not attributing a peer company’s rating or target price to the subject, crediting only the report’s own authors, and leaving fields null when the document simply does not state them. Fields are weighted, with target price counting heaviest.

Test data

  • dialog-uobkh: UOB Kay Hian company report on Dialog (DLG MK), 4 pages, BUY with a MYR 2.70 target against a MYR 2.29 share price. No previous target stated.source document withheld
  • greatec-maybank: Maybank company report on Greatech, 10 pages, the longest document in the suite. BUY, with the target raised from MYR 2.40 to MYR 3.66, so both the new and the superseded target must be picked up.source document withheld
  • plantation-mbsb: MBSB sector report on Plantation, 5 pages, POSITIVE. The null-discipline case: a sector report has no ticker, no share price and no target price, but its comparison table is full of per-company ratings and targets waiting to be mistaken for the subject’s.source document withheld

Results

8/10 targets scored · 9 trials each · $1.87 total

Cost vs latencylower-left is better
Latency & costshorter is better
TargetScoreStddevLatencyTok/sCostErrors
bestGeminigemini-3.6-flash@google-ai-studio100.00.07s177.4best$0.13000/9
Geminigemini-3.5-flash@google-ai-studio100.00.011.5s126.9$0.16510/9
OpenAIgpt-5.6-terra@openai100.00.0best4.5s50.6$0.61960/9
Grokgrok-4.5@xai3 field missesdialog-uobkh: major_shareholders.0.name (2/3)plantation-mbsb: analysts (1/3)99.01.59.6s108.2$0.33920/9
Geminigemini-3.5-flash-lite@google-ai-studio5 field missesdialog-uobkh: currency (3/3)plantation-mbsb: currency (2/3)98.31.52.7s105.3$0.01570/9
Qwenqwen3.7-plus@alibaba6 field missesdialog-uobkh: currency (3/3)dialog-uobkh: publisher (1/3)plantation-mbsb: currency (1/3)plantation-mbsb: target_price (1/3)96.93.639.6s44.8$0.16190/9
OpenAIgpt-5.6-luna@openai9 field missesplantation-mbsb: peer_ratings (1/3)plantation-mbsb: peer_ratings.0.name (1/3)plantation-mbsb: peer_ratings.0.recommendation (1/3)plantation-mbsb: peer_ratings.0.target_price (1/3)plantation-mbsb: peer_ratings.3.name (1/3)plantation-mbsb: peer_ratings.3.target_price (1/3)plantation-mbsb: peer_ratings.6.name (1/3)plantation-mbsb: peer_ratings.6.recommendation (1/3)plantation-mbsb: peer_ratings.6.target_price (1/3)96.410.25.8s56.7$0.25320/9
Claudeclaude-haiku-4.5@anthropic41 field missesgreatec-maybank: major_shareholders.2.stake_pct (1/3)plantation-mbsb: currency (1/3)plantation-mbsb: peer_ratings (3/3)plantation-mbsb: peer_ratings.0.name (3/3)plantation-mbsb: peer_ratings.0.recommendation (3/3)plantation-mbsb: peer_ratings.0.target_price (3/3)plantation-mbsb: peer_ratings.3.name (3/3)plantation-mbsb: peer_ratings.3.target_price (3/3)plantation-mbsb: peer_ratings.6.name (3/3)plantation-mbsb: peer_ratings.6.recommendation (3/3)plantation-mbsb: peer_ratings.6.target_price (3/3)plantation-mbsb: recommendation (3/3)plantation-mbsb: report_type (2/3)plantation-mbsb: share_price (2/3)plantation-mbsb: subject (2/3)plantation-mbsb: target_price (2/3)plantation-mbsb: ticker (1/3)80.428.25.4s42.3$0.18080/9
Z.aiglm-4.6v@z-aierrorprovider "z-ai" does not support the structured output this eval requires (404 Not Found)n/an/an/an/a$0.00009/9
Z.aiglm-5v-turbo@z-aierrorprovider "z-ai" does not support the structured output this eval requires (404 Not Found)n/an/an/an/a$0.00009/9

Note

  • report-extract re-run at 3 trials over 3 cases: 10 targets, 90 results, $1.87. First run with cache busting on (cache_bust: true in the config), so every trial pays cold-cache prices. Replaces the report-extract numbers from 2026-07-22-4e1d7ed, a warm-cache run since removed.
  • Roster change against that run: kimi-k2.6 dropped. Nothing else moved.
  • The busting shows in the money, not the scores: every target reports 0 cached prompt tokens except grok-4.5 (55,040, of which 54,272 land on a single plantation-mbsb trial; xAI's cache is evidently not prefix-keyed). gpt-5.6-terra's nine perfect calls now cost $0.620 against $0.289 in the warm run; the old figure was cache-flattered.
  • Both pinned @z-ai targets still fail all 9 attempts with 404 No endpoints found, unchanged since the last run. Dead weight until dropped or routed unpinned.
  • Three targets are perfect: gemini-3.5-flash, gemini-3.6-flash and gpt-5.6-terra at 100.0. grok-4.5 99.0 (±1.5) misses major_shareholders.0.name on two dialog-uobkh trials plus analysts once; gemini-3.5-flash-lite 98.3 (±1.6) misses only currency, 5 of 9 trials.
  • qwen3.7-plus 96.9 (±3.6), up from 86.3: no block collapse this run, just currency on all three dialog-uobkh trials and two scattered singles, at 39.6s per call against 2.7s to 11.5s for everything above it. gpt-5.6-luna 96.4 (±10.2) is perfect except one plantation-mbsb trial at 68 that dropped the peer_ratings block.
  • claude-haiku-4.5 80.4 (±28.2) is the laggard: 62/32/32 on plantation-mbsb, losing the whole peer_ratings block on all three trials plus recommendation and target_price on two.

Conclusion

The ranking survives cold caches intact, which settles that the earlier numbers were honest on accuracy and flattered on cost. gemini-3.5-flash-lite stays the pick at 98.3 for $0.0157 and 2.7s per call, an eighth of the $0.130 that gemini-3.6-flash, the cheapest perfect target, now costs. Its one defect is still currency, though at 5 of 9 trials it has gone intermittent, which weakens the fixture-problem reading; terra's true price is $0.620, not the $0.289 the warm run suggested.

The failures left in the table split two ways. haiku's 80.4 averages clean cases against a plantation-mbsb where the peer_ratings block vanishes every trial. The mean hides a case it cannot do, so it is unsafe for these documents rather than merely behind. qwen's jump to 96.9 with no block collapse suggests its old 86.3 mixed in the same instability; one more run would say which number is the model. The pinned @z-ai targets remain unable to serve the scenario at all.