Skip to content
Cameron Mills

All projects

The humaniser and writing-style system

A house style check that will not let a rewrite drop a fact

A scorer, a written house guide and a review pass that every agent report goes through, measured against my own writing, with a compare step that fails any rewrite that loses a number, name or citation.

Problem

Every agent in my system writes reports and messages for me, and fifteen of their texts from one day carried 19 lines with em dashes or semicolon lists and three opening sentences over 130 characters. I wanted one house style, checked by a script, and a rewrite step that could not quietly change what a report says.

Approach

The standard is not "less like AI" in the abstract but my own measured writing. It is a clarity and house-style check, not a detector-evasion tool: detectors are unreliable in both directions, and the tells are used only for editing. A number from the scorer is evidence for an editor, never a verdict on authorship.

Architecture

A corpus of my own writing (219 pieces, 38,050 words) is measured into a profile per register, and the profile passes through the same privacy wall that guards other committed files. The corpus itself is never committed, and nothing from it is quoted here. One guide holds nine house rules, and a reader injects that block into every agent prompt that carries it, so a guide edit reaches the next run. Every managed agent run is told to finish with the review on what it wrote.

What I built

humanize.py, 1,449 lines of standard-library Python. score reports tell words and structural measures with line numbers. protect marks ranges as untouchable and refuses when its anchors no longer match. compare checks that every number, name, citation and quotation survives a rewrite, and exits 1 when one is lost. review --check exits 1 on any house fault, so a script can refuse a draft. The rewrite goes to a sibling file and the original is kept if compare fails. It refuses graded coursework outright. The skill is triggered by asking for a style review.

Results

In a test with criteria fixed in advance, the guide cut house-fault lines from 19 to 2 where a plain "improve this" control rose to 52, and held length better. It met two of five criteria, so the verdict was "failed", and it stands.

What didn't work

The first corpus run swallowed lecture notes, other people's mail from a mirror folder and the tracker's own emails sent from my account. Each is now a filter. One stray semicolon in a short mail once scored as a 300 per cent deviation, fixed with a floor. compare first failed 13 of 15 rewrites by reading bullet labels as facts. It still does not check meaning: a moved "not" needs a human reader.

Stack

  • Python
  • Claude Code
  • Markdown
  • LaTeX