Engineering · AI · Product
Twelve Rules and a Paraphraser: Building the Cereby Humanizer
A two-pass pipeline that reshapes AI-assisted writing to read more like a person wrote it, and the signals it could not move
Here is a paragraph the way an AI assistant tends to write it. It is synthetic:
Furthermore, photosynthesis converts light energy into chemical energy. Moreover, this process utilizes chlorophyll to capture sunlight efficiently. In conclusion, photosynthesis demonstrates how plants sustain themselves.
Every sentence is about the same length, each opens on scaffolding, and the verbs are the formal ones. The ideas could be entirely the student's own and it would still read like an outline. Detectors read it the same way.
In April we built the Cereby humanizer, which reshapes text like this to read more like a person wrote it, without dragging academic writing into slang: a neural paraphraser, then 12 rule-based transforms. On our benchmark sample, the AI-detection score went from 68% to 51% with the text still grammatical and faithful, short of our 40% target. This is one of three posts on Cereby's detector, with 62% and Nowhere to Look: Cereby's Standalone AI Text Detector on the workspace and A Port and a Key: Hardening Cereby's AI Detector API on the service behind it.
What a detector reads
A heuristic detector exposes explicit metrics. A neural one outputs only a probability, learned from millions of human and AI examples. Here are the heuristic signals, on the paragraph above:
Burstiness is how much sentence lengths vary, and AI text is suspiciously uniform. Discourse markers are the words that lay out an argument; human-likeness is contractions, hedges and informal texture. Rewriting everything to sound casual fails at once, because academic writing has to stay academic. The humanizer had to lower the signals without wrecking the register (how formal the writing is).
Two passes, two jobs
Rewriting for variety and lowering specific signals are different problems, with a pass each:
The paraphraser was broad: it restructured sentences in ways no regular expression can, but aimed at no particular signal, and could lower formality in one paragraph while raising transition density in the next. The rules were surgical and deterministic, each aimed at the words that drive its metric, and none broke the grammar.
Three rules carried the most weight
Burstiness injection split sentences over 22 words at a conjunction or a relative clause, and added punch sentences of two to five words. Discourse marker stripping removed "First,", "Second,", "In conclusion," and "To summarize,", and in strengthen mode "Similarly,", "Ultimately," and "Essentially," too.
Contractions turned "do not" into "don't" and "it is" into "it's", and in strengthen mode went as far as "gonna" and "wanna". The step skipped text inside double quotes, which we learned the hard way: we tested in rounds, and in the third the pipeline mangled "Something there is that doesn't love a wall."
The other nine, from formality swaps to synonym substitution, ran only when the detector named their signal, with capped insertions. When four or more strengthen flags fired, the engine ran again to catch what survived.
Where the rules hit a wall
The discourse marker ceiling. Across every round of testing, the discourse marker score stayed at 1.00, the maximum. The rules stripped markers that open a sentence, but the detector appeared to measure discourse deeper: markers mid-sentence, paragraph structure, the scaffolding of an argument. Stripping harder would have cost coherence.
Human-likeness that went the wrong way. In the second round, human-likeness fell from 0.16 to 0.11 after humanizing. Contractions sprinkled into formal academic text made it read as inconsistent rather than human:
So when both the human-likeness and the informality signals were flagged, the humanizer stopped strengthening contractions in formal text. Formal-but-AI turned out to be better than formal-sprinkled-with-gonna.
The neural detector gave no reasons. Our production detector returned only "Classifier: likely AI-generated". The first probe moved its score from 99 to 99. Transforms that work on explicit metrics do not move a learned classifier, which is not looking at the same features:
Results
After the fifth round, on our benchmark sample, the headline score had moved and the stubborn signals mostly had not (sentence entropy measures how much the sentences vary):
| Metric | Before | After | Change |
|---|---|---|---|
| AI detection score | 68% | 51% | 17 points lower |
| Human-likeness | 0.16 | 0.19 | +0.03 |
| Discourse markers | 1.00 | 1.00 | No change |
| Sentence entropy | Low | 0.71 | Improved |
| Grammar | Correct | Correct | Preserved |
What's next
By April the rules had plateaued. The paraphrase endpoint accepted strength and personality settings and ignored them, so the neural pass ran at one fixed level; wiring them through would let it match the input's register. And the strengthen-everything fallback was blunt: score changes per step, measured in production, would show which of the 12 transforms move the neural classifier and which only add latency.