Overview
lawlint flags the patterns that make legal and general prose sound machine-written, and suggests more human, direct alternatives.
lawlint reads a document and returns a focused list of things worth revising — the hedges that hedge nothing, the tricolons, the throat-clearing openers, the em dashes doing a comma’s job — plus a human-likeness score from 0 to 100.
It is a native binary. Linting needs no configuration, no network, and no account: the deterministic rules run entirely offline over text you already have on disk.
lawlint contract.docx
Start here
Quickstart
Install the CLI, lint a document, read the output.
Rule reference
Every built-in rule, what it catches, and why.
CLI reference
Every command, flag, and exit code.
Nothing to install yet? The playground runs the same engine in the browser, compiled to WebAssembly — text typed there never leaves the page.
What it checks
Rules come in two kinds, and the distinction decides whether a check needs a model.
Hard rules are deterministic. Phrase, leading, density, and statistical checks over the text itself — no model, no network, no variance between runs. Every rule that ships enabled by default is a hard rule.
Soft rules are inferential: judgements a regular expression cannot make,
evaluated by an optional AI judge from a written rubric. They run only when
you ask for them with --judge.
See Hard and soft rules for how the two kinds map onto
the engine’s static, statistical, and inferential tiers.
What the score means
The human-likeness score aggregates only detection-intent rules — the
subset corpus-validated to distinguish AI-generated from authentic human legal
prose. Style-intent rules (the Oxford comma, semicolons, sentence length,
the Orwell rules) still report findings and still participate in --fix, but
they never move the score.
Because the score is normalized per 1,000 words, it reflects issue density rather than document length. Scoring has the formula.
Beyond linting
Fixes and tracked changes
--fix rewrites what is safe to rewrite. In Word, as native tracked changes
with a review comment per fix.
The AI judge
Add inferential findings that deterministic rules cannot reach.
Learn your voice
Mine a personal rule package from writing you have already done.
Author a rule
Rules are Markdown files with YAML frontmatter. Write your own.
Privacy
Linting is local and offline. Nothing is uploaded, and the installers do not phone home with your documents.
The optional AI features are the exception, and they are opt-in twice over:
they do nothing until lawlint init configures a model, and — with a hosted
provider — they send the text being judged to that provider. API keys live in a
user-level credential file, never in your project.