hub
What we check, and what each check means
Seventy checks run against a production. Each one is a deterministic read of the files - the stamps on the pages, the structure of the PDF, the rows of the load file - and each returns a pass, a warning or a blocker with the file and page it came from. Nothing here is a model's opinion, and nothing here is claimed on the certificate unless it actually ran.
Every guide
How to read this page
The catalogue below is generated from the engine itself, so it lists what actually runs rather than what a brochure says runs. A check marked free runs on the single-PDF check with no account. The rest run on a production audit, which is free to run and paid only when you want the documents that let somebody else rely on the result.
The three things only a set can show
This is why the single-file check is an on-ramp rather than the product. It answers the first question most sets raise - is this page searchable, is this stamp where it should be - and it cannot answer the questions that cost a re-serve.
- **Continuity between files.** A single PDF cannot show that volume two starts at the number volume one ended on, or that it starts at a number already used.
- **Reconciliation with a load file.** A DAT row that points at an image nobody exported is invisible until the rows and the folder are compared.
- **Family and set-level repetition.** An original beside its OCR copy, a redacted export beside its working copy, two volumes that overlap - all of them are properties of the collection, not of any one document.
What no check on this page does
- It does not decide whether the right documents were collected, or whether a document is privileged.
- It does not verify that a correctly burned redaction hides what it should, or that OCR recognised the right words.
- It does not read the documents for meaning, and it does not produce a legal opinion.
- It does not modify, stamp, convert or repair anything: every input is hashed before and after the run, and a run that changes an input fails.
Every check, by family
Read from the engine rather than typed: 70 checks in 9 families, with the ones the free single-file check runs marked. A rule that is not on this page is not running on your set.
Bates numbering 13
A number that skips, repeats, runs backwards, or changes prefix or digit width mid-set.
- A number is missing from the sequence. free check
- The same number appears twice. free check
- A lower number follows a higher one.
- The prefix changes mid-file.
- The number width changes mid-file.
- Numbering does not continue between files that share a prefix. Order is inferred from the stamps, so this is a warning, never a blocker.
- The documents are numbered in a different order from their own filenames.
- The number span does not match the page count.
- Numbers are missing and nothing says why.
- A declared gap matches no hole in the set.
- The same pages carry two numbering schemes, so a citation to either is ambiguous.
- The same prefix uses different digit widths in one set (ABC-1 and ABC-000001).
- Bates-like stamp text is extractable from the page text layer. free check
Load files 12
DAT and OPT rows, the images they point at, and the document breaks they claim.
- A load file has rows with ragged field counts.
- A DAT file uses an unsupported delimiter.
- A load file cannot be decoded as UTF-8 or CP1252.
- A load file could not be parsed.
- DAT row references a missing file or image.
- A load-file path differs from the file only by case.
- File in set is not in the load file.
- OPT document break mismatch.
- A DAT page range does not match its page count.
- OPT page counts do not match the PDFs they reference.
- Broken parent/child attachment relationships.
- Several documents were produced with no load file at all.
Set integrity 5
The things only visible across files: volumes that overlap, files that repeat, an original beside its OCR copy.
- A gap exists between adjacent production volumes.
- Adjacent production volumes overlap.
- Duplicate Bates across volumes in load file.
- An original and its OCR copy are both present.
- An identical file appears twice. free check
Redaction 5
Text that survives the box: a leak, a mark never applied, a highlight used as a redaction, the unredacted twin.
- Text layer is extractable underneath an unburned or un-flattened redaction. free check
- A redaction was marked but never applied, so the text is still readable.
- A highlight was used where a redaction was meant: the text is still there.
- A redacted document and its unredacted version are both in this set.
- A page carries a redaction but not the words the protocol requires beside it.
Text layer and searchability 6
Pages no search can reach, and stamps that print where they should not.
- A scan that was never OCR'd. free check
- Some pages searchable, some not. free check
- A text layer that holds only the stamp, not the page. free check
- Text layer contains glyphs that failed to encode.
- Text layer looks like OCR that resolved nothing. free check
- A Bates stamp prints over body text, or sits close enough to the page edge to be clipped.
File health 13
Encrypted, empty, unparseable, mislabelled files, and what travels inside them.
- The PDF cannot be parsed at all. free check
- The file is empty. free check
- Password-protected file. free check
- A file in a PDF production that is not a PDF.
- A page with nothing on it.
- Mixed page sizes in one file. free check
- Pages rotated away from upright. free check
- Comments or markup travel with the file.
- Attachments hidden in the PDF.
- Script in a document that should be inert.
- Authoring metadata that can identify the firm.
- A file still says it is a draft.
- Page is a placeholder or slip sheet.
The document's own words 4
Opt-in only: the checks that read what the page says rather than how it is built.
- A page still carries an instruction not to produce it.
- A page is marked privileged or work product.
- A page carries identifier-shaped numbers.
- A word you asked us to look for is on the page.
Privilege log 2
Whether the log accounts for the pages that are not in the set.
- The privilege log is missing a column the other side needs to review the claim.
- The privilege log does not line up with the numbers missing from the set.
The agreed protocol 10
Checks that run only when you enter the protocol: prefix, width, page size, legend, filenames, the transmittal.
- The transmittal's page count is not the set's page count.
- The transmittal's document count does not match the set.
- The transmittal's Bates range does not end where the set ends.
- A page is numbered with a prefix the spec does not allow.
- A page is numbered with a different digit width than the spec.
- A page is not the page size the spec names.
- The confidentiality legend the spec requires is not on the page.
- A load-file column the spec requires is missing.
- A file is named differently from the pattern the protocol fixes.
- A stamp reuses numbering from an earlier production.
Frequently asked questions
How long does a production audit take?
The check is bounded work over the pages and the load file, and it runs while the upload is still warm - seconds to a couple of minutes for a normal production, depending on page count and how many pages need glyph-level reading. There is no queue and no expedite purchase, because there is no queue to jump.
Can I run one check without the rest?
There is no per-check purchase, and that is deliberate: the failures interact. A Bates gap is explained by a privilege log row, a page-range mismatch is caused by a dropped page, and a load-file orphan explains a document the review never saw. Selling one check would sell a verdict that is wrong for reasons the buyer cannot see. Running all of them costs the same as running one.
What do the three severities mean?
A blocker is a defect that will be visible to the other side or will break an import - the set should not be served as it is. A warning is a fact that may be intentional, such as a page withheld for privilege; the wording says what it costs. Information records something that was read and found consistent, including a gap you declared.
How is this different from asking a chatbot to review a production?
A general model reads what you paste into it. It cannot read a load file and resolve every row against the images, count the pages of a stamped volume, compare glyph positions to see whether a stamp covers a line of text, or issue a certificate somebody else can check. Every finding here comes from the bytes of the file, and the manifest hashes the set the verdict was issued against.