What it is
Cleo is an autonomous SEO operator. It crawls your site every morning, works out what is broken, fixes what it can in the HTML as the page is served, and files a readout before you are awake. No plugins, no tickets, no "we will get to it this sprint".
What I did
On 15 August I pointed it at test.cleoseo.com, our WordPress test bed, and left it running. No tuning, no babysitting. The site changed underneath it during the run: new pages landed, the page count went from 4 to 6, and every one of them brought fresh problems with it. Fifty mornings later, here is the whole log.
The story in three chapters
Eighteen days of steady state. Score 72. Four pages, six known issues. The operator held the line.
2 September: 90. Three issues. The cleanest the site has ever been. Fixes had stacked up and stuck. I want to be clear that I did nothing that morning. It did the work.
3 September: the site grew. A new page landed and the score fell to 58, because the new page arrived with fresh problems. The crawler found them the same morning. Nobody pointed it at the new URL. It found the page because that is what crawling means.
23 September: a sixth page. Same story. Caught the same morning, issues from 8 to 10, score 54.
24 September: the worst day in the log. Eleven issues, score 50. By the next run it had one less problem and 4 points back.
25 September to 3 October: I did not log in. Eight days. No settings changed, no nudges, no fixes from me. The last seven runs are identical: 54, 54, 54, 54, 54, 54, 54. This morning, with the run landing at 07:01 UTC, it found 6 pages, 10 issues, and it handles 8 of those 10 automatically at the edge on every single request. Two want a human. Fair enough.
The full 50 days
| Date (run) | Health | Pages | Issues |
|---|---|---|---|
| 2026-08-15 | 72 | 4 | 6 |
| 2026-08-16 | 72 | 4 | 6 |
| 2026-08-17 | 72 | 4 | 6 |
| 2026-08-18 | 72 | 4 | 6 |
| 2026-08-19 | 72 | 4 | 6 |
| 2026-08-20 | 72 | 4 | 6 |
| 2026-08-21 | 72 | 4 | 6 |
| 2026-08-22 | 72 | 4 | 6 |
| 2026-08-23 | 72 | 4 | 6 |
| 2026-08-24 | 72 | 4 | 6 |
| 2026-08-25 | 72 | 4 | 6 |
| 2026-08-26 | 72 | 4 | 6 |
| 2026-08-27 | 72 | 4 | 6 |
| 2026-08-28 | 72 | 4 | 6 |
| 2026-08-29 | 72 | 4 | 6 |
| 2026-08-30 | 72 | 4 | 6 |
| 2026-08-31 | 72 | 4 | 6 |
| 2026-09-01 | 72 | 4 | 6 |
| 2026-09-02 | 90 | 4 | 3 |
| 2026-09-03 | 58 | 5 | 8 |
| 2026-09-04 | 58 | 5 | 8 |
| 2026-09-05 | 58 | 5 | 8 |
| 2026-09-06 | 58 | 5 | 8 |
| 2026-09-07 | 58 | 5 | 8 |
| 2026-09-08 | 58 | 5 | 8 |
| 2026-09-09 | 58 | 5 | 8 |
| 2026-09-10 | 58 | 5 | 8 |
| 2026-09-11 | 58 | 5 | 8 |
| 2026-09-12 | 58 | 5 | 8 |
| 2026-09-13 | 58 | 5 | 8 |
| 2026-09-14 | 58 | 5 | 8 |
| 2026-09-15 | 58 | 5 | 8 |
| 2026-09-16 | 58 | 5 | 8 |
| 2026-09-17 | 58 | 5 | 8 |
| 2026-09-18 | 58 | 5 | 8 |
| 2026-09-19 | 58 | 5 | 8 |
| 2026-09-20 | 58 | 5 | 8 |
| 2026-09-21 | 58 | 5 | 8 |
| 2026-09-22 | 58 | 5 | 8 |
| 2026-09-23 | 54 | 6 | 10 |
| 2026-09-24 | 50 | 6 | 11 |
| 2026-09-25 | 54 | 6 | 10 |
| 2026-09-26 | 54 | 6 | 10 |
| 2026-09-27 | 54 | 6 | 10 |
| 2026-09-28 | 54 | 6 | 10 |
| 2026-09-29 | 54 | 6 | 10 |
| 2026-09-30 | 54 | 6 | 10 |
| 2026-10-01 | 54 | 6 | 10 |
| 2026-10-02 | 54 | 6 | 10 |
| 2026-10-03 | 54 | 6 | 10 |
Health is a 0 to 100 structural and technical score. Issues are problems found on that morning, not a cumulative count.
What is good
It does not miss mornings. Fifty runs in fifty days, including eight when I was nowhere near it.
It finds new problems on the day they arrive. Both page additions were caught the same morning they appeared.
The fixes are real HTML. They are applied in the response the browser and the crawler actually receive, not sprinkled on top with JavaScript after the fact.
The score is honest. It went down when the site got messier and stayed realistic. A tool that only ever shows me a rising line is a toy.
What is not
It fixes eight of ten issues, not ten of ten. Two want a human or changes at the origin. It is an operator, not magic.
The score is a structural read, not a ranking promise. Nobody can promise you rankings. Walk away from anyone who tries.
54 out of 100 is not a testimonial number. I could have opened this piece with 2 September, at 90, and stopped there. That would be lying with numbers.
It is our product. You are reading our dogfood run, not an independent lab. Which is exactly why that scorecard link exists at the top: run it yourself, on your own domain, and compare the shape of the numbers.
Verdict
The category is the takeaway. Monitoring tools tell you what is wrong and leave you to it. This is the other kind, the kind that does the work while you sleep. If you run a WordPress site and you are the bottleneck between "known issue" and "fixed issue", look at it properly. Start with the free scorecard. If your worst problems are things you can fix yourself this afternoon, go and do that first. Skip this if you enjoy alt text.
If it is good, I will tell you. If it is not, I will tell you louder.
Questions, answered
What is an autonomous SEO operator?
A monitoring tool tells you what is wrong and leaves you to fix it. An autonomous SEO operator does the work itself: it crawls your site every morning, finds broken structure, and applies real HTML fixes in the response your pages are served with. Cleo is one of these. The distinction that matters is who does the fixing, you or the software.
Is this an independent review?
No, and the article says so at the top. Cleo is our own product, built by Pure Light Ltd. This is our dogfood run on our own test site, published in full with the dips left in. The free scorecard at cleoseo.com/scorecard runs the same deterministic structural scan on any domain, so you can check the shape of these numbers against your own site before believing a word of it.
What does the health score measure?
Health is a 0 to 100 structural and technical score: robots directives, schema, llms.txt, sitemap health and related signals. Issues are problems found on a given morning, not a cumulative count. It is a read of site structure, not a ranking promise. Nobody can promise you rankings.
Check your own site before you trust my numbers.
The free scorecard runs the same deterministic structural scan on any domain. No account, no card.
Run the free scorecard