For courts · submissions and drafts · local
Citation checking for party submissions and draft judgments. Entirely local.
Party submissions arrive as PDF. A program on the court's workstation or server reads them, finds every citation and every quoted passage, checks them against 1.07 million decisions and 21,000 statutes, and writes a report: which cited decisions do not exist, which passages or quotations differ from the decision's text, and where a "not in the corpus" was to be expected. The same check covers the draft judgment as a Word file before circulation. Nothing leaves the court. No account, no cloud, no logging.
Data sovereignty stays with the court
A submission contains the parties' personal data; before anonymisation, a draft judgment is the most confidential document in a case. The architecture is therefore built so that the court gives nothing away: no data, no control, no dependency.
Nothing leaves the court
Submission, draft, citations and report stay on the court's devices. The provider never sees a submission or a draft. A network-block test proves it: a full check runs without a single connection attempt.
The court holds the data
The corpus is a file at the court. The data is public domain (CC0), the code is open source (MIT). The court may inspect, copy, archive and reuse both, without a licence and without an expiry.
Court IT decides how it runs
When the weekly pack is fetched, from which mirror, and whether it is fetched at all, is the court IT department's decision. Every pack carries a checksum. Without a network everything keeps working on the last snapshot.
No disclosure of personal data
No processing by a third party: so no processor agreement, no impact assessment, no legal basis needed for a disclosure. This holds for the workstation and for a server inside the court's network alike.
No lock-in
If the provider disappears, the program keeps running and the court keeps the data and the code. What is sold is the operation: signed installers, pack mirror, support, calibration. Not the content.
Verifiable
Every line of the program is public. What leaves the device is written down in a data-flow statement that court IT can check against the source code.
Party data stays party data
Submissions contain the parties' personal data, including sensitive data. The program processes them only on the court's devices, like the case file itself; no third party receives them. The check therefore needs no legal basis for a disclosure.
Checking submissions
Courts report submissions written with language models that cite decisions which do not exist, or considerations with wording found nowhere. Such citations look right: volume, page and consideration have the expected form, only the decision is missing. Checking by hand means looking up every reference one by one. The program does that for every citation in every submission, in seconds.
The PDF submission, or a folder of submissions, is dropped on the shortcut or handed over by right-click. The program writes one report per submission and, for the folder, an index with the submissions that have findings at the top. PDF/A from electronic filing (justitia.swiss) is read directly. Scanned submissions without a text layer need optical character recognition (OCR) first.
For every citation the report says three things: whether the decision exists, whether it is the one meant (date, docket, consideration) and whether the quoted passage appears as such in the decision's text. It never says whether the argument holds. "Not in the published corpus" is qualified by coverage: in the official collection, an absence is not to be expected. For a court that publishes only part of its decisions, for an unpublished decision and for the decision under appeal it is, and the report says so in place.
What the program does
A right-click on the file is all it takes, for the PDF submission and the Word draft alike. After a few seconds the report sits next to it and opens in the browser: what exists, what needs attention, and what to do.
| Check | Result in the report |
|---|---|
| The cited decision exists and is the one meant: BGE, BGer, BVGer, BStGer, cantonal courts | exists, not in the corpus, ambiguous |
| The cited consideration (E. 3.2) exists in the decision | passage retrieved, not indexed |
| The quoted passage matches the decision's text | verbatim, differs (with the differences), not found, not checked |
| Date and docket next to the citation match the decision | differs (as written versus the decision) |
| Statute articles exist in the act: Art. 8 para. 1 ZGB, art. 335 al. 1 CO, § 12 StG/ZH | found, article missing, act unknown |
| Citation-like strings that could not be checked | listed separately, so no gap stays silent |
It does not check whether a decision supports the proposition, whether the case law has since changed, or whether the draft is anonymised. The program checks existence, identity and wording; it does not replace reading. For courts that publish only part of their decisions, the report says so explicitly: "not in the published corpus" is not "cited wrongly". A court's own unpublished decisions and the decision under appeal are in no corpus.
What a finding looks like
Excerpt from the report on a test submission (appeal brief as PDF) with thirteen citations, checked in five seconds.
The corpus
| Content | Size |
|---|---|
| Decisions, 1875 to today, 118 courts and authorities | 1'070'000 |
| Decisions with numbered considerations indexed | 76 % |
| of which Federal Supreme Court / Zurich Obergericht | 88 % / 96 % |
| Federal acts (Fedlex) | 5'500 |
| Cantonal acts | 15'600 |
| Local verification pack, renewed weekly | ≈ 9 GB |
The same corpus that this overview lists court by court. For courts with their own server: the full corpus with full-text search (about 135 GB) inside the court's network.
Operation
- Court IT installs the signed package under Program Files. Only the runtime signed by the Python Software Foundation runs; no third-party binaries, no compiler.
- Court IT fetches the verification pack once a week from the mirror, checks the checksum and drops it on a share. Workstations take it from there. No workstation needs the internet.
- The clerk selects the submission or the draft, starts the check via "Send to" and reads the report. The report is as confidential as the checked document and sits next to it.
On macOS the same check is available as a command-line tool (ocl); the Windows installer is meant for courts whose IT allows no Python environment on workstations.
Three-month pilot
The court provides two hundred of its own published decisions as a test set. The provider calibrates the recognition to the court's citation style, measures the recall and delivers a measurement report. Then the court decides. No submissions and no drafts are exchanged.
Contact: Jonas Hertner, about OpenCaseLaw.
Corpus figures as of 6 September 2026. The data flow can be checked against the source code (clients/python).