{
  "ok": true,
  "url": "https://example.com/",
  "host": "example.com",
  "status": 200,
  "scannedAt": "2026-09-12T12:58:33.248Z",
  "score": 74,
  "verdict": "a few tells",
  "ssrWords": 21,
  "findings": [
    {
      "id": "no-description",
      "tier": 2,
      "category": "finish",
      "weight": 8,
      "label": "No meta description at all",
      "evidence": [
        "no <meta name=\"description\">"
      ],
      "fix": "Add a `<meta name=\"description\">` of 140–160 characters, unique per route. Without one, search engines and link previews invent one from whatever text they scrape first."
    },
    {
      "id": "no-og-image",
      "tier": 2,
      "category": "finish",
      "weight": 8,
      "label": "No Open Graph image — links unfurl as a bare grey box",
      "evidence": [
        "no og:image"
      ],
      "fix": "Add Open Graph and Twitter card tags with a real 1200×630 `og:image`, plus `og:title`, `og:description`, `og:url` and `twitter:card=summary_large_image`. Right now every share of this link renders as an empty grey rectangle, which reads as unfinished more than any design choice does."
    },
    {
      "id": "no-robots",
      "tier": 2,
      "category": "finish",
      "weight": 5,
      "label": "No robots.txt",
      "evidence": [
        "GET /robots.txt → 404"
      ],
      "fix": "Add a `/robots.txt` that returns 200 and points at the sitemap. Do not block your own data endpoints in it — agents and crawlers that cannot fetch them will render your pages as empty."
    },
    {
      "id": "no-sitemap",
      "tier": 2,
      "category": "finish",
      "weight": 5,
      "label": "No sitemap.xml",
      "evidence": [
        "GET /sitemap.xml → 404"
      ],
      "fix": "Generate a `/sitemap.xml` listing every real route with an honest `lastmod`. Do not stamp today's date on every URL — that is a tell of its own and search engines discount it."
    }
  ],
  "prompt": "You are working on the codebase behind example.com.\n\nAn external scan of the deployed site found the tells listed below — the specific things that make it read as assembled by a website builder rather than built. Fix them in the order given. Each item names the evidence observed on the live page, so you can confirm the problem before you change anything.\n\nRules for this task:\n- Do not redesign the site. Change only what each item asks for.\n- Do not change any URL, route or page title beyond what an item explicitly requires.\n- If an item does not match what you find in the code, say so and skip it rather than inventing a change.\n- Work through the list top to bottom and report what you changed for each.\n\n## Unfinished production basics\n\n### 1. No meta description at all\nObserved on the live site: no <meta name=\"description\">\n\nAdd a `<meta name=\"description\">` of 140–160 characters, unique per route. Without one, search engines and link previews invent one from whatever text they scrape first.\n\n### 2. No Open Graph image — links unfurl as a bare grey box\nObserved on the live site: no og:image\n\nAdd Open Graph and Twitter card tags with a real 1200×630 `og:image`, plus `og:title`, `og:description`, `og:url` and `twitter:card=summary_large_image`. Right now every share of this link renders as an empty grey rectangle, which reads as unfinished more than any design choice does.\n\n### 3. No robots.txt\nObserved on the live site: GET /robots.txt → 404\n\nAdd a `/robots.txt` that returns 200 and points at the sitemap. Do not block your own data endpoints in it — agents and crawlers that cannot fetch them will render your pages as empty.\n\n### 4. No sitemap.xml\nObserved on the live site: GET /sitemap.xml → 404\n\nGenerate a `/sitemap.xml` listing every real route with an honest `lastmod`. Do not stamp today's date on every URL — that is a tell of its own and search engines discount it.\n\n## When you are done\n\nRe-run the checks yourself before reporting: fetch the deployed page with curl and confirm the markers above are gone from the HTML, that unknown paths return 404, and that `/robots.txt` and `/sitemap.xml` answer 200. Then summarise anything you deliberately did not change and why.",
  "categories": [
    {
      "key": "attribution",
      "name": "Attribution",
      "blurb": "Marks the builder left behind",
      "lost": 0,
      "count": 0
    },
    {
      "key": "defaults",
      "name": "Defaults",
      "blurb": "Scaffold settings never changed",
      "lost": 0,
      "count": 0
    },
    {
      "key": "finish",
      "name": "Finish",
      "blurb": "Production basics not yet done",
      "lost": 26,
      "count": 4
    },
    {
      "key": "safety",
      "name": "Safety",
      "blurb": "Secrets and data access",
      "lost": 0,
      "count": 0
    }
  ]
}