Open source · BSD 3-Clause

Learn your writing style. Align everything to it.

Proselign learns how you write from your own documents, then rewrites any text in that voice: same facts, same figures, same structure, your style. It runs on your machine as an ordinary Unix filter.

$ proselign train --voice Bryan ~/Documents/Writing/
proselign: voice 'Bryan' learned from 214 document(s), 186,402 words

$ cat team-draft.md | proselign --voice Bryan > final.md

$ proselign --voice Bryan --strict --strength 0.3 < memo.txt
# stdout: the rewrite, nothing else
# stderr: diagnostics; exit 4 if a fact would change

One voice from many hands

Reports, proposals and documentation are rarely written by one person, but they should read as if they were. Proselign gives a document a consistent authorial voice without asking anyone to give up their facts.

Teams merging drafts

Five contributors, one document. Rewrite each section in the lead author's voice so the result reads as a whole.

Your own backlog

Notes, emails and first drafts written in a hurry, brought into line with how you write when you have time.

Technical & professional prose

Engineers, researchers, attorneys and consultants: Markdown, code, citations and numbers pass through intact.

How it works

A voice is not a separately trained model. It is a small, portable, versioned profile: measured style features, representative examples, and a description of how you write. Any locally served instruction model applies it under strict fidelity rules.

Train

  1. Your documents
  2. Extract & clean
  3. Measure style
  4. Profile + examples
  5. Voice package

Run

  1. stdin
  2. Segment
  3. Protect facts
  4. Local model
  5. Verify
  6. stdout

Meaning first

Numbers, names, dates, URLs, citations and quotations are extracted before the rewrite and checked after it. Code blocks, tables and front matter never reach the model at all. A failed check is retried with feedback; under --strict it is an error, never a silent change.

Bring your own model

Proselign talks to any OpenAI-compatible endpoint you run locally: llama.cpp, vLLM, Ollama or LM Studio. The voice is data, independent of any model vendor, so you can change models without retraining.

Principles

Proselign does one thing and tries to do it well.

Unix-first

stdin to stdout, diagnostics to stderr, meaningful exit codes. It composes with find, xargs, make and your editor.

Local-first

No telemetry and no network calls by default. Your corpus, voices and drafts never leave your machine; --offline enforces it.

Voice as data

A voice is a versioned, inspectable JSON profile you can export, share, audit and delete, not an opaque set of weights.

Transparent

Every measurement is reproducible, every check is reported, and the profile separates what was counted from what was inferred.

Consent matters

You decide what is ingested and what is exported. Exports omit corpus paths by default; examples are opt-in.

Permissive

BSD 3-Clause. No dependencies beyond the Python standard library in the core tool.

Roadmap

Proselign is early. Each milestone ships when its exit criterion is met, not before.

  1. M0
    Repository skeleton & CLI contractInstallable command, stdin/stdout golden tests, CI, packaging. In progress.
  2. M1
    Profile MVPLocal model backend, JSON voice profile, Markdown-safe rewriting with demonstrated preservation.
  3. M2
    Automatic ingestionDirectory scan, style extraction, voice registry: a new voice can be learned and reused.
  4. M3
    Retrieval & portabilityEmbeddings, genre-matched examples, import/export, measured gain over profile-only.
  5. M4
    Rigorous fidelityStrict semantic checks, regression suite, held-out evaluation, published benchmarks.
  6. M5
    ExtensionsDOCX/PDF ingestion, optional LoRA adapters, editor integrations, if user testing justifies them.

Get it

Ubuntu 22.04, 24.04 and 26.04 LTS on amd64 and arm64, plus a CPU-only tier for IBM POWER (ppc64el) and Z (s390x). Or anywhere with Python 3.10+.

sudo add-apt-repository ppa:bceverly/proselign
sudo apt update && sudo apt install proselign

Other install options · Source on GitHub · Releases