How I built ExhibitKit

ExhibitKit turns a raw message export into a clean, court-ready PDF exhibit - entirely in your browser, with a SHA-256 integrity hash on every page. This page is the technical overview: what it's made of, the decisions behind it, and where it's headed. The whole project is open source on GitHub.

Built with

Security: your files stay local

The core promise is that your messages never leave your device, and it isn't a policy you have to take on faith - it's enforced by how the site is built:

Forensics: SHA-256 hash verification

A digital exhibit is only as good as its tamper-evidence. When you load a file, ExhibitKit computes the SHA-256 hash of the original bytes and prints that fingerprint on the cover, in the declaration, and in the footer of every page. Anyone - opposing counsel, a clerk, a judge - can later drop the same source file into the verify page and confirm the hash matches, proving the exhibit was built from exactly that file and nothing was altered after the fact. The hashing is deterministic and runs the same in any modern browser.

AI: on-device machine learning (the Review Lab)

The most technically involved part of the project is the optional AI Review Lab - and it runs real machine learning entirely in your browser, with no server and nothing uploaded.

And just as deliberately, the exhibit builder itself uses no AI. Court evidence should be deterministic and auditable, so categorizing, hashing, redacting and PDF generation are all plain, inspectable code. The Lab is a separate, optional review aid - it never touches the exhibit PDF and never judges the strength of a case. Knowing where machine learning belongs (helping a person find relevant messages) and where it doesn't (formatting sworn evidence) was one of the core design decisions of the whole project.

UX: simple evidence organization for non-technical people

Most people who need this are not engineers - they're self-represented litigants, fraud victims, or busy paralegals. So the builder is a plain four-step wizard, and a few touches do the heavy lifting:

What's next

The direction I'm most excited about is growing the on-device AI: larger or multilingual embedding models as browser ML matures, optional local summaries of a conversation, and smarter grouping - always running on the user's device, always a review aid rather than a judge of the case. On the builder side: more export formats and richer redaction tooling. The builder stays deterministic and AI-free by design.

Want the short version of who and why? See the about page.

Build your exhibit