§ 01 / Vs 10Web AI

10Web is a prompt loop.
Atlas is a manifest.

10Web's AI builder takes a sentence and returns a working WordPress site. The output is opaque, the markup is unreadable, and the loop is owned by 10Web. Atlas takes the same intent, stores it as a JSON manifest in your repository, and renders it server-side. One is a black box. The other is a document.

§ 02 / The prompt loop

A sentence in. A site out.

The 10Web UX is a chat box. You describe the site, it builds the site, and the build happens somewhere you cannot see. The transcript below is a faithful reconstruction of the exchange.

10Web AI Builder — chat transcript
You

Build me a landing page for a Sydney dental practice. Hero, services grid, testimonials, booking CTA.

10Web

Generating your website…

  • Choosing a theme
  • Generating layout
  • Writing copy
  • Selecting images
  • Publishing
10Web

Your site is ready. your-site-7f3a.10web.io

Atlas — the same intent as a manifest
// content/landings/sydney-dental.atlas.json
{
  "layout": "landing",
  "sections": [
    { "kind": "hero",
      "heading": "Gentle dentistry in Surry Hills." },
    { "kind": "services",
      "items": ["check-up", "clean", "whitening"] },
    { "kind": "testimonials",
      "from": "reviews/sydney-dental.json" },
    { "kind": "cta-booking",
      "endpoint": "/api/book" }
  ]
}

The same intent, expressed as a file you can read, diff, and edit. No chat history. No black box.

§ 03 / What 10Web returns

The HTML you did not write.

When the loop closes, 10Web hands you a finished WordPress site. The markup beneath it is generated by Elementor, wrapped in 10Web's hosting stack. This is what your homepage actually looks like in view-source.

your-site-7f3a.10web.io — rendered HTML 14.3 KB · 31 wrapper divs · 0 reusable classes
<section data-elementor-type="wp-page">
  <div class="elementor-section elementor-top-section elementor-element elementor-element-1a2b3c4" data-id="1a2b3c4">
    <div class="elementor-container elementor-column-gap-default">
      <div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5d6e7f8">
        <div class="elementor-widget-wrap elementor-element-populated">
          <div class="elementor-element elementor-element-9a0b1c2 elementor-widget elementor-widget-heading">
            <div class="elementor-widget-container">
              <h1 class="elementor-heading-title elementor-size-default">Gentle dentistry in Surry Hills.</h1>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>

§ 04 / The things you do not get

After the loop closes, you cannot

§ 05 / The structural alternative

Manifest in. Deterministic HTML out.

Atlas takes the same kind of intent — "Sydney dental practice, services, testimonials, booking" — and stores it as a JSON manifest in your repository. The block renders it server-side every request. The same manifest produces the same bytes every time.

01 manifest — in your repo
{
  "kind": "hero",
  "heading": "Gentle dentistry in Surry Hills.",
  "lede": "Family-run, ten years on Crown St.",
  "cta": { "label": "Book online",
          "href": "/book" }
}
02 rendered HTML — deterministic, hydration-light
<section class="hero">
  <h1>Gentle dentistry in Surry Hills.</h1>
  <p>Family-run, ten years on Crown St.</p>
  <a href="/book">Book online</a>
</section>

A prompt-loop hands you a site. A manifest hands you a structure.