Origin Intelligence
experiment · seo agent

When your website optimizes itself every morning

Editorial illustration of an autonomous AI agent at work, visualized as a softly glowing workstation with data streams converging on a single decision point.

I spent a week building an autonomous SEO agent for my own consulting landing page. This morning at 06:00 UTC it ran on its own for the first time — and caught a bug I had missed.

How the pipeline runs, every 24 hours

Every day at 06:00 UTC a Cloudflare Worker wakes up. It pulls the last week of GA4 sessions for the landing page, the last week of Search Console queries, a fresh capture of the live HTML, a Lighthouse audit (performance, accessibility, best practices, SEO, Core Web Vitals) from the PageSpeed Insights API, and a probe of whether GPTBot, ClaudeBot, and PerplexityBot can even reach the page. That's the raw input — four datasets, assembled without a human in the loop.

Then it thinks in two phases. Phase 1 reads the data and derives the site's context — who the target audience is, what language the copy is actually in, where the site sits competitively, whether there's a mismatch between what the page is optimized for and what visitors are actually searching for. Nothing is hardcoded. Phase 2 takes those derivations and proposes concrete changes — h1, title, meta description, structured data, CTA copy, performance fixes — each one citing the specific metric or HTML snippet that justified it.

The proposals land in a pull request on the site's repo. A human reads the diff, approves or rejects, and the auto-deploy cron ships whatever gets merged. No autonomous writes to production, ever.

Flow diagram of the autonomous SEO pipeline: GA4 metrics, Search Console queries, landing HTML, and Lighthouse audit converge into a two-phase strategist, which emits optimization proposals that open a pull request on GitHub.
The four phases as a static diagram — useful if you need to screenshot it for a deck.

What it found on day one

This morning's first fully autonomous run correctly figured out three things about my site from the data alone. It wasn't told. It derived.

One: the site is selling to US and EU enterprise buyers (from the Search Console query language, the GA4 country mix, and the JSON-LD Service descriptions). Two: it's in a cold-start position — no organic presence yet, no top-5 keywords to protect. Three: there's a Spanish phrase embedded inside the JSON-LD alumniOf block, a leftover from an earlier version of the site, that was confusing crawlers trying to classify the page as English.

I had reviewed this page by hand. Multiple times. I never caught it.

Split-screen editorial illustration: a minimalist landing page on the left, the same page on the right after an AI agent's pull request — with a subtle green highlight on the improved heading and a small 'PR merged' badge with a checkmark.
Before and after the agent's first autonomous pull request — the kind of change a human would wave through in review, delivered with a written rationale on day one.

Here's the thing I keep thinking about. I built the agent to never assume. The whole reason Phase 1 derives context from data — instead of me hardcoding language=en into a config — is that I wanted the same pipeline to run against any customer site without code changes. That design choice is exactly what let it correct me. If I had hardcoded the language, it would have breezed right past the Spanish string as an outlier.

The agent didn't beat me because it's smarter. It beat me because I forced it to look at what I had stopped looking at.

What's under the hood, in plain English

Where it runs
Cloudflare's edge — no servers, no ops, no cron boxes to babysit.
What it reads
Live analytics, actual page HTML, Lighthouse Core Web Vitals, and whether AI search bots can even reach the site.
How it thinks
A two-phase prompt: first derives your context from the data, then proposes changes against it.
Reliability
Five-model fallback — if one AI provider is down, four others catch the run.
How you control it
Every change is a pull request you review and approve. No autonomous shipping.
How it scales
The same pipeline runs against any site — the strategist prompt is portable.

Why this matters beyond SEO

A few people in the agent space have been converging on a word for what this pattern is: entangled software. The idea, borrowed from physics, is that the product and the customer reshape each other. The customer's behavior shapes the software; the software shapes how the customer works; over time they become inseparable. It's the opposite of how software has worked for thirty years, when we built tools and asked humans to adapt to them.

This pipeline is a small, concrete proof of the concept for my own site. The agent reads my specific GA4 metrics, my specific Search Console queries, my specific HTML, my specific Lighthouse scores. It reshapes its proposals around what's actually on my page. If I point it at a different customer tomorrow, it will reshape around their data instead. The strategist prompt has no hardcoded language, no hardcoded audience, no hardcoded positioning — because those are the exact things that have to adapt.

What I find interesting is that "adaptive" isn't a marketing line here. It's a structural property of how the prompt was written. It has to derive, because it was never told. And because it has to derive, it ends up looking where the humans have stopped looking.

What's next

Right now the agent opens a PR with a JSON artifact describing what it wants to change. A human still has to translate that into real HTML and JSX edits. The next iteration of the pipeline closes that gap — it will patch the actual source files directly, run the build, and open a PR that a human can merge in one click. After that, the thing to watch is whether the Lighthouse feedback loop tightens over weeks: each run sees the previous run's outcomes, and the strategist can start prioritizing changes that actually moved the needle on real users, not the ones that just looked good on paper.

I'll keep publishing what happens as it happens. This is the first entry in what I'm calling Experiments — a running log of the pipeline's autonomous decisions, the bugs they catch, the ones they miss, and what I learn when the agent surprises me.