A 2,224-page site left its CMS in a week. The hard part starts after.
EnactOn published a comparison of Webflow and Astro this year, and one detail in it should stop anyone who has ever scoped a CMS migration. According to that article, ZenML's engineering team rebuilt a 2,224-page site with 20 CMS collections in Astro in approximately one week, using Claude Code, with the content stored as Markdown and MDX in a git repository that agents can read, edit, commit, and deploy. The numbers are theirs; read the EnactOn article for the detail. Read the rest of this one for what the week does not cover.
Migration used to be the moat
For fifteen years the cost of leaving a CMS was the reason nobody left. Two thousand pages and twenty collections meant a quarter of an agency's time and a budget line most marketing teams could not defend. The platforms did not need to lock you in. The migration did it for them.
That cost is gone. An agent that reads the whole codebase can rebuild collections as content schemas, pages as files, and templates as components, and it can do it in days. One team's result is not a benchmark, but the direction is the same everywhere we look. Getting out is now a week of agent time.
The hard part starts after
When migration is cheap, the question moves. It is no longer whether you can leave. It is whether you can operate what you land on. A 2,224-page site in a repository is a site any agent can change any page of, in one commit, with no form field in the way. That is the capacity you left for. It is also the exposure.
- Who asks? A request that starts in a chat window and ends in a commit has no owner once the window closes.
- Who approves? A pull request is a fine gate for engineers and an invisible one for the marketing lead.
- What changed? A commit message says what the agent did to the files. It does not say why, or who asked, or what context the agent was given.
- Can we restore? Git can restore anything, provided someone knows which commit, which branch, and what the deploy did.
- Is every page still good for answer engines after the 300th agent commit? Nobody re-reads two thousand pages by hand. Drift is silent until the traffic goes.
A team that cannot answer those five questions will, reasonably, stop letting the agent work. Then the migration bought a faster site and nothing else.
What governed from day one means
Governed from day one is a list of things that are true before the first agent commit, not a slogan. Concretely:
- The repository and the host are connected, so every commit, pull request, and deploy is attributed to the person or agent responsible.
- Every page is crawled and scored at cutover, so there is a baseline before anything changes.
- Roles and risk tiers are set: who can ask, who can approve, and which changes need a second approver.
- A crawl cadence is running, so the baseline is re-checked on a schedule rather than when someone notices.
- Findings arrive with a drafted fix, so a page that drops ten points from its baseline becomes a request the team can approve, not a ticket someone has to write.
None of that requires the platform you just left. It requires a management layer above the agent, the repository, and the host. Dispatch governs the work; other systems execute the work. The findings and drafted fixes are the Inbox.
Before cutover
- Redirect map: every old URL resolves to its new home with a 301, including collection and pagination URLs.
- Sitemap: generated from the new site, submitted, and free of URLs that no longer exist.
- Structured data parity: the JSON-LD the old site emitted is emitted by the new one, page for page.
- Forms: every form posts somewhere, and someone has received a test submission.
- Analytics: the tag fires on the new site and events keep the old event names.
- Search console: the new property is verified and the old one is still watched for errors.
- Roles set: approvers named by role, risk tiers agreed, second approver assigned for high-risk work.
- First governed request: one small change asked, previewed, approved, and shipped through the layer before DNS moves.
Two ways in
If your site is still inside a CMS, Dispatch Migration Services does the assessment and the move: the architecture chosen for the site, pages moved pixel for pixel, redirects and structured data checked, and the site handed back governed from day one. If you already moved, the week is behind you and the hard part is not. Connect the repository and host and the loop is running this afternoon, free for one website.
How long does a CMS to Astro migration take with an AI coding agent?
EnactOn's Webflow vs Astro article reports that ZenML's engineering team rebuilt a 2,224-page site with 20 CMS collections in Astro in approximately one week using Claude Code. That is one team's result, not a benchmark, but it shows the order of magnitude has changed.
What goes wrong after a code-first migration?
Usually not the site. What goes missing is accountability: who asked for a change, who approved it, what it did to the pages, and how to put it back. Without those answers a team stops letting the agent work, and the migration bought a faster site and nothing else.
What does governed from day one mean?
The repository and host are connected so every commit and deploy is attributed, every page is crawled and scored at cutover, roles and risk tiers are set, a crawl cadence is running, and findings arrive with a drafted fix. All of that is in place before the first agent commit lands on production.
Does Dispatch do the migration itself?
Dispatch Migration Services does the assessment and the move for teams that want it done for them, and hands the site back governed from day one. Teams that have already moved connect their repository and host to Dispatch directly, free for one website.
Dispatch Team
Writing about AI-powered websites, AI governance, and collaboration, helping teams turn AI from scattered experiments into shared organizational capability.