Open source · MITRuns on your Cloudflare account

The AI growth team you don’t have to talk to.

Coding agents wait for your next prompt. GrowthHarness works like a senior SEO team: it researches before it writes, drops keywords you can’t win, and checks every claim against your site, in every language you sell in. It runs 24/7 and publishes on its own.

$npm run setup -- --local && npm run dev

Then walk away. It works the night shift.

Scroll to watch one night
05:30You’re offline

The classroom is the real console layout and figures. Numbers and the night are sample data.

You already have a coding agent

It writes first. Then it waits for you.

Ask a coding agent for ten SEO articles and it starts typing. It doesn’t check what people search, what Google already ranks, or whether you can win. Someone has to direct it, and that person is supposed to know SEO.

~/my-saas · agent session

write 10 seo blog posts for our pricing page keywords

Done. I created 10 posts in /content/blog. Want me to publish them, translate them, or research more keywords?

waiting for inputlast activity 3 days ago
  1. 01
    You make the SEO calls.Which searches matter? Can you beat what ranks today? What should you skip? It does what you ask, so the expertise has to come from you.
  2. 02
    You carry the context.New session, same story: your product, your strategy, what was already published.
  3. 03
    You check the work.Is that price right? Is this claim on our site? Nobody else is reading it.
  4. 04
    You remember to come back.Search results show up weeks later. No session lasts that long, so the follow-up lives in your head.

You wanted AI to take marketing off your plate. Now you direct it, and you are the SEO expert it doesn’t have.

How an SEO expert works

Most of SEO happens before the first sentence.

Each step belongs to a specialist with its own brief. Each one answers the question a senior SEO would ask at that point, and leaves a written record you can open.

  1. 1StrategyStrategist · Deep Researcher

    What should search do for this business, and where can it actually win?

    Market research
    Who already owns these searches, and how they serve them.
    Battlefields and trade-offs
    Which topics to fight for, and which to leave alone on purpose.
    SEO_STRATEGY.mdRESEARCH_NOTES.mdVersioned, one line of versions per language.
  2. 2KeywordsKeyword Researcher

    What do people really type, and what are they trying to get done when they type it?

    Search intent
    Learn, compare, buy, or use a tool. The page has to match it.
    SERP analysis
    What Google shows for the query today, so you know what you are up against.
    Volume and difficulty
    Measured data when DataForSEO is connected. Missing numbers stay unknown.
    Cannibalization
    Two of your own pages competing for one search. Flagged before it happens.
    Keyword mapEvery keyword has a reason, or a reason it was dropped.
  3. 3TopicsTopic Editor

    What should we write now, and what should wait?

    Topic clusters
    Pages planned to support each other inside one subject.
    Defer
    When the evidence is thin, it asks for research instead of filling a quota.
    Topic groupOr a research request, with the reason.
  4. 4WritingEditor-in-Chief · Writers

    What does the reader need answered, and can we back up every claim?

    Coverage plan
    The reader’s questions this page answers, and the ones it leaves to another page.
    Claim ledger
    Each fact is saved with the exact sentence it came from.
    Internal links
    One to three per language, only to published pages in the same language.
    Draft + evidenceSelf-checked in a fresh session before handoff.
  5. 5ReviewReviewer

    Would a careful editor let this go out under your name?

    Independent review
    A separate reviewer reads the exact draft, checks claims, coverage and links.
    AI tone
    Read for the patterns that make text sound generated. No detector tricks.
    Pass / ReviseRevisions go back to the same writer.
  6. 6PublishGrowth Leader decides

    Can search engines and AI crawlers read it and show the right language to the right person?

    hreflang
    Tells Google which language version to show each searcher.
    Canonical and structured data
    One URL per page, schema built only from real article data.
    Sitemap and IndexNow
    Search engines hear about the page when it goes live.
    /pt/blog/…Server-rendered HTML on your domain.

Its work

Don’t trust the model. Read its work.

Every step leaves a document. Here is one run for a reading app expanding into Brazilian Portuguese.

Sample output · Glossly is a fictional product · numbers are illustrative

SEO_STRATEGY.mdpt-BRversion 3by Strategist

Role of search

Reach Brazilian professionals at the moment they struggle with an English article for work. Search is the main way they look for help, and Glossly’s in-page definitions solve exactly that moment.

Where we compete

  • Reading English without translating word by word
  • English for work: emails, meetings, documentation
  • Comparisons of reading tools, once we have our own data

How we win

Specific, practical guides written for working adults. The pages ranking today are mostly written for students and exam prep.

Not doing

  • “tradutor inglês português”. Google’s own translator box and DeepL own this. The searcher wants a one-off translation, not to learn.
  • TOEFL and IELTS prep. Off our product, and the ranking pages come from schools with credentials we don’t have.

Hypothesis to test

  • Work-context guides earn clicks from people already reading English daily. Signal: impressions on work-related queries within 8 weeks of publishing.

Hosting included

It brings its own blog.

No CMS, no theme, no deploy pipeline. Point one subdomain at your Worker and the team publishes straight to it, at any hour.

DNS · glossly.example1 record
TypeNameTargetProxy
CNAMEbloggrowth-harness.you.workers.devProxied

This is the only step you take. The console shows the exact target and checks that the subdomain answers.

  • Pages, certificates and sitemap are served by your own Worker.
  • Every language on one domain, under /en/blog, /pt/blog, /de/blog, so they share its authority.
  • Looks like part of your brand. Your logo, picked up from your site automatically if you never set one, your name in each language, and a link back to your homepage.
  • Search Console stays yours. Sign in with Google once. No TXT record, no submitting URLs by hand.
blog.glossly.example/pt/blog
The hosted blog for the sample product Glossly: its logo and name, a language switcher, and article cards in Brazilian Portuguese.

Rendered by the product’s own blog template. Glossly is a sample product.

Hosting works on a subdomain. Serving under www.yourdomain.com/blog needs a reverse proxy on your main site.

The shortcuts it refuses

What it won’t do, even when it would be faster.

Most AI SEO tools fail in the same few ways. These are the ones this team is built to avoid.

The usual shortcut
What this team does
Hit a keyword quota on every page
No quotas. Pages cover what the reader needs, not a keyword count.
Generate a page for every keyword
One topic group at a time. It can defer or ask for research.
Fill gaps with plausible facts
Every claim is saved with its source sentence. Unsupported claims are cut.
Translate one article into ten languages
Each language is researched as its own market, with its own strategy.
Add FAQ or rating schema for rich results
Structured data comes only from the real article and site.
Use tricks to get past AI detectors
It rewrites what sounds generated. Detector tricks are banned.
Treat missing data as zero
Unknown stays unknown, and the documents say so.

Without you driving it

Everything you would have typed, the team already handles.

A Growth Leader runs a team of specialists: strategist, researchers, topic editor, editor-in-chief, writers and an independent reviewer. They hand work to each other and report back to the Leader. Nobody waits for you to say what is next.

The Growth Leader at the desk

you pick the next step

It decides what to do next

The Leader looks at where each language stands and hands the work to the right specialist.

Daily run started. pt-BR and de have no topics this week.
The Writer with a tablet

you carry the context

It remembers the whole job

Each task keeps its full history from start to finish. If a run is interrupted, it resumes where it stopped.

Worker restarted. Writer resumed the same draft.
The Reviewer with a tablet

you check the work

It checks its own work

An independent Reviewer reads every draft against your site. Data it can't find stays marked unknown.

Sent 1 draft back: a price it quotes isn’t on your site.
The Keyword Researcher with a tablet

you translate everything

Every language is its own market

Research and topics run separately for each language you sell in. Articles go live on your domain under /en/, /pt/ or /de/.

de keyword map: 41 terms, 6 with unknown volume.

Your part is the goal.Set it once. After that the Growth Leader publishes what passes review, day and night. Anything that breaks the rules you set waits for you.

Research→Write→Review→Leader publishes→Live

Under the hood

Claude Code is a harness for code. GrowthHarness is a harness for growth.

For an agent that runs for weeks, the prompt is the easy part. The work is in everything around it, and all of it is open source.

continuous runs

One task, one history

A task keeps its identity and conversation for its whole life. Long histories are compacted; the original is kept.

durable steps

Survives restarts

Work runs as durable workflow steps. Interrupted tasks resume, and external jobs are never submitted twice.

self-audit

Checks itself every 30 turns

The agent decides whether to keep going or finish. Usage is recorded, and it never forces a stop to wait for you.

hard rules in code

Judgment stays with the model

Workspace isolation, publishing rules and quality checks are enforced in code. What to research and write is left to the agents.

bring your own model

Any provider, per role

OpenRouter, OpenAI, Anthropic or a custom endpoint. Planning, writing and review can each use a different model.

workers · d1 · r2 · durable objects

Your Cloudflare account

The console, the agents and your published blog all run in one Worker you deploy. Sitemap and IndexNow included.

Before you install

What it doesn’t do yet

Start it tonight.

Then walk away. Check back to see what it published.

View the source on GitHub →
Node 22.18+ · runs locally first
$ git clone https://github.com/ahamoment-101/growth-harness.git
$ cd growth-harness && npm ci
$ npm run setup -- --local
$ npm run dev
# add a model key in .dev.vars, then give the Leader a goal