SEO autopilot

The whole loop — pick the term, write the post, illustrate it, publish it on its date, tell the search engines, apply the safe corrections — runs on a schedule with a brake, a budget and a ledger.

What it is

A configuration object stored as JSONB on the site record that every autonomous job reads before it does anything. It carries one master switch, four capability switches (write posts, generate heroes, publish on schedule, apply safe corrections), two spending ceilings, a cap on unreviewed drafts, a backlog target, the list of proposal types that may be applied without sign-off, the hero art direction in force, and which writer is live. Nothing in the codebase calls a model, generates an image or publishes a page except through it.

Also called: content autopilot · automated blogging · hands-off SEO · autonomous marketing

See it
SEO autopilot
Apr
May
Jun
Jul
Ronan Petsch — Barndominium
Framing
Marlin Hoover — Equipment Storage
Concrete
Gideon Alt — Riding Arena
Trim
Ronan Petsch — Riding Arena
Framing
Ivy Brubaker — 30×40 Garage
Concrete
Framing crewConcrete crewTrim crew
The Autopilot tab: the master switch card reading 'Autopilot is running', the four capability switches, the spend meter against its cap, and the action feed. Rendered by src/app/platform/seo/page.tsx. Sample data — no customer information appears here.
How it works
  1. 1AutonomyRun.open(label) loads the config and the month's spend so far and mints a run id every action is tagged with.
  2. 2allowed(capability) returns the master switch AND the specific capability switch — either being off stops the work.
  3. 3canSpend(cents) is asked BEFORE an expensive call and refuses if it would break the run or month ceiling.
  4. 4record() writes the action to the ledger with its previous value and its true cost — you cannot spend without leaving a trace.
  5. 5The config defaults to OFF, and the panel's master toggle turns everything off within one cron tick with no deploy.
Why we built it

The module's opening line is the argument: "THE BRAKE, THE BUDGET AND THE RECORD (Keith 08-24). A system that writes to a live marketing site under your name without these three is a liability, not an asset." The default is deliberate too: "OFF until Keith turns it on. A migration must never switch on a system that writes to the live site; that has to be a deliberate act." And the config lives in JSONB rather than code specifically so "the brake must be reachable faster than a deploy."

The problem
  • Content production stalled entirely on human writing time.
  • An autonomous system with no kill switch cannot be safely switched on.
  • AI spend was discoverable only on the invoice.
Sound familiar?
What you get
One toggle stops every autonomous write within a cron tick, no deploy
Spend is capped before the call, not found on the bill
Every action is recorded with its previous value, so a bad week can be undone
What's inside

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →