One pass. Eight registers. Sentence-level control. Built by people who studied how detectors work — and fine-tuned our own model so you don't have to think about them again.
aihumanize.tech is Creative Mantra's own SaaS laboratory — a bet that the entire “AI humanization” category was building the wrong shape of product. Everyone else was iterating in loops. We wanted to see what happened if we didn't. So we built and fine-tuned our own humanization model, wrapped it in eight registers, and shipped it as a real SaaS — free tier and all.
Scroll through the escalation. Then watch the whole loop go quiet.
We didn't want to build another loop. We wanted to build the thing that made loops unnecessary.
Three product laws came out of that phase. Every architectural choice below traces back to one of them.
The discovery phase produced three product laws that shaped every subsequent decision. They're boring on the outside and load-bearing on the inside. Read them as the architecture; the code just executes them.
The whole AI detector industry runs on two words: perplexity and burstiness. We didn't build a new AI — we fine-tuned our own to put the noise back in. The same noise a human puts in without thinking. One pass. Then you sit and edit.
The system is deliberately small. The React frontend collects the
input, the selected mode, and the user's plan tier, then issues one
POST to our humanization endpoint.
The endpoint hands the request to our in-house fine-tuned humanization model — the moat —
and returns transformed text. The frontend post-processes it (sentence
splitting, keyword highlighting, alternative extraction on request) and
hands it back to the writer. Supabase handles auth and rate limiting,
Stripe handles billing, a nine-command admin panel gives us Highcharts
visibility into revenue and usage. When the API misbehaves, a
client-side regex fallback quietly keeps the tool alive.
The single biggest thing a humanizer can get wrong is tone. A wedding speech in a research-paper register reads like a hostage note. A research paper in a wedding-speech register reads like a Reddit post. So mode is a user decision, made before the humanization call, and the fine-tuned model is conditioned differently for each. Eight is deliberate.
A peek at the regex fallback engine — the last-resort rewrites the tool runs when the main API misbehaves (see §14). Our fine-tuned model does much more than swap words; these dictionary entries are just the safety net. But they're real, they ship, and they tell you the shape of what each mode is trying to do.
Humanization is a draft, not a delivery. Our fine-tuned model gives you a good first pass. You're still the writer. So we built a revision surface into the humanized output: click any sentence, and the app fires a separate call to /humanize/sentence with the surrounding context. Back comes a short menu — usually two to four alternatives — presented in a popup positioned to never leave the viewport. Click one, swap it in. Click again for a different set. The rest of the paragraph stays put.
POST /humanize/sentence { text_content, context: { paragraph, index } } → 200 OK { alternatives: ["...", "...", "...", "..."] }
Every extra round-trip is another second the user spends staring at a spinner. We picked one pass and made it count.
The industry default: /generate → /detect → /rewrite → /detect → /rewrite. Every hop is another LLM call. Every call is more latency. Every latency second is a user who tabbed away. The loop made sense in 2023 when nobody knew what worked. In 2026 it's inertia.
POST /humanize with { text_content }, receive { transformed_text }. Our in-house fine-tuned humanization model was trained on the same heuristics the detectors flag — perplexity variance, burstiness, repetition patterns. The grading happened during training. It doesn't need to happen again at runtime.
POST /humanize/sentence) is a separate opt-in call, fired only when a writer clicks a sentence. It's not a loop — it's the user's own revision.
Perplexity is a measure of how surprised a language model is by the next word. Human writing surprises models constantly, because humans are messy: they choose a word the model would not have chosen, then justify it three sentences later.
Burstiness is the sister metric — the variance in sentence length. Humans write one twelve-word sentence, then a three-word one, then a twenty-eight-word one, because that is how thinking sounds. Language models, left to themselves, write in a cadence you could set your watch to.
Detectors do not have supernatural powers. They just measure the two things above, on a rolling window, and shout when the numbers get too flat. Our humanization pipeline was tuned against exactly these metrics — which is why it consistently produces text those detectors don't flag.
Most rewriters treat keywords as noise — swap them for synonyms, break the SEO. That's a bug, not a feature.
aihumanize lets the writer declare a list of protected words before processing. Those words are held fixed while the surrounding sentence structure is rewritten. The paragraph about “lithium-ion batteries” still says “lithium-ion batteries” at the end — because if it didn't, the search-engine argument would break.
Mode is a pre-humanization choice, not a post-humanization filter. The pipeline builds the rewrite in tone from the start.
“The literature suggests that generative AI adoption within marketing functions has reached widespread parity.”
Academic“These days, most marketers are quietly using AI to draft their content — it's just how the work gets done.”
Standard“Let's be real — every marketer's using AI to churn out copy now. It's normal.”
InformalThird-party APIs fail. A paying user does not care whose fault it is; they care that the button they clicked did nothing.
APIs time out. They 502. They rate-limit. A paying user does not care whose fault it is. So the frontend has a safety net, written in a language that does not have moods: JavaScript regex.
Lines 457-578 of src/services/api.js: a mode-aware fallback humanizer. Synonym swap. Contraction injection or expansion. Sentence-starter variation. Fast enough that the user does not know anything went wrong.
We could have left this as a TODO. We chose to ship it and tell you about it. A tool that pretends its API never fails is a tool that surprises its users on the day it does.
“A tool that pretends its API never fails is a tool that surprises its users badly on the day it does.”
— aihumanize.tech engineering principle #1
Premium exists for the writer who needs more room. There's a version of this product where the free tier is a demo that punishes you for not paying. We didn't want to build that.
kkzuzknxmrsnvoefdwbj@react-oauth/googleEvery paying SaaS needs a place to see what's happening. The admin panel gives us user management, payment log inspection, revenue analytics powered by Highcharts, and a filterable users table. Password-protected. Not exposed in the marketing site.
On the user side, premium subscribers get a left-side history sidebar — every text pair they've humanized is saved and reloadable. Free users don't; that's part of what they get by upgrading.
user_id, status, amount, timestamp. Stripe is the source of truth — the log is our mirror for search and analytics.
The in-house model was tuned against the heuristics that leading detectors rely on — perplexity variance, burstiness distribution, repetition patterns, common-token frequency. The tuning happened across six detectors:
GPTZero · Originality.ai · Turnitin AI Writing Indicator · Copyleaks · Winston AI · Content at Scale.
Once the tuning converged, the runtime stopped needing to call detectors. The output consistently reads as human at inference time — because the model was trained to make it so.
One at a time. Read the paper if there is one. Study the API response shape for signal.
20+ AI-generated paragraphs across genres — essay, marketing copy, technical, casual.
Run through the detector. Record flagged patterns. Which words? Which cadences? Which sentence lengths?
Adjust the training to break flagged patterns without breaking meaning or register.
When the model consistently produces output that no longer triggers the detector's flags on the sample set, the tuning is frozen and we move on.
The eight registers do more work than the underlying pipeline. Users don't complain about humanization quality; they complain when the register drifts. Register drift is the failure mode users notice.
Users who interact with the before/after slider convert to premium at a materially higher rate than users who don't. Interaction beats explanation.
The regex fallback has probably saved hundreds of angry support tickets we have no way to prove, because the users it saved never knew anything was wrong. That's what defense-in-depth looks like in the wild.
Every version of the landing page that stated the 0% detector result clearly outperformed the version that hedged. Users can tell when you believe your own product — and when you don't.
If you're planning an AI product that needs to survive contact with real users — real APIs failing, real edge cases, real trust budgets — we would like to hear about it.
aihumanize.tech · in production