
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.
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 nightThe classroom is the real console layout and figures. Numbers and the night are sample data.
You already have a coding agent
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.
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?
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
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.
What should search do for this business, and where can it actually win?
SEO_STRATEGY.mdRESEARCH_NOTES.mdVersioned, one line of versions per language.What do people really type, and what are they trying to get done when they type it?
Keyword mapEvery keyword has a reason, or a reason it was dropped.What should we write now, and what should wait?
Topic groupOr a research request, with the reason.What does the reader need answered, and can we back up every claim?
Draft + evidenceSelf-checked in a fresh session before handoff.Would a careful editor let this go out under your name?
Pass / ReviseRevisions go back to the same writer.Can search engines and AI crawlers read it and show the right language to the right person?
/pt/blog/…Server-rendered HTML on your domain.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
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.
Specific, practical guides written for working adults. The pages ranking today are mostly written for students and exam prep.
| Query | Intent | Monthly volume | What Google shows | Page to build | Status |
|---|---|---|---|---|---|
| como ler em inglês sem traduzir | Learn a method | 1,900 | How-to articles, video carousel | Practical guide | Planned |
| ler artigos em inglês | Learn a method | 720 | Lists, forum threads | Guide | Covered /pt/blog/ler-artigos-em-ingles |
| inglês para reuniões | Learn phrases | unknown | Phrase lists, course pages | Phrase guide | Watch overlaps “inglês para trabalho”. Keep one page. |
| app para ler em inglês | Compare tools | 880 | App store results, review lists | Comparison | Later needs our own feature data |
| tradutor inglês português | Use a tool | 450,000 | Translator box, tool pages | None | Excluded wrong intent; owned by translators |
Clear method intent, current results are aimed at students. Supports the reading-fluency cluster and links to the existing guide.
Merged with “inglês para trabalho” into one page to avoid two pages competing for the same searches.
Results are dominated by large review sites with hands-on tests. We have no comparison data yet. Asked the Leader for research before writing.
“Toque em qualquer palavra para ver o significado no contexto da frase.”glossly.example/pt/recursos · captured 22 Oct
“Learners who met words in meaningful context recalled more of them a week later.”Source is one small study. Worded as “can help”, not as a rule.
No source found for this number.Sentence deleted from the draft.
<html lang="pt-BR"> <title>Como ler em inglês sem traduzir | Glossly</title> <link rel="canonical" href="https://blog.glossly.example/pt/blog/como-ler-em-ingles-sem-traduzir"> <link rel="alternate" hreflang="pt-BR" href="https://blog.glossly.example/pt/blog/como-ler-em-ingles-sem-traduzir"> <link rel="alternate" hreflang="en" href="https://blog.glossly.example/en/blog/read-english-without-translating"> <link rel="alternate" hreflang="x-default" href="https://blog.glossly.example/en/blog/read-english-without-translating"> <script type="application/ld+json">{"@type":"BlogPosting","inLanguage":"pt-BR","datePublished":"2026-10-23"}</script> # sitemap.xml updated · IndexNow notified
Hosting included
No CMS, no theme, no deploy pipeline. Point one subdomain at your Worker and the team publishes straight to it, at any hour.
| Type | Name | Target | Proxy |
|---|---|---|---|
| CNAME | blog | growth-harness.you.workers.dev | Proxied |
This is the only step you take. The console shows the exact target and checks that the subdomain answers.
/en/blog, /pt/blog, /de/blog, so they share its authority.
Rendered by the product’s own blog template. Glossly is a sample product.
hreflang + canonicalsitemap.xml kept currentHosting works on a subdomain. Serving under www.yourdomain.com/blog needs a reverse proxy on your main site.
The shortcuts it refuses
Most AI SEO tools fail in the same few ways. These are the ones this team is built to avoid.
Without you driving it
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.

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

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

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

you translate everything
Research and topics run separately for each language you sell in. Articles go live on your domain under /en/, /pt/ or /de/.
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.
Under the hood
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.
Specialists report to the Leader, never to each other. Writers and the Reviewer work inside the Editor-in-Chief’s team.
continuous runsA task keeps its identity and conversation for its whole life. Long histories are compacted; the original is kept.
durable stepsWork runs as durable workflow steps. Interrupted tasks resume, and external jobs are never submitted twice.
self-auditThe agent decides whether to keep going or finish. Usage is recorded, and it never forces a stop to wait for you.
hard rules in codeWorkspace isolation, publishing rules and quality checks are enforced in code. What to research and write is left to the agents.
bring your own modelOpenRouter, OpenAI, Anthropic or a custom endpoint. Planning, writing and review can each use a different model.
workers · d1 · r2 · durable objectsThe console, the agents and your published blog all run in one Worker you deploy. Sitemap and IndexNow included.
Before you install
$ 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