The agent writes the compiler. The compiler migrates the site.
Most tools send every page through a model — which costs money linearly, produces output nobody can review, and cannot be fixed once. UEMA sends three. Then it writes the deterministic code that handles the rest.
0
2
8
96
- Hero0.96heroExact match
- Feature grid0.94cardsExact match
- Logo strip0.81logo-cloudVariant
- Comparison table0.42—Needs a new block
- Footer CTA0.98ctaExact match
One model call per cluster — never per region.
Three decisions that make the rest follow
The model is used for judgment and never for mechanics. Verification blocks rather than warns. And one block definition serves both AEM targets.
- Hero0.96heroExact match
- Feature grid0.94cardsExact match
- Logo strip0.81logo-cloudVariant
- Comparison table0.42—Needs a new block
- Footer CTA0.98ctaExact match
One model call per cluster — never per region.
Cost does not scale with page count
A model-per-page tool charges the customer who most needs a migration accelerator — the one with a hundred thousand pages — the most for it. UEMA's model spend is a function of how many patterns your site has, not how many pages.
- Output is reproducible, so a diff actually means something
- A defect on page 4,312 becomes a failing unit test, not a re-roll
- The bulk path runs with no network and no credential at all
Roughly three, because the model runs once per pattern — one to three exemplars — not once per page. Add a handful more for a site with many distinct templates.
From a live site to an open pull request
Start a migration
Pick where the content is coming from.
A live website
Crawl it with real Chromium
A design system
Map into an existing library
A Figma file
Ingest frames as blocks
An existing repo
Start from what is already there
A legacy export
XML, JCR or a content dump
A connected CMS
WordPress, Drupal, Sitecore…
Seven screens, one pipeline
Each tab is a stage rather than a section — pick a source, check a page, read the diff, watch the run, clear the queue. These are stylised recreations of the real interface.
- Hero0.96heroExact match
- Feature grid0.94cardsExact match
- Logo strip0.81logo-cloudVariant
- Comparison table0.42—Needs a new block
- Footer CTA0.98ctaExact match
One model call per cluster — never per region.
A migration accelerator, not a converter
The agent writes the compiler
Cost does not scale with page count. One page or a hundred thousand.
A model migrates one to three exemplar pages interactively. A human approves. The agent then writes a deterministic TypeScript importer module with fixture tests — and that module, not the model, runs over the remaining pages: in parallel, resumable, at zero model cost.
A defect found on page 4,312 is fixed in the importer, so it is fixed for all 10,000 — and the fix is a failing unit test, not a re-roll of a stochastic process.
Both AEM targets, co-equal
One block definition emits Edge Delivery and the Universal Editor.
A single BlockType produces the EDS block, its CSS and JS, and the AEM Cloud Service / Universal Editor model, authoring table and component-definition.json. AEM Cloud is not an afterthought bolted on later — the two targets are generated from the same source of truth.
Content and code, not just content
The blocks your migrated content needs to render, generated with it.
Most migration tools move content into components someone else has to build. UEMA generates the blocks, the CSS, the JS and the Universal Editor models — and validates them against the platform contract: no build step, no runtime dependencies, scoped CSS.
The contract is enforced by a validator, not requested in a prompt.
Eight blocking verification gates
A gate, not a report. Nothing ships past a failure.
Content parity, visual diff, links, accessibility, performance, SEO preservation, structural sanity, and — where the source CMS could be read — whether anything it holds failed to reach the page. Each runs deterministically over the emitted output, and a page that fails one does not quietly proceed with a warning attached.
What the architecture actually guarantees
0
Model calls in the per-page path — enforced by the dependency graph, not by policy
7
Blocking verification gates before anything reaches your branch
2
AEM targets from one block definition — Edge Delivery and the Universal Editor
1
Flat subscription, unmetered — with your own model keys, or ours as a separate add-on
What UEMA is not
It is in early development, and the README says so in its first paragraph. Here is the same honesty, before you invest an afternoon in it.
Not a replacement for a reviewer
It compresses a nine-month project to about three weeks by removing repetitive work. Someone who knows what right looks like still approves the exemplars and clears the queue.
Not yet proven at scale
The pipeline runs end to end and the mechanism for unattended bulk migration exists and is tested offline. It has not been run against a real site of significant size, and no pilot customer has been through it.
Not a website builder
It migrates and modernises an existing experience onto AEM. If you are starting from nothing, this is the wrong tool and will not pretend otherwise.
Quick answers before you dig in
The full list — setup, isolation, provider choice and what is still missing — is on the Contact page.
View all FAQsBecause the model does not see most of your pages. It migrates one to three exemplars interactively, a human approves the result, and the agent then writes a deterministic TypeScript importer module with fixture tests. That module runs over the rest — in parallel, resumable, at zero model cost. A 100,000-page site costs roughly what a 100-page site costs in inference.
Point it at your site. Keep the repository yours.
UEMA runs on infrastructure you control and pushes to a branch you own. The quickest way to judge it is a working session on one of your own templates.