How a check runs
1
Fetch the label
The label comes from DailyMed by brand name or set id. Its sections and table rows are split into sentences, each with a citation such as §14.1 ¶12. See Labels and citations.
2
Extract claims
Claude lists every claim and quotes it exactly. A quote that does not appear in the piece is dropped, so the model cannot invent a claim to judge. For each claim it also writes a search query in label vocabulary: “atopic dermatitis” for eczema, “chronic spontaneous urticaria” for hives.
3
Find candidate sentences
A local keyword search (BM25) ranks the label’s sentences against the claim and its query, and keeps twelve. Results tables can take at most two of those slots, and indication claims always see every indication in section 1.
4
Judge
Claude gives a verdict and must cite the sentences it rests on. Citations to sentences it was not shown are discarded, and a claim judged supported with no valid citation becomes unsupported. See Verdicts and exit codes.
5
Run the rule pack
Rules run without a model: required safety information, banned superlatives, length limits. See Rule packs.
Reading the report
--json prints the same report with the full text of every cited sentence.
Checking against an older label
--label-version judges the piece against a past label, which is how you find out what a piece was approved against. --save writes the report next to the piece as email.html.check.json, which Watch reads later.
Limits
- Check reads text. It cannot yet judge what an image implies.
- It knows the label and nothing else. A claim backed by a publication or data on file will come back unsupported; that verdict means “not in the label”, not “false”.
- Each check makes one extraction call and one call per claim. Five claims take about twenty seconds.