SerpOS
My own Semrush, custom-built, polled nightly by every site in the portfolio.
What it is
SerpOS is an SEO recommendation engine. Every night, it measures every LogoLess Labs site against Google, analyses the results, writes concrete action items using Claude, and exposes them through a REST API. Each site in the portfolio polls its own endpoint in the morning and finds fresh instructions waiting.
It's the single most valuable piece of infrastructure I've built.
Why I built it
I was about to buy a fifth Semrush seat when I realised the thing I actually wanted didn't exist. Semrush tells you what's wrong with your SEO. I wanted something that tells my sites how to fix it, and then lets the sites ask for the fix themselves as part of their nightly routine.
That's a workflow, not a dashboard. And workflows are easier to build than they are to buy.
How it works
Every night, one cron job runs the full loop across every site.
Collect. Lighthouse CI runs performance audits. Google Search Console gets queried for click and impression data. DataForSEO returns keyword rankings and SERP context. All raw data lands in Postgres with timestamps so deltas can be computed day-over-day.
Analyse. Trend deltas get calculated. Content gaps get identified by comparing the site's current keyword coverage against competitors. Performance regressions — a page that was fast yesterday and slow today — get flagged.
Recommend. Claude takes the analysis and writes concrete action items. Each recommendation is typed: meta_title, meta_description, content_gap, schema_markup, internal_link, performance_fix, keyword_opportunity, page_speed. No vague advice. No "consider improving your…" Every recommendation names the specific URL, the specific change, and the reasoning.
Expose. The recommendations sit in a REST API. Each property polls GET /api/sites/:siteId/recommendations and gets its own fresh list. Some of those recommendations can be applied automatically. Some need a human. The API tells the calling site which is which.
What I learned
There's no dashboard I have to log into to check. There's no human step between "we found a problem" and "the site has been told about the problem." That directness is the whole value.
Consistent output typing matters. The recommendations are enums, not free text. That constraint makes downstream automation possible. A site that polls the API can act on a meta_title recommendation differently than a performance_fix recommendation because the shape is guaranteed.
Claude is very good at writing recommendations when the input data is clean and structured. The magic isn't in the prompt. The magic is in the pipeline that shapes the data before Claude ever sees it.
Where it's at now
Running nightly across RepairMyPhone, PostcodeIQ, SchoolLens, LittleRatings, the coffee directory side of EspressoOfInterest, and an Irish tradesperson directory. Expanding to the F1 Network's five domains next. Every new LogoLess property gets a SerpOS endpoint the day it launches.
A longer write-up on the SerpOS architecture — the nightly pipeline, the recommendation enum system, how Claude gets the data shaped before it ever writes a word, and the API that lets each site pull its own list. Drop your email on the main page if you'd like to know when it's up.