0001C ← Back to 3webobs.com

AI Readiness of 3webobs.com

We run our own 167-signal engine against our own site. This score is live — fetched from /audit when this page loads — not a fixed snapshot that goes stale.

Running the audit now…

What we found and fixed

A running, honest log. Nothing here is hidden after the fact — see the full technical log in REPAIR_SUMMARY.md.

1 September 2026 — v3.1, after an external audit

A signal could be reported as incomplete and perfect at the same time Two rules computed the verdict from one condition and the score from a separate formula. A brand named seven times in the body but absent from the title and the H1 came back as partial with a score of 100. Status is now derived from the score, once, for all 167 signals. Where a rule disagrees with its own number, the number wins and the disagreement is written into the evidence rather than smoothed away.
Signals that could not be tested were scored zero A signal marked not applicable now carries no score at all, instead of a zero that quietly penalised the site for the limits of an external scan.
Speakable markup was required on every page Speakable is a limited feature, restricted to news publishers in a small number of markets. Asking for it on a pricing page or a glossary produced a failure that cost the reader work for no gain. It is now requested only where editorial content is actually present, on the same rule already used for Article.
Scores were published without saying how much they covered A dimension score read as a verdict on the whole dimension. It never was: some signals need backlink data, Search Console or traffic figures that no public scan can reach. Every dimension now carries the share of its signals that produced a real verdict, and a confidence label derived from it. A 93 with 55% coverage is a different claim from a 93 with 100%, and the report now says which one it is.
The engine could not see its own A2A capability Four A2A signals reported that no capability was declared safe to invoke, while capabilities.json declared exactly that and an external auditor had already executed it successfully. The real reason was different: invocation requires explicit opt-in from whoever runs the audit, because safe_to_invoke is a claim a site makes about itself, and a scanner that POSTs on that basis alone executes code on a target that granted itself permission. The opt-in stays. The message now states the actual reason, and a self-audit of this domain enables it automatically, since here the auditor and the target are the same party.
Four different price lists were published at the same time The homepage, the FAQ, the pricing page and capabilities.json each carried a different set of numbers, because every number was copied by hand into every surface. Prices now live in a single file, pricing.json, from which every other representation is generated. An agent that reads the machine-readable contract and a person who reads the page now see the same offer.
Monitoring was sold before it could run Scheduled re-observation had no clock behind it, so the monitoring plans were listed as pre-order rather than presented as available. The hourly trigger is now live and verified end to end, and the plans moved to in-stock. Machine access is still marked pre-order for the same reason: it needs API keys and prepaid credit, and neither exists yet.

30 August 2026

llms.txt was serving the wrong content It returned a duplicate of sitemap.xml (XML) instead of a real llms.txt file. Rewritten with real markdown content; the engine's own rule was also tightened so it no longer passes XML masquerading as llms.txt.
The Acceptable Use page was serving JSON, not HTML A prior upload accidentally overwrote policy.html with authority.json's content. Restored from the last known-good version.
Any missing URL returned the homepage with a 200 status A missing 404.html made Cloudflare Pages fall back to serving index.html for unmatched routes. A real 404 page now exists.
18 declared JSON Schema references pointed nowhere Every $schema field pointed at a schemas/ folder that was never published. Real, resolvable schema files are now self-hosted and every file repointed to them.
The dashboard and the AI synthesis showed two different scores The homepage was silently recomputing its own global score with a different formula than the one the engine itself produces. It now uses the engine's own number, and the grade thresholds were unified too.
Natural-language input to the A2A endpoint failed "audit example.com please" was parsed as if the whole sentence were a URL. The endpoint now extracts the URL from free text.
tasks/get and tasks/cancel were missing The agent card declared stateTransitionHistory: true without backing it. Both methods are now implemented against the obs.permanent subscription store.

Questions

It measures how a website presents itself to AI systems, answer engines and search crawlers. The engine fetches the page, robots.txt, sitemap.xml and the declared machine-readable signal files, then evaluates 167 signals across the human web, the AI web and the machine web.

No. Every score is produced by deterministic rules applied to evidence actually observed on the website, and the narrative summary is assembled from those same results by fixed templates. No language model is involved at any point, and no audit data is sent to an LLM provider. The rules are deterministic; observed evidence can change between runs, and each report states how much of it could be observed.

Because a signal that cannot be verified from public sources has not failed — it simply could not be tested. Marking it as failed would invent a verdict. Every report states how many signals were actually tested.

SEO is the technical and content foundation used by search engines. AEO structures content so assistants extract direct answers. GEO makes the brand entity discoverable and citable by generative systems. AIO covers how AI systems understand, rank and reproduce content across the full stack.

No. The audit inspects only publicly served resources. Nothing is installed, no tracking code is added, no authentication is attempted, and no private area is accessed.

The first three reports per domain each calendar month are free. After that each report is EUR 19, excluding VAT. Monitoring one domain costs EUR 29 per month for a monthly interval, EUR 49 for weekly and EUR 99 for daily. Machine access for agents is EUR 0.50 per call on prepaid credit, EUR 0.40 in a 1,000-call pack and EUR 0.30 in a 5,000-call pack, with an enterprise tier on request. It returns raw JSON only, without the PDF, the shareable report URL, the signed report or the retained history that come with the EUR 19 report. Machine access is not open yet: it requires API keys and prepaid credit, both in preparation. Full pricing is published at 3webobs.com/pricing.

Yes. The engine implements the Agent-to-Agent protocol at /a2a, in versions 1.0 and 0.3, with an agent card at /.well-known/agent-card.json. A REST endpoint at /audit accepts a URL and returns the same report as JSON. Worked examples are published at 3webobs.com/agents.

No. Third-party AI systems change their behaviour without notice and no provider guarantees citation. The audit identifies observable technical signals within your control; it does not promise a ranking, a citation or a commercial outcome.

No. The report is a technical observation, not a certification and not a legal opinion. For a formal classification under Regulation (EU) 2024/1689, obtain independent legal analysis.

AIVENTURE S.R.L., a company registered in Bucharest, Romania, European Union, operating under the 5thElement.ai brand. Registration details and the full legal documentation are published on the site.