Redact Mr. Chris P. Bacon[Person1] before the document leaves your machine.

Swap the names in a legal document for tags, check them, then hand it to any AI. The redaction runs on hardware you own: 46 unseen SEC-filed business agreements, zero identity leaks across four consecutive fresh draws. 45 of those documents ran the engine as it stood before it was frozen, and one ran the frozen engine. Court judgments and a firm's own filings are harder, and the evidence says by how much. Nothing exports until you finish the review.

Free · Apache-2.0 · no account, no server of ours, no telemetry · v0.1.0 for Windows, not code-signed

The Drop screen of Simpler Legal just after launch, while it looks for the local engine: a drop sheet for PDF, Word and plain-text files, a line saying nothing has left this machine this session beside a link to the network record, the Drop, Review and Export steps, a counter reading 0 requests off this machine, and an offer to try it on a sample NDA.
⚠NO API KEY · NO ACCOUNT · NO SERVER OF OURS

The core claim, live

Ink hides. Deletion removes.

Ink drawn over text leaves the text in the file, one copy-paste away. Both documents below are real text on this page. The right-hand one is an illustration written in the export's tag format, not a recorded engine run.

Try it — select either document, copy, paste below
How redaction usually works — ink drawn over text
Dear Mrs. Margaret Ellison, further to your instruction of 12 March, we confirm settlement from account 7449-2210-0031 and registration of the property at 14 Belmont Road in your name.
The names are still in this page — your selection just proved it.
What a Simpler Legal export looks like — text replaced, then rebuilt
Dear [Person1], further to your instruction of 12 March, we confirm settlement from account [Id1] and registration of the property at [Address1] in your name.
Nothing to find — the name isn't hidden here, it isn't in here. View-source this page: same result.

It works on the left document. It has nothing to work on in the right one.

Simpler Legal never draws boxes over your document. Everything it redacts is deleted from the text and replaced with a tag, and a text export is a new file rebuilt from the cleaned text. A .docx export rewrites your original Word package instead, and is held back if a check of the finished file finds a listed name still in it. That check has blind spots, and the IT brief lists every one. Tags follow spellings, not people: one person can carry two tags, and a bare [Person] does not tell people apart, so read the copy before you send it. The map from tags back to names is a separate file that never exports with the document unless you explicitly say so.

Why local isn't a feature toggle

Your laptop becomes the AI server.

"AI" has meant "send it to a data center" for so long that local sounds like a setting. It isn't — it's the direction of travel reversed. Your documents don't go to the AI. The AI comes to you.

A cloud AI tool — the document travels
someone else's computer
Your document travels to their machine. Their hardware reads it and their terms decide what is kept, and for how long — and your client's name is in it.
Simpler Legal — the AI moved in
127.0.0.1
The model lives on your disk — one 3.35 GB file, hash-checked when the app starts it. It serves at 127.0.0.1: an address that cannot leave your machine, by definition. The document never touches the wire.

It's the same architecture the AI labs run — a model behind a server — except the server is your laptop and it listens only on 127.0.0.1. That's why there is no per-page pricing, no monthly allowance, no metering: nobody's hardware is doing you a favor. The model is Google's Gemma 4 E2B, not fine-tuned or altered by us. When the app starts it, the file is hashed against the SHA-256 pinned in the repository, the one Hugging Face lists for it at the revision this page links, and a file that does not match is refused. Length has a practical limit: in testing, documents of about 60,000 words ran for about 14 minutes and returned nothing, twice, and nothing yet records why.

The corridor

Four steps, all local

The redaction is four steps, each on this computer. Beside it, the app has three tools for the documents you've added and three settings the redaction reads.

1

Drop

A contract, a letter, an intake form. It never uploads — there is nowhere to upload to.

2

Redact

A wide sweep finds identities; code removes every copy document-wide; a second pass re-reads the result hunting anything left behind.

Reviewed3

Review

Everything found, in one table, with keyboard shortcuts. The frozen engine flags no row as uncertain, so the reading is yours. Nothing exports until you finish.

4

Export

The redacted copy — plus, separately and only if you ask, the key that maps tags back to names.

On the documents you've added

Compare versions

Line up two versions of a document and see every change in the text, including the ones nobody redlined. It is worked out from the two texts on this computer, and nothing is judged. The Copy the changes button copies the changed paragraphs already masked, each with its own document's tags.

Find across documents

Which of your documents mention a name, a company or a number, from what was marked in each. Click a document to open its review.

Related cases

A map of how cases connect: which cite one another, which rely on the same authorities, which read alike, with the reason for each link. In v0.1.0 it runs on an example library of 99 published US federal appeals opinions that comes with the app, not on your documents.

Settings the redaction reads

Protected terms

Codenames, matter numbers, deal names: words that are confidential because of what they mean inside your firm. Add them once and every document masks them, matched exactly as whole words, even with the AI model switched off.

Practice

Singapore, United States or United Kingdom: which table of identifier patterns runs after the frozen one. Singapore, the default, is the frozen table itself. United States adds Social Security numbers, employer identification numbers and punctuated 10-digit phone numbers; United Kingdom adds National Insurance numbers, NHS numbers and 07 mobile numbers. The receipt names the tables that ran.

Our own matter files

For a firm's own papers, where the client's company is the matter: company names stay masked outside a reported case citation, and more of those citations stay readable. On 20 public filings in a firm's shapes, documents with an identifier left readable fell from 14 of 20 to 8, and citations kept readable rose from 11% to 56%. It needs the local engine running.

The app

The review is the gate

If a run is incomplete, or a masked name is still found in the export, the export is held. The last check is yours: nothing exports until you finish the review, and finishing is your sign-off, not the machine's.

The review screen of Simpler Legal on its built-in sample NDA, which the app labels a fixed demo list, not an engine run: the original and the redacted copy side by side, names, companies, an address, an ID and phone numbers highlighted in the original and replaced by tags such as COMPANY 1 and PERSON 1 in the copy, an entity table grouped by kind, and a count reading 7 decided by you, 7 as marked automatically, 0 waiting on you, above the button that finishes the review.

Review. Original and redacted side by side, every finding highlighted in place. The count under the table keeps apart what you decided and what stands as the machine marked it, and the receipt carries the same split.

The export screen of Simpler Legal after the sample NDA's review: 14 found, 11 redacted in 13 tags, 3 left readable; a check that every name chosen for redaction is gone from the copy; a note that the entities come from the demo set; a receipt whose engine line reads none, fixed demo set; and buttons to copy the redacted text or save it as a file.

Export. The honest funnel, verify-by-extraction plus a partial-name check, a receipt for your records — then copy the redacted text straight into the AI you use, or save it as a file. The original is never touched.

Measured, published, reproducible

The evidence

Every accuracy number in this industry is a sentence you're asked to believe. Ours come with the files behind them: the draw manifests, the gold labels, the scorer and every round's board are committed in the repository, and the exhibits below link to them. The full methodology, per-class results and leak ledger have their own page.

EXHIBIT A

The corpus

Over 260 real public documents — Singapore, US and UK court judgments and SEC agreements — labelled by AI agents we ran ourselves before the engine saw them, and sealed by commit. How far the labels agree with a blind re-judging is measured and published too.

pii-bench/ in the repo

EXHIBIT B

The rounds

Every round draws fresh documents by a fixed rule committed with the draw, and the board publishes as drawn, misses included, each named by class with its diagnosis. The rule was not registered in advance; the research page says when each was committed.

the full measurement record

EXHIBIT C

The freeze

The engine is frozen with a claims table, each claim beside the record it cites. It unfreezes only if an identity leaks in the frozen configuration on real paper, or the maintainer orders it. Where that table and this site differ, the site's wording is the checked one.

FREEZE.md — the freeze and its claims table
MeasurementCorpusResult
SEC-filed business agreements — four consecutive fresh draws, first contact each time 46 unseen EDGAR agreements, 2001–2026 filings: rounds 5, 6 and 7 and the post-freeze probe. 43 of the 46 contain an identity to leak Zero identity leaks — gate 100%. Round 4, the draw before, leaked 3 in 1 of its 15, published as drawn
Court judgments — the hard genre, latest fresh round, published as drawn 25 unseen SG + US judgments 97.7% identity recall · 21/25 leak-free
Jurisdiction transfer — the courts configuration from before the round-6 and round-7 fixes 10 UK judgments it was never tuned for; the frozen configuration has not been run on them 100.0% identity recall — gate 100%
The other direction — what a frontier AI still extracts from the redacted copy 25 round-4 documents masked before the freeze · 125 questions, scored by a model judge told which answer came from which copy 0.968 substance-equivalence
The post-freeze probe — a document drawn and run after the engine was frozen 1 agreement, filed 2026-01-21 and in no earlier draw Zero identity leaks — 3 identity spans in its gold, 0 readable
The gold's own agreement — 240 development-set calls re-judged blind quasi-identifier mask-or-keep calls only; identity labels not sampled 88.8% agreement (213/240), against 84.6% for answering “keep” every time
Court filings in a firm's own shapes — briefs, complaints, letters, a settlement, declarations 20 public filings, 296 identifiers listed by one AI agent; no second labeller and no sealed gold Default setting: an identifier still readable in 14 of 20. With the “Our own matter files” setting: 8 of 20

Measured 2026-07-19 → 2026-07-24, each row from a committed board, except the firm-filings row (2026-09-15), whose record is a ledger entry. Every number is for the full pipeline with its local model; when the app falls back to its lighter in-app engine it says so, and no number here was measured on that path. Both kinds of row are published — the genre that converged and the one where every fresh draw still finds something new. A vendor that shows you only one number is showing you the wrong one. The measurement record has the methodology and every named miss.

Reproduce it yourself

The manifests, the sealed gold (as character offsets, not text), the scorer and every board ship in the tree. The documents re-fetch from their public sources, and the Singapore Family Court gold is withheld, so the courts numbers do not fully rebuild. The research page has the whole procedure.

git clone https://github.com/Simpler-Systems/simpler-legal
cd simpler-legal
node score-pii.mjs selftest     # the scorer proves itself first: 8/8
The honest claim: what gets removed is identities — people's names, identifiers, the things that point at a person. Dates, amounts, business facts and most places stay on purpose, because that is what the AI has to reason about, and by default so do company names that are not the document's own. Across the 46 agreements, 245 of 503 quasi-identifier spans stayed readable, so a distinctive enough profile can still be inferred. The claim is that identities are withheld, not that inference is impossible. That's why nothing exports until you finish the review: the last line of defense is you.

Get it

Download

Desktop app for Windows. It reads PDF, Word and plain text. The model (3.35 GB) is not in the installer, and the app does not download it: you download gemma-4-E2B_q4_0-it.gguf yourself, from Google's Hugging Face repository, at the revision the app is pinned to, and the app hash-checks it before it runs. The file of the same name on that repository's main branch is a later upload, and the app refuses it.

Windows

.exe installer · x64 · per-user install, no admin neededv0.1.0, Windows, unsigned: Windows SmartScreen will warn before it runs (see “Heads up” below).Download from GitHub Releases

macOS

Not built. The build produces a Windows installer only.

Linux

Not built. The build produces a Windows installer only.

Every release is on GitHub Releases. To build the installer yourself, follow BUILDING.md.

Where to put the model

In %APPDATA%\Simpler AI\models, or name its folder in the SIMPLER_MODEL_PATH environment variable. The app also looks in your Downloads folder and in the model folders of LM Studio, Hugging Face, GPT4All, Jan and Ollama, and never searches the whole disk. The hash decides, not the filename. Settings shows which file it found.

On a work machine?

By the app's code, every call it makes goes to 127.0.0.1. Its installer may fetch Microsoft's WebView2 runtime, and no packet capture of the packaged app is on record yet. The IT brief covers the local ports, the model server and the installer, and PRIVACY.md says what the app keeps on disk. Report a security problem privately, through the repository's Security tab, as SECURITY.md says, and never with a client's document attached.

Heads up, Windows users

Version 0.1.0 is not code-signed, so Windows SmartScreen will warn: a blue "Windows protected your PC" screen. Click More info → Run anyway. The warning is accurate: there is no publisher for Windows to recognise. The way to know what you are running is to read the source and build it yourself (BUILDING.md).

Command line today

The engine runs from source on Node 20 or later, with no dependencies. You bring the model file and a llama.cpp build; tools\launch-server.cmd serves the pinned model and node serve-legal.mjs puts the frozen engine on 127.0.0.1:1436. The launcher leaves the model server's /slots endpoint on, which lets a web page read the last text it was given, so set LLAMA_ARG_ENDPOINT_SLOTS=0 first (the IT brief says why).

Audit us

Don't trust us — check

The privacy claim is testable. The first check takes five minutes and no expertise at all.

The airplane test — anyone can do this

Turn off Wi-Fi, redact a document. By the code, everything should keep working, because every call the app makes is to this machine. No recorded run of this test is on file yet.

Watch the wire

Run a network monitor (Wireshark, or Windows' own Resource Monitor or pktmon) during a redaction. By the code, you should see only loopback traffic to 127.0.0.1. No capture of this is on record yet.

Read the code

It's Apache-2.0 source, on GitHub. Grep the app and engine for a network call: every one goes to 127.0.0.1. There is no updater and no telemetry. The IT brief lists the other addresses in the source, and why none is requested.

In the app itself

The egress pill in the corner reads "0 requests off this machine" and opens that window's live network record — what the app itself requested, and what the browser loaded for the page. It says what it cannot see, too.

Questions

Common questions

Can I use this with privileged or confidential matter files?

The redaction stays in your custody: this is local software, and there is no server of ours to receive your originals. But the copy you then send to an AI provider still carries the matter's facts, dates, amounts and most places, by default the names of companies that are not the document's own, and anything the engine missed: on a firm's own filings, an identifier stayed readable in 14 of 20 under the default setting. Review it before you send it, and weigh the provider's terms as you would for any disclosure. Not legal advice.

What files does it read?

PDF, Word (.docx) and plain text. Scanned or image-only pages need OCR, which isn't included yet: a PDF with no readable page is held, and a scanned page inside a readable one is left out, with a line in its place. A text export is a new file rebuilt from the redacted text. A .docx export rewrites your original Word package and is held back if a check of the finished file finds a listed name still in it; the IT brief lists what that check cannot see.

What does it cost?

Nothing. Apache-2.0-licensed, no account, no tiers. If you want document work handled end-to-end on the AI subscription you already pay for, that's our sibling product — simpler.asia.

Made by the same people