Open-source engine for humanizing text and detecting AI-generated text. This is the brain behind human-or.cognitive-industries.org; the website is a separate (private) repo that runs this engine server-side — the engine and its models are never shipped to a browser.
- Humanizer — removes the mechanical "signs of AI writing" (em dashes, curly quotes, decorative emoji, filler phrases, chatbot artifacts, and a curated set of "AI vocabulary" words) with deterministic, explainable edits. No model, no network.
- Detector — scores how AI-like a passage is using transparent stylometric signals (AI-vocabulary density, burstiness, punctuation tells, connector density, formulaic structure, filler density). Every point of the score traces to a named signal.
Text is implemented today. Image and audio detection are on the roadmap (see Roadmap); the website stubs those endpoints until the models land.
The baseline detector is a glass box, not a classifier you have to trust blindly. It is grounded entirely in human-authored research on how LLM prose differs from human prose:
- Wikipedia, Signs of AI writing (WikiProject AI Cleanup)
- Kobak et al., Delving into ChatGPT usage in academic writing through excess vocabulary (arXiv:2406.07016)
- The FSU focal-word study, Why Does ChatGPT "Delve" So Much? (arXiv:2412.11385)
- Editor/journalist write-ups on AI tells (Washington Post, 2025)
Trained text/image/audio classifiers will slot in behind the same
DetectSignal interface without changing the API. See docs/METHOD.md.
npm install @humanor/engineimport { humanizeText, detectTextAI } from "@humanor/engine";
const { text, edits } = humanizeText(
'In order to utilize this — it is important to note that you should delve in.',
{ aggressive: false }, // minConfidence, categories also available
);
// text: "To use this, you should delve in." (+ structured `edits`)
const result = detectTextAI("In today's evolving landscape, this stands as a testament...");
// { aiScore: 0..100, label: "likely-ai" | "uncertain" | "likely-human",
// summary, signals: [...explainable...], stats }| Function | Returns |
|---|---|
humanizeText(text, options?) |
{ text, edits } — rewritten text + applied edits |
humanizeEdits(text, options?) |
Edit[] — proposed edits without applying |
detectTextAI(text) |
DetectResult — score, label, signals, stats |
humanizeRules() |
the compiled rule catalog (for inspection/UI) |
HumanizeOptions: minConfidence (default 0.6), aggressive (default false),
categories (punctuation | filler | vocabulary | chatbot).
npm install # also builds (prepare script)
npm test # vitest
npm run build # tsc -> dist/- Text humanizer (deterministic, rule-based)
- Text AI-detector (explainable stylometry)
- Trained text classifier (HuggingFace), behind the same interface
- Image AI-detection model
- Audio AI-detection model
- Python bindings + HuggingFace model cards
Models will be published under the same org on GitHub and HuggingFace.
Apache-2.0. Use it, build on it, ship it — including commercially.