Any corpus

Domain-independent core. Thin domain packs.

“Works for any documents” is only credible if onboarding a new vertical is a configuration pack rather than a fork of the product. That constraint is enforced in the code, not asserted in a diagram.

The split

The core knows nothing about any industry. Ingest, chunking with byte offsets, hybrid RAG retrieval, the grounding contract, verification, the LangGraph review gate — none of it contains a word about security, finance, or medicine.

A pack supplies exactly four things and nothing else:

Loaders

The formats this vertical actually arrives as. Scanned PDFs, Confluence exports, spreadsheets, contract sets.

Artifact template

The deliverable. A compliance audit reads nothing like a technical RFC.

Domain framing

Vocabulary and context. It cannot relax the grounding contract — the core enforces that regardless of what a pack says.

Its own gold set

An evaluation set for that vertical, including questions the corpus deliberately cannot answer.

The rule that keeps it honest

If adding a vertical ever requires editing the core, the pack interface is wrong and gets widened. It does not get worked around. That is what makes “any corpus” checkable rather than a claim.

The packs

PackDocumentsDeliverableStatus
cyber Security policies, SOC 2 reports, pen-test findings, CIS & NIST controls Security questionnaire responses · control-gap assessment First
fintech SEC filings, AML/KYC policy, card-network dispute rules Regulatory compliance audit Designed
saas Confluence wikis, pull requests, incident post-mortems Technical RFC · architecture guide Designed
health Clinical trial documents, FDA guidance, insurance policy Medical policy brief Designed
legal Vendor MSAs, IP filings, contract clause libraries Due-diligence brief Designed

Built means running against real documents with measured behaviour. Designed means the interface exists and the pack does not yet. We would rather tell you which is which.

Why cybersecurity went first

Not because it is the largest market. Because it has the sharpest version of the problem: a customer security questionnaire is answered in writing, signed by a named person, and read later by someone deciding whether to trust you. Inventing a control you do not have is not an embarrassment — it is a misrepresentation.

It is also a domain where the right answer is frequently “our documents don’t say”, which most systems are structurally incapable of producing.

Evaluation is per pack, and reported honestly

Each pack carries its own gold set. Four numbers, reported separately and never averaged into one score — each fails in a different direction, and a combined figure hides which.

MetricQuestion it answers
Grounding rateOf the claims made, how many carry a quote that resolves?
Retrieval hit@5Of answerable questions, how often was a supporting document in the top five?
Correct refusal rateOf unanswerable questions, how often did it decline?
Fabrication rateOf unanswerable questions, how often did it answer anyway? Must be zero.

Why fabrication rate is separate

A fabricated answer can score 100% on grounding: the invented claim is perfectly “sourced” to an irrelevant passage. Averaged into one number, that failure disappears entirely. The unanswerable half of a gold set is the valuable half.

No number appears in our materials until the harness prints it on a real corpus. Where we have not measured, we say so rather than estimate.

What onboarding a corpus involves

  1. Point it at the documents. Ingest runs offline; extracted text is stored so every citation can be re-verified later.
  2. Meet the mess. Scanned pages, inconsistent headings, tables that defeat parsers, internal jargon. This is the real work, and it is why a deployment involves an engineer rather than a signup form.
  3. Build the gold set with you. Questions you already answer, plus questions your documents deliberately do not cover.
  4. Measure, then tune. The numbers come from your corpus, not ours.