Quality

AI builds it. Caelo checks it.

Every Stage builds your site exactly as Publish live will ship it, and checks that build before anyone sees it. The target is 100 in every Lighthouse category and no open findings. The assistant fixes what it can. What it cannot fix comes to you as one decision.

Why it matters

A page can look right and still be wrong.

The assistant builds fast. What slips through does not show at first glance: the same block pasted onto twelve pages instead of placed as one module, a link that broke when a page moved, a missing description, a score of 92 that someone calls fine. On a site that grows every week these add up. Caelo looks for exactly these things, at four points, and 92 does not pass.

While the assistant writesMarkup that copies a module, a pattern pasted for the second time, CSS that leaks out of its module, a colour outside your theme: the assistant gets a hint in the same turn and fixes it.
At StageA link to a deleted page, a published page without a meta description or a page script that does not parse stops the Stage. The message names the page and the fix.
On the staged buildPage checks read every page. Lighthouse measures when the Stage changed how pages look or load. The result arrives in the chat a minute or two later.
Publish liveOpens when nothing is open: every problem fixed, or accepted by a person with a reason. Only a person publishes.

What is checked

Everything a visitor or a crawler would trip over.

The check reads the staged build, the same files Publish live puts online. Nothing is checked against a preview that looks different from what goes out.

Homepage plus up to five changed pages

Speed, accessibility, best practices, search

Lighthouse on a mobile viewport. Every category must reach 100 and every audit in it a perfect score. Lighthouse shows green from 90, Caelo does not pass it. Performance is the best of three runs, on a CPU calibrated to the same mid-range phone on every install.

    Every page, every Stage

    Components, not copies

    A pattern on two pages belongs in one module, and a menu two modules keep as copies belongs in one shared list. So a change happens once. The same markup on two or more pages blocks. Near copies, and layout CSS only one module uses, are warnings.

      Every page, every Stage

      Links and availability

      Every link, image, stylesheet, script, canonical and language link has to be answered by the build itself. A link or file nothing serves blocks, and so does a redirect loop. A link that only works through a redirect, and a page nothing links to, are warnings.

        Every page, every Stage

        Links that follow your pages

        Caelo stores an internal link as a reference to the page, not as its address, so it moves when the page moves. A target that was deleted, or has no version in the page's language, blocks. A target that is still a draft blocks Publish live.

          Every staging and live build

          Search basics, filled once

          Before a page goes live for the first time, the assistant writes its title and description. Content edits never rewrite them afterwards. A published page without a meta description stops the build.

            Plugins

            A plugin checks its own work.

            A plugin knows rules Caelo's core cannot know, so an active plugin can add its own checks to every Stage. They read the same staged build, cannot change anything, and land in the same report with the same Fix and Accept buttons. A plugin check that fails or hangs fails the whole check, it never counts as nothing found. The first is International Site, for sites in more than one language: each finding names the next step.

            WarnsA menu, list, category or tag is not translated yet. Until it is, its entries are hidden on that language's pages, never shown in the wrong language.
            WarnsA menu entry points to a page that has no version in that language, so it is hidden there.
            WarnsA page's properties are not translated yet.
            BlocksFrom Caelo's core, on every multilingual site: a link to a page that has no version in the linking page's language.

            When something is found

            The assistant fixes. A person decides the rest.

            Problems never start the assistant on their own. A card in the chat groups them by rule across pages, for example “Missing alt text, 12 pages”, and waits for you.

            One click

            Fix all with AI

            The assistant fixes, stages and checks again, and keeps going as long as each round gets closer to the target. A round without progress, a fixed number of rounds or a cost limit stops it and hands back to you.

              Only a person

              Accept, with a reason

              Something can't be fixed, or you want it that way? Accept it per group, with a reason. It stays visible, you can revoke it, and if the page gets worse it blocks again.

                Labelled as Caelo's

                Caelo's own faults

                When a finding comes from Caelo itself, such as how it caches its own files, it is marked as Caelo's and reported as a Caelo bug. It still blocks, and the assistant never suggests accepting it.

                  No silent pass

                  When the check can't run

                  A check that did not finish blocks too. A person can publish anyway with an explicit click and a reason, which is recorded. The assistant cannot.

                    This site

                    This page went through the same check.

                    caelo-cms.com is built and run in Caelo, with the same assistant and the same Power-MCP you would use. Every page here passed the check before it went live. When the check got something wrong, that was a Caelo bug, and it was fixed in Caelo, not accepted on this site.

                    CheckWhat it coversMeasuredFound
                    Page checksstructure, links, references39 pages read0 errors, 0 warnings
                    LighthousePerformance, Accessibility, Best Practices, SEO3 changed pages, incl. this one and the homepage100 · 100 · 100 · 100 on each
                    ResultAudit passednothing opennothing accepted

                    On 23 October the check flagged 18 docs pages as copied markup. They weren't: nested modules had been read as free HTML. The fix went into Caelo 0.10.66; nothing was accepted on this site.

                    Limits

                    What the check does not do.

                    A check is only useful if you know where it ends.

                    Not every page every timeLighthouse runs on the homepage and up to five changed pages, and only when a Stage changes how pages look or load. The page checks read every page on every Stage.
                    Before going liveThe check runs on the staged build, the exact copy Publish live puts online. What changes after publishing, such as an external link that breaks later, is not monitored.
                    Not whether it is trueFacts, prices and promises on your pages are yours to check. The assistant can help, but no rule decides it.
                    Not everywhereContent that an animation keeps hidden for real visitors is not detected. On AWS and Azure there is no Lighthouse runner.

                    Start

                    Let the assistant build. Let Caelo check.

                    Install Caelo in your own cloud or on your own server and stage your first page.