{
  "title": "From 57 to 86: Why I Rebuilt Neuvottelija.com for AI Agents",
  "slug": "from-57-to-86-agent-readiness",
  "description": "A comparison of a Lovable-hosted React SPA and a Cloudflare/Astro static-first site: why agent readiness is an architectural property, and what changed when Neuvottelija.com moved from 57 to 86 on Cloudflare's benchmark.",
  "summary": "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.",
  "author": "Sami Miettinen",
  "lang": "en",
  "datePublished": "2026-07-12",
  "dateModified": "2026-07-12",
  "tags": [
    "OpenClaw",
    "agent readiness",
    "Cloudflare",
    "Astro",
    "SEO",
    "GEO",
    "static site",
    "llms.txt",
    "AI agents"
  ],
  "canonicalUrl": "https://www.neuvottelija.fi/openclaw/from-57-to-86-agent-readiness",
  "heroImage": "https://www.neuvottelija.fi/openclaw/og/from-57-to-86-agent-readiness.jpg",
  "markdownUrl": "https://www.neuvottelija.fi/openclaw/from-57-to-86-agent-readiness.md",
  "jsonUrl": "https://www.neuvottelija.fi/openclaw/from-57-to-86-agent-readiness.json",
  "markdown": "# From 57 to 86: Why I Rebuilt Neuvottelija.com for AI Agents\n\nI 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.\n\nCloudflare'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.\n\n## The problem was not the UI. It was the delivery model.\n\nneuvottelija.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.\n\nWe 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.\n\nBut 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.\n\n## The Cloudflare build starts from a different premise\n\nThe 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.\n\nThat one design decision made the agent surface normal product work rather than exceptional infrastructure:\n\n- Markdown mirrors for pages, with `Accept: text/markdown` content negotiation\n- `llms.txt`, JSON indexes and RSS for structured discovery\n- HTTP Link headers that advertise the relevant interfaces\n- `.well-known` documents for API catalogues, MCP, agent skills and agent cards\n- JSON-LD, sitemaps, canonical URLs and publication dates for provenance\n- Explicit crawler policy at the edge\n\nThe 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.\n\n## The unglamorous engineering mattered\n\nThe 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.\n\nThese are not glamorous details. They are what turns a diagram of an agent-ready site into an operational one.\n\n## The broader lesson\n\nAn 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.\n\nThe 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.\n",
  "text": "From 57 to 86: Why I Rebuilt Neuvottelija.com for AI Agents\n\nI 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.\n\nCloudflare'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.\nThe problem was not the UI. It was the delivery model.\n\nneuvottelija.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.\n\nWe 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.\n\nBut 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.\nThe Cloudflare build starts from a different premise\n\nThe 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.\n\nThat one design decision made the agent surface normal product work rather than exceptional infrastructure:\nMarkdown mirrors for pages, with Accept: text/markdown content negotiation\nllms.txt, JSON indexes and RSS for structured discovery\nHTTP Link headers that advertise the relevant interfaces\n.well-known documents for API catalogues, MCP, agent skills and agent cards\nJSON-LD, sitemaps, canonical URLs and publication dates for provenance\nExplicit crawler policy at the edge\n\nThe 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.\nThe unglamorous engineering mattered\n\nThe 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.\n\nThese are not glamorous details. They are what turns a diagram of an agent-ready site into an operational one.\nThe broader lesson\n\nAn 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.\n\nThe 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."
}