earnings-desk ← Kechun Wu's portfolio

Accuracy scorecard

How often the AI note is right, measured by code against SEC filings, and how often the verifier catches deliberately injected errors. Computed offline by scripts/scorecard.py; no AI is used to grade.

Company-quarters
50
10 tickers × last 5 quarters
Numeric claims verified
99.6%
of 734 numeric claims (494/497 against XBRL, 237/237 against the cited press-release text)
Quotes matched verbatim
85.7%
of 70 quotes
Injected errors caught
100.0%
of 1957 injected errors

1001 claims in total: 791 verified, 193 sourced, 13 mismatch, 4 unsupported.

Numeric accuracy

Quarter typeClaimsVerified %Mismatch %
Q1-Q359399.50.5
Q4 (derived from 10-K)141100.00.0

Q4 figures are derived (full year − 9-month YTD from the 10-K), so they are the riskiest numbers in the data layer.

Does the verifier catch errors?

Each verified claim is corrupted in a known way and re-checked. Injections that happen to produce a true statement (e.g. the same value in both periods) are skipped.

Injected errorInjectedCaughtCaught %
value +5%491491100.0
value −5%491491100.0
wrong unit188188100.0
wrong period493493100.0
QoQ/YoY swapped234234100.0
quote word changed6060100.0

Caveat: injection tests check the verifier's own logic (units, periods, rounding, quote matching) against the same XBRL data it uses. They cannot reveal a wrong number in the SEC data itself, or a misleading qualitative claim. That is what the hand-graded sample is for.

Hand-graded sample

Not graded yet. A random sample of 20 claims is in hand_grade.csv; each is being checked by hand against the filing (correct / incorrect / unsure).

Where it fails and why

quote paraphrased, not quoted (10)

The model was asked for a direct quote but wrote a paraphrase ("the CEO described the quarter as strong"). Nothing false is said, but a reader can't see management's actual words, so it doesn't count as a verified quote.

rounding at the boundary (3)

The model rounded a number the wrong way at the edge, e.g. writing 21.9% when the true value is 21.846%. The error is tiny, but the verifier is strict on purpose: a stated number must be a correct rounding of the filed value. Early notes were partly caused by our own inputs (growth rates sent to the model at 2 decimals, which it then rounded again); inputs now carry 4 decimals.

number not in cited paragraph (2)

A number (often in a qualitative sentence, e.g. "RPO was flat at $4.9 billion") doesn't appear in the paragraph the model cited. The number may even be right, but the citation doesn't support it.

nothing checkable (bad metric, period or citation) (2)

The claim cites something that doesn't exist, so it can't be checked.

Verifier bugs found by reading the results. Reviewing every flagged claim turned up false alarms that were the verifier's fault, not the model's, and were fixed: sentences split across HTML blocks; quotes checked against the value field instead of the words in quotation marks; and cash outflows read as a sign error (which alone made April fiscal-year companies look worse). Each fix has a test, and the injected-error catch rate is re-checked after every fix so the verifier isn't loosened.

What the verifier can't check. Whether a qualitative claim (◦) is a fair reading of its paragraph, and whether the note leaves out something important. Those still need a human reader.

Read the research note →