DueproofGitHub

Evaluation

Dueproof is rule-based, which makes it predictable — and makes it miss things your documents phrase differently. Measure it on your own documents before you rely on it.

Labels

One JSON object per line, one per document:

{"file": "notice.pdf", "received_on": "2026-10-24",
 "obligations": [{"quote": "directed to explain the discrepancies",
                  "due_date": "2026-11-23", "desks": ["GST & Indirect Tax"]}],
 "not_obligations": ["Failure to reply will attract"]}

A quote is any distinctive part of the sentence; spacing, case and punctuation do not matter. due_date and desks are optional per obligation.

The cheapest way to get labels is to use Dueproof and correct it. Every correction — a due date fixed, a desk changed, a finding marked Not a duty — is a label:

dueproof labels export labels.jsonl        # documents someone has reviewed
dueproof labels export all.jsonl --all     # every document

Running it

dueproof eval labels.jsonl --docs folder-with-the-pdfs
Metric Meaning
precision of the obligations Dueproof found, how many are real
recall of the real obligations, how many Dueproof found
deadline_exact labelled due dates reproduced exactly — off by one day counts as wrong
desk_top1, desk_top3 the right desk first, or anywhere in the top three
false_confident findings marked exact or strong whose outline does not cover the quote. This must be zero: a confident box in the wrong place is the one failure Dueproof exists to prevent.
labelled_non_obligations_flagged sentences you said are not duties, that Dueproof flagged anyway

Add floors to make it a gate, for CI or before upgrading:

dueproof eval labels.jsonl --docs docs/ --min-precision 0.9 --min-recall 0.8 \
    --min-deadline 1.0 --max-false-confident 0

The project's own CI runs this on the fictional fixture corpus in tests/fixtures/ — currently precision 1.0, recall 0.78, deadlines 1.0, false-confident 0. Those numbers describe five documents written by the authors; your documents are the only honest measure.

Improve this page on GitHub