Taskmaster
An AI agent that surveys an unfinished WordPress site, plans the remaining work and carries it out. Nothing runs until a person approves the plan, and every change is verified or rolled back.
Overview
A half-finished WordPress redesign is rarely one clean bug. The test case is a real site: a Greek dog trainer’s WordPress, first built in 2015 and caught midway through its redesign. Old WPBakery pages sit next to new Elementor ones, and the homepage still offers “Track a shipment”, copy left behind by a logistics template.
Finishing it means touching every page, and one wrong delete can erase years of a small business’s history. So the design question was how much an agent may do on its own, and where a person has to decide.
Taskmaster surveys the site, writes a task for every page and waits. Only approved tasks run. Each change is read back from WordPress and checked, and anything that fails is restored. It works on a sanitised copy of the site, with accounts, contact data, credentials and photographs removed.
Skills: Agentic Workflow Design · Autonomy Boundaries · Approval UX · Control Plane Design · Verification & Rollback · Google ADK · Gemini API · Cloud Run · Firestore · WordPress REST · Python
Where the model goes
The first version let the model rewrite a page. It returned 7% of one page, and the result still passed its acceptance check, because no one had written “keep all visible text”.
That changed the architecture. WPBakery is a grammar, so migration became a parser and an emitter written in code. Gemini, running inside a Google ADK planner, only decides what each page needs. Cleaning follows the same split: the model points at the exact demo sentences, and code removes only verbatim matches.
The rule that came out of it: “Put the model where judgement lives, not where parsing lives.”
Autonomy boundaries
The agent surveys, plans and proposes without asking. Anything that writes to the site waits for a person, and the rules below are enforced in code and covered by tests.
- 01Silence waits
Silence is not consent. Pending and rejected tasks are never touched.
- 02Plan-bound
An approval names the exact plan it was given for. Replanning sends changed work back to pending.
- 03Trash only
Deleting means recoverable WordPress trash, and only when the page’s own title says it is disposable.
- 04Every character
A migration must keep all visible text. Plugin shortcodes it does not know stay verbatim and are reported.
- 05Read back
Each write is checked as WordPress stored it. If a check fails, the original content and builder settings are restored and checked again.
Control plane
The control plane is where a person meets the agent. It explains the plan in plain language, lists the six decisions only an operator can make, and gives every page a card with its risk, its reason and the checks it has to pass.
Pressing Run starts a Cloud Run Job and returns at once, so the person can leave. Progress, diffs, checks and outcomes are written to Firestore and appear on the same page.
The public version is a read-only evidence view. It shows the recorded plan, decisions and outcomes, while Approve, Reject and Run are disabled and direct write attempts are refused.
Architecture
Each part has one job. The control plane manages the plan and the approvals but never does the work. The planner judges what each page needs. The executor carries out approved tasks only, and reaches WordPress through its REST API, never its database.
Built with: Gemini 3.5 Flash via the Gemini API · Google ADK 2.7 · Cloud Run Job and services · Firestore · WordPress REST API · Python
Results
One deployed planning run wrote all 41 tasks in five ADK tool calls. A separate live run applied and verified the two migrations that had been approved. A read-only check converts all 23 WPBakery pages in memory and writes nothing.
- 41tasks planned, one for every surveyed page
- 2 of 2approved migrations applied and verified live
- 23 of 23WPBakery pages convert without losing visible text
- 0WPBakery layout shortcodes left behind
Limits
The check covers structure and text; it does not yet compare how the pages look. Screenshot comparison and a second WordPress installation are the next proofs. Until then, plugin structures the agent does not support stay visible and unresolved: page #230 keeps its Google Maps shortcode on purpose.
Honest incompleteness is safer than confident deletion. What the agent cannot do safely stays in place, with the reason on record, for a person to decide.
See it run
The evidence view shows the recorded plan, decisions and outcomes from the live deployment. The three-minute video follows a full approved run, and the repository rebuilds the setup from a clone.

