Agent teams governed by a single rubric, bounded loops with hard fact-check gates, and a meta-optimizer architected to resist reward hacking. One skeleton, pointed at six marketing functions.
Agent team + loop + rubric + a human on the gate, pointed at one marketing function until it runs itself.
The US site build used it as a build pipeline. The CMS rebuild was filled by this content team. The reporting model is folding its Layer 4 onto this engine. The same skeleton runs Google Ads ops, SDR outreach, and marketing email.
This page is the machinery; the work it produced is credited on those project pages.
At PingPong the website was a human operation. Webflow, and around it a product marketing manager, a product manager, a content manager, a designer and a content writer, all working the same page. Then the review: the marketing team ran several sprints where every person reviewed at least their own page, wrote up their feedback, and we discussed what to implement before anything changed. It was systematic and it worked. It was also slow, and it consumed most of a team.
At ThinkingAI I own website operations, inbound campaigns and the tech stack at the same time, so that shape was never going to fit. What I did instead was take the collaboration apart: every seat in that old room became an agent with its own context, its own skills, and its own to-do list, and the sprint review became a review loop. The systems below are that decomposition, and a new page now comes out of it in a few hours.
The agent roster is a copy of a real org chart: product marketing, writer, designer, UI/UX, assembly, reviewers, plus a loop that improves themAll four exist in a real repository with archived runs. One team builds web pages from a module catalog. One reviews and refines page copy. One generates publish-ready content, images included. And one system's whole job is making the other teams better.
The first phase of the site work was inventory. I built more than 30 reusable module templates, and each one declares its own constraints: which scenarios it suits, where it belongs on a page, roughly how much text each section holds, and the image dimensions it expects. That turns layout into a catalog an agent can choose from instead of a blank canvas it has to invent against.
A page run then works the way the old team did. The product marketing agent carries the product-capability knowledge base as its context. The writer agent carries brand tone of voice and the writing skills, held as system prompts. A UI/UX agent decides which module each block of content actually needs and picks the scheme from the catalog. The designer is its own sub-team: a visual instruction goes out, an image tool generates the asset, Claude Code inspects what came back, and an agent composites the HTML overlay when the module calls for one. An assembly agent puts the page together at the end.
Every module template predeclares scenario, placement, text budget per section and image dimensions, so selection is a constrained choice rather than a generation problemAn 8-stage pipeline takes raw page copy to publishable. A context distiller builds a cacheable brief, two prospect personas and a CEO persona score the draft in parallel, a synthesis stage resolves their conflicts into one change brief, and an architect revises. Then the hard part: a fact-check gate where any claim without a source is a must-fix, a de-AI pass, and a re-score by the same three reviewers against baseline. A human holds the publish gate.
The three reviewers run on three different vendors' frontier models, each briefed as a first-time visitor from our ICP with no prior context, asked the same blunt question: how fast can you tell what this is. They score, they read each other's findings, and they argue. Model diversity is the point. One vendor's blind spot stays one vendor's blind spot instead of becoming the review's.
8 personas defined in markdown · one scoring rubric as the single source of truth · every run archived in fullThis loop's job is making the team better. It attributes every score deduction to a single root cause and splits them honestly: instruction, context, and rubric defects are fixable; missing inputs, human decisions, and inherent tradeoffs are left alone. Concrete diffs are proposed only for the fixable kind, then an adversarial guardrail interrogates each one: real defect or score-gaming, does it generalize, what are the side effects. Survivors become a proposal for human review. Nothing auto-applies.
A quieter kind of improvement runs alongside it. Each page run has checkpoints where an agent can write back what it learned, so the skills and knowledge an individual agent needed on this page persist into its long-term memory for the next one. The meta-optimizer changes the team's rules through a human gate. This just means each agent starts the next page knowing more than it did on the last.
Founding principle: the score is a diagnostic signal, and optimizing against it is forbidden. Judges stay frozen and may only get stricter; adopted changes are re-validated on a different pageIn the 2026-07-06 run, all three reviewers flagged the same phrase: “rented LLM,” jargon sitting on the site's strongest differentiator. The obvious fix, diff D8, would let the final Content Master pass rewrite awkward terms into plain English. The guardrail caught what a naive optimizer would ship: the Content Master runs at stage 50, and the fact-check gate runs at stage 40, on the earlier draft, so a blanket rewrite permission would let fact-constrained claims land in final copy with no fact-check behind them. Verdict: REVISE. Ordinary jargon may be rewritten freely; any term touching an honesty red line may only be proposed by the Content Master.
Across all 10 diffs that round: every proposal cited a real failure, none loosened a gate · 9 ADOPT · 1 REVISE · 0 REJECTFive agents take source material to a live CMS entry. Product Marketing writes the guideline, outline, and image spec; the Writer drafts under hard de-AI rules; a Reviewer scores each piece through a dual-lens gate and leaves a record. Then the Designer generates the 16:9 cover via Volcano Ark Seedream 4.0, and Assembly builds the Sanity document and publishes it through the HTTP mutation API.
The same skeleton already runs product updates, blog covers, and a case-study specialization. That breadth is the reusability claim made concreteHill-climbing the judges' score converges on copy that flatters the judges. Goodhart's law, in production. The score reads like an instrument panel: it tells me where to look, and it is never the thing being maximized.
The review personas never get easier to please. Any change to a judge must tighten it. Improvements only touch the generating side, which keeps the delta between runs meaningful.
No proposed improvement gets in on plausibility. Each diff must point at a documented failure in the run artifacts. In the archived round, all ten did.
What agents say lives in markdown; how the loop runs lives in one workflow script; every score traces to one rubric file. Anyone can retune the whole system without touching code. That contract is what makes it portable.
Revision loops have a fixed budget, so there is no infinite churn. The fact-check gate is a hard stop: a claim without a source is a must-fix, with one bounded patch. Outputs are schema-validated.
The machine does the legwork end to end, then stops. Publishing a page and adopting a system change both require a person to say yes. Nothing in this architecture auto-applies.
Everything operational exists as archived runs and human-gated proposals in a real repository. The one thing this page does not have yet is an external track record.
The quality and speed lift is internal so far; there are no hard external outcome metrics yet, and I mark them to-be-measured rather than imply them. The content these systems produced is credited to the CMS Rebuild, with no double counting. This page claims the machinery, and only the machinery.
Personas as markdown, rubric as single source of truth, orchestration as a separate script. The system retunes to a new page, content type, or client by editing markdown, with no rebuild.
Claude Code
Seedream 4.0
Sanity API
It retunes to a new page, content type, or client by editing markdown.