I built an AI that writes like me, and I 'm measuring how much it fails
Everyone can now spot machine text on sight, the em-dashes, the “you’re absolutely right”, the invented technical terms nobody at any job ever used. I write a lot with agents, and I did not want my published words to smell like that. So I built hyphos, a small open tool that learns how I actually write, from my own words, and rewrites AI drafts to sound like me. This is the build log, including the parts that went wrong.
The corpus came first. My raw material was every message I ‘ve ever typed into my coding agents, plus a decade of sent email. Extracting “what I typed” turned out to be the real work. The first pass over my agent transcripts produced 1.27 million words, which sounded great until I measured where they lived, 97 percent sat in messages too long for anyone to have typed. Pasted logs, quoted docs, other people’s text. Nobody types 1500-word prompts. After evidence-based filtering I was left with about 107,000 genuinely typed words, and that number I trust.
Email had a nastier lesson. I assumed a Sent export contains only my mail. Measured, 45 percent of it was other people’s messages, whole threads riding along. If you ever build on personal data, enforce authorship structurally, don’t assume it. A From filter and some multilingual quote-stripping later, 84,000 English words that are provably mine, with the Greek kept aside as rhythm signal only.
Then the part I ‘d been waiting for, the fingerprints. Per register, because I don’t have one voice, the me that instructs an agent is not the me that emails a stranger. Sentence lengths, punctuation habits, casing, openers, contraction rates. One number stopped me though. In my pre-2023 email, written before AI assistance existed, I used an em-dash 0.01 times per thousand words. Effectively never. The internet’s favourite AI tell is, in my own measured history, a construction I simply don’t make. That single statistic became a hard rule, any em-dash in “my” text gets rewritten out mechanically, no model discretion involved.
That’s the design insight I ‘d defend most, by the way. Style instructions decay, models drift back to their priors within a few replies, everyone has watched it happen. So the quirks that can be enforced deterministically are enforced after the model, by boring code that cannot be argued with. The model handles meaning and register, the rules handle the fingerprint.
And the score. Every output gets a number for how much it statistically resembles my register, plus a count of model-isms found. I ‘ll be honest about where that stands, the model-ism counter works today, the stylometric half is underpowered on short texts and I ‘ve marked it low-confidence below 250 words rather than pretend otherwise. The calibration that gives the number meaning is a blind test, the tool shows me snippets, some mine, some machine, and my own failure to tell them apart is the target metric. When I can’t beat a coin flip against my own rewrites, the tool works.
The first round is in, actually. Twelve snippets, six mine, six the engine’s, shuffled, key sealed until I answered. I scored six of twelve. Exactly a coin flip. Three engine texts passed as mine, and stranger, I disowned three things I genuinely wrote, one of them with full confidence. What gave the generated ones away, when anything did, was the topic, not the tone, and topics are outside the tool’s job on purpose. Small sample, one register, so I ‘m not framing this as proof. But as a first measurement it is uncomfortably encouraging.
hyphos is open source, local-first, and your writing never leaves your machine. Whether it convinces you is something you can measure yourself, which is rather the point.