<?xml version="1.0" encoding="UTF-8"?>
<!--
  Sitemap index — the ONE entry point for search-engine crawlers.
  Child sitemaps (each a well-formed <urlset>). The URL counts below are STAMPED
  from the files themselves by scripts/seo/stamp-sitemap-counts.mjs — never
  hand-written. Before 2026-07-28 they were prose ("the 2 real SPA shells",
  "the ~3,114 firm-directory pages") against files holding 11 and 2,479:
    · sitemap.xml           — 2 URLs — the real SPA shells (home EN/FR); KNOWN_PAGES-parity-gated (audit-seo-drift.mjs).
    · sitemap-teasers.xml   — 1,284 URLs — prerendered per-entity static pages (studies/concepts/academy + FR). GENERATED by scripts/seo/build-teaser-pages.mjs.
    · sitemap-directory.xml — 3,265 URLs — prerendered firm-directory pages + hub + per-country facets + the French twin tree /fr/societes/. GENERATED by scripts/seo/build-directory-pages.mjs.
    · sitemap-news.xml      — 14 URLs — the crawlable /news/ hub (curated SAP-analytics headlines, refreshed daily). GENERATED by scripts/build-news-feed.mjs.
    · sitemap-pillars.xml   — 18 URLs — the commercial pillar landings (/day-rates/ + /fr/tjm/, /opportunities/ + /fr/opportunites/), EN+FR hreflang. GENERATED by scripts/seo/build-pillar-pages.mjs.
    · sitemap-missions.xml  — one URL per LIVE opportunity (EN+FR, hreflang). GENERATED by scripts/seo/build-mission-pages.mjs.
                              Its entry count is DERIVED from the live opportunity population, never written down here: a
                              mission that leaves the radar drops out of this file while its page keeps answering 200 as an
                              honest "retired" page for 90 days (§8 — a live URL that starts 404-ing is worse than one that
                              never existed). It is therefore ABSENT from the stamped TOTAL above, which counts fixed files.
    · sitemap-reference.xml — 8 URLs — the reference hubs (/glossary/, /tech-radar/, /teched/ + FR), EN+FR hreflang. GENERATED by scripts/seo/build-reference-pages.mjs.
  TOTAL declared: 4,577 unique URLs across the 6 children (one URL, one sitemap —
  audit-seo-drift.mjs check (a) fails on any URL declared by two children).
  <lastmod> is intentionally omitted here (optional in a sitemapindex): each child
  carries honest per-URL <lastmod>, and an index-level date would go stale on every
  build. robots.txt points crawlers here; the individual Sitemap: lines are kept as
  a belt-and-suspenders fallback for strict parsers.
-->
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://analyticslegends.ai/sitemap.xml</loc>
  </sitemap>
  <sitemap>
    <loc>https://analyticslegends.ai/sitemap-teasers.xml</loc>
  </sitemap>
  <sitemap>
    <loc>https://analyticslegends.ai/sitemap-directory.xml</loc>
  </sitemap>
  <!--
    sitemap-news.xml RETIRÉ de l'index le 2026-08-12 (arbitrage opérateur).
    Mesuré sur la fenêtre 2026-07-13 → 08-10 : 14 URL déclarées, 7,1 %
    d'indexation, 92,9 % JAMAIS explorées, 0 impression, 0 clic — le seul canal
    que audit-crawl-budget déclare `dilutive`. Le budget d'exploration est une
    somme constante à court terme : ces 14 URL étaient prises aux autres.
    Le fichier CONTINUE d'être généré par build-news-feed.mjs et les pages
    continuent de répondre 200 : elles restent atteignables par lien interne, et
    `sitemap-news.xml` reste la source de repli du <lastBuildDate> du flux et de
    la garde audit-seo-health (d). Retirer l'entrée d'index ≠ supprimer la
    surface — c'est cesser de la DÉCLARER à l'explorateur.
    Réversible en remettant les trois lignes ci-dessous.
    <sitemap><loc>https://analyticslegends.ai/sitemap-news.xml</loc></sitemap>
  -->
  <sitemap>
    <loc>https://analyticslegends.ai/sitemap-pillars.xml</loc>
  </sitemap>
  <sitemap>
    <loc>https://analyticslegends.ai/sitemap-reference.xml</loc>
  </sitemap>
  <sitemap>
    <loc>https://analyticslegends.ai/sitemap-missions.xml</loc>
  </sitemap>
</sitemapindex>
