// MEASURED, NOT ASSERTED

3 wins. Zero losses. Then we'll offer you the keys.

Every autopilot promises rollback. Almost none of them publish what they measured. Ours won't even offer to run a fix type unattended until it has 3 settled 28-day verdicts on that exact fix type, on your exact site, with not one negative among them — and "we don't know yet" never counts toward the 3, because a pending verdict is not evidence.

One negative verdict takes the whole type back to manual, no matter how many wins sit beside it. That asymmetry is on purpose: the cost of a bad automatic change is a long way above the value of an early unlock.

And "offered" is not "on." It is never the default, and we have never switched one on for anybody.

// THE LADDER

Three levels, per site, per fix type.

01
suggest

We find it and describe the fix. You do everything else. This is the default, always, for everything.

02
approve each

We draft it. Nothing goes live until you click. This is where almost everybody lives, and it is a fine place to stay.

03
auto

Offered only when earned, opted into explicitly, revocable instantly, and still fenced by everything below.

The levels are set per fix type — description title llms_txt robots_txt md_twin — because trusting us with a meta description is not the same decision as trusting us with your robots.txt. A malformed setting degrades down, never up: if we cannot read what you chose, you get less autonomy than you asked for, not more.

// THE FLOOR THAT CANNOT BE EARNED

One fix type can never be automatic.

robots_txt is coerced back down to approve-each on both read and write, whatever the stored config says, however well it has scored. A bad robots.txt takes the whole site out of search — not one page, all of them — and there is no verdict count that makes that a risk worth automating. It is the one place where we decided the ladder itself should not be allowed to reach.

// EVEN THEN, ON A LEASH

5 more gates on top of "earned".

A consent generation

If we change how any of this behaves, your opt-in lapses back to approve-each and we ask you again — without erasing what you chose, so re-consenting is one click rather than a re-setup. This one is modelled directly on somebody else's mistake: the auto-apply backlash that happens when a vendor quietly widens what "automatic" means.

A hard cap of 5 applied changes per site per day

Total — counting the ones you made yourself, and counting the ones that got reverted. Counting reverts is not an oversight: a revert that refills the budget is a loop, and we found that out the way you would expect.

At most 8 proposals per run

A run that produced forty drafts would not be thorough, it would be a queue nobody reads.

Only what the scheduled audit drafted

Automatic application never touches a proposal you drafted yourself. Anything you asked for still waits for your click, because you asking for a draft is not you asking for it to go live.

The consent page refuses to render for an unearned type

You cannot opt into automatic application of a fix type that has not earned it, even by URL. Which means the setting can never become the sales pitch — there is no screen on which we can dangle it at somebody who has not got the evidence.

// THE PRECONDITION WE SAY OUT LOUD

Without Search Console, nothing can ever be earned.

Every verdict the ladder counts is a before/after comparison of real search data. A site with no live Search Console connection cannot settle a single one — the counter isn't slow, it's stopped. So instead of a progress bar frozen at 0 of 3 forever, the product says it in words. This is the sentence, from the code that decides:

// FROM THE SOURCE
earning needs Search Console — verdicts are measured, not asserted. Until it is connected nothing can settle, so no fix type can earn auto.
// THE VERDICT VOCABULARY

Positive, flat, negative — and pending.

Every change we apply gets a before/after look at 14 and 28 days, labelled correlation and not causation, once per page, every time. We are not going to tell you a title rewrite caused anything; we are going to tell you what moved and let you keep your own judgement.

Pending deliberately covers two different situations — "not computed yet" and "too little data to judge" — because to the person reading the page they are the same sentence: we don't know. What matters is that pending never counts toward the 3. No causation theater, and no promotion on the strength of a maybe.

// THE GUARD

The day it invented a price.

A dry run on a real commerce site produced a description containing "$9.99/month". That price did not exist. The word filters didn't catch it, because it isn't a word — it's a claim.

So a draft may now only state things we can point at: either a fact you confirmed yourself, or text already on that page. We read your site and propose the facts; nothing counts as true until you say so, and the unconfirmed pile is never consulted by the guard. The model is told the rules and a deterministic check enforces them — guidance persuades, the guard refuses, and neither is trusted on its own.

// WHAT WE REFUSED TO BUILD

Evidence cuts both ways.

Your site profile splits into two halves, and we treat them differently on purpose. The factual half — what you are, what you sell, the terms you ban and what to say instead — is what the guard actually enforces. The voice half is cosmetic until we can measure it, and so it gates nothing. We would rather ship a tone setting labelled "we can't prove this works yet" than let it start blocking drafts on a hunch.

That posture came out of reading the literature and not liking what it said. Persona conditioning has negative published results. Telling a model "never say X" measurably increases X unless you supply the replacement — which is why a banned term here requires one. And adding constraints degrades output quality even when the model complies with all of them, which is why the term list warns you at 15 rather than letting you write 200. We also rejected numeric term weights outright: there is no prior art that they work, and a knob that does nothing is worse than no knob.

One more, smaller and maybe the most telling: there is no case-sensitivity flag on banned terms, because the matcher underneath is unconditionally case-insensitive. Storing the flag would be a promise enforcement couldn't keep, and a setting that lies is worse than a setting that's missing.

// NEXT
See it on your own site

Free, one site, no card. Everything on this page starts at "suggest" and stays there until you move it.

start free
Or read the boundary

The pipeline is MIT-licensed and public. The guard, the prioritizer and this ladder are what we sell, and we wrote that line down.

open source →