
OpenClaw · 2026-07-12
From 57 to 86: Why I Rebuilt Neuvottelija.com for AI Agents
Rebuilding neuvottelija.com as a static-first Astro site on Cloudflare Pages raised its Cloudflare Agent Readiness score from 57 to 86 by making machine-readable delivery — markdown mirrors, llms.txt, JSON indexes, .well-known documents, JSON-LD — a first-class product primitive rather than a prerender workaround.
I did not rebuild neuvottelija.com on Cloudflare because the old site looked wrong. I rebuilt it because a growing share of discovery and knowledge work now begins through AI systems. Those systems need a site that can be discovered, interpreted, cited and used without pretending to be a browser with infinite patience and a full JavaScript runtime.
Cloudflare’s Agent Readiness benchmark made the difference visible. The existing Lovable-based neuvottelija.fi implementation scored 57. The new Cloudflare-hosted neuvottelija.com scored 86. This is a benchmark result, not a claim that a score alone creates business value. It is nevertheless a useful diagnostic: it shows whether a site is merely accessible to a browser or actually designed as a surface an agent can understand and use.
The problem was not the UI. It was the delivery model.
neuvottelija.fi is a Vite/React single-page application created and operated through Lovable. The live application returns a document whose meaningful page content is assembled after JavaScript runs. That model is excellent for iterating quickly on an application. It is much less natural for content that must be reliably available before JavaScript executes, including search snippets, structured knowledge, article archives and agent interfaces.
We did not ignore the problem. The repository contains a custom Puppeteer prerenderer. It visits routes at build time, waits for the React application to settle, writes rendered DOM into static index.html files, and hydrates them on the client. It replaced an earlier react-snap attempt whose bundled Chromium could not reliably execute modern JavaScript.
But that is precisely the point. Prerendering was an operational workaround around the default product architecture. The Lovable flow could skip it in preview or when builds became slow or fragile. The repository documentation explicitly describes PRERENDER=0 as the escape hatch for Lovable deployments. Lovable could support clever workarounds, but it did not make static delivery, content negotiation and machine-readable discovery dependable first-class production primitives for this site.
The Cloudflare build starts from a different premise
The rebuilt neuvottelija.com is a static-first Astro site deployed on Cloudflare Pages. The server response contains the content. JavaScript is an enhancement, not a prerequisite for knowing what a page says.
That one design decision made the agent surface normal product work rather than exceptional infrastructure:
- Markdown mirrors for pages, with
Accept: text/markdowncontent negotiation llms.txt, JSON indexes and RSS for structured discovery- HTTP Link headers that advertise the relevant interfaces
.well-knowndocuments for API catalogues, MCP, agent skills and agent cards- JSON-LD, sitemaps, canonical URLs and publication dates for provenance
- Explicit crawler policy at the edge
The difference is not one file called llms.txt. It is that the publishing system produces human-facing and machine-facing representations from the same source material.
The unglamorous engineering mattered
The Cloudflare build was not a one-click score improvement. The first scan was 71. A content-negotiation middleware existed but was not being deployed because the deployment command ran from the wrong directory. Strict metadata requirements needed exact headings and fields. Extensionless .well-known files needed explicit content types. Managed robots controls could silently contradict repository policy. An older Worker route could intercept an entire subdomain before the intended Pages project saw a request.
These are not glamorous details. They are what turns a diagram of an agent-ready site into an operational one.
The broader lesson
An agent-ready website is not a chatbot widget. Nor is it a claim that every crawler should receive unrestricted access. It is a deliberate interface contract: content is available without an expensive browser simulation; the site advertises how it can be discovered and queried; outputs preserve source, date and canonical identity; access boundaries are explicit; and human publishing and agent publishing share one auditable source of truth.
The new site can be edited in a browser, drafted through a chat workflow or changed through Git. In every case, the end of the pipeline is the same: a source file, a commit, a build and an inspectable page. That is the strategic value of the move from 57 to 86. Not a badge, but a better operating model for a web where the next reader may be a person, a search engine or an AI agent acting for one.
Sarja: OpenClaw-sarja · Markdown: index.md · Aiempi osoite: https://www.neuvottelija.fi/openclaw/from-57-to-86-agent-readiness · In English