Inspiration

A citation is not proof that a statement is supported. A draft can contain the wrong quotation, amount or date even when its source exists. An earlier human review can also become outdated after the draft or exhibit changes.

RecordCheck focuses on that second problem as well as the first: keeping human review tied to the exact material reviewed.

What it does

RecordCheck helps a legal reviewer inspect factual draft statements against text exhibits.

Its three core capabilities are:

  1. Import a structured JSON matter containing claims, text exhibits and exact source-line references.
  2. Flag missing references, quotation mismatches and literal discrepancies involving ISO dates or SGD amounts.
  3. Record reasoned human review or exclusion decisions, mark them stale after relevant changes, and export a review packet that retains unresolved items.

The demonstration moment is simple: review a claim, change its cited exhibit, and watch the previous review become stale.

RecordCheck does not automatically declare that a claim is factually or legally correct.

How it was built

The application uses TypeScript, JavaScript, HTML and CSS, with a dependency-free Node.js 24 build that produces a self-contained HTML file.

Deterministic rules perform the checks. SHA-256 fingerprints bind review records to the relevant matter, claim and source revision. These fingerprints track changes; they do not authenticate evidence or reviewer identities.

The application makes no model or API calls, uploads no documents to a server, and does not persist matters in browser storage. Users explicitly export files when they want to retain their work.

Challenges

The main engineering challenges were reliable review invalidation, strict input validation, safe rendering of imported text, and preventing state from carrying between matters.

Browser testing also exposed an amount-parsing bug involving sentence-final punctuation. It was corrected and covered with dedicated regression tests.

Accomplishments

The tested local build passed:

  • 43 unit and regression tests.
  • 19 browser checks, including real exports, source-change invalidation, matter isolation, mobile layouts and direct local-file use.
  • Strict TypeScript checking and the production build.

The final browser run recorded zero external requests and zero browser errors.

In a nine-case synthetic evaluation, RecordCheck flagged seven planted structural or policy issue cases; a simple source-ID-exists baseline flagged two. Five relevant revision changes invalidated all five corresponding prior reviews.

These are small synthetic software evaluations, not general legal-accuracy or productivity claims.

What we learned

Exact text matching is useful, but it cannot establish semantic support. An intentional counterexample contains a matching quotation that does not justify the drafted assertion. RecordCheck leaves that judgment to the reviewer.

The useful output is therefore not an automatic “correct” verdict. It is a traceable review record whose status changes when its underlying material changes.

What's next

Validate the workflow with legal reviewers and measure the burden of entering claims and references. Depending on that evidence, explore PDF/Word ingestion, authenticated reviewer identities and controlled team handoffs.

Current scope and AI disclosure

The verified deliverable is a locally tested prototype, not a production legal system. Reviewer labels are self-attested, and no lawyer-led validation or strong-LLM benchmark was performed during this build.

AI assistance was used for research, implementation, documentation and test creation. No generative model runs inside the application. All demonstration matter data is synthetic, and no code from the supplied repositories was reused.

Built With

Share this project:

Updates