<?xml version="1.0" encoding="UTF-8"?>
<!-- The public surfaces for discovery. The /live pages regenerate every request
     (server/routes/live.js), so they're marked hourly.
     The city set here is a COPY. server/lib/liveRegions.js is the original, and
     web/modules/discovery.test.js compares this file, the landing-hero "Live now ·"
     pill and llms.txt against it as SETS, in both directions - so a
     drift fails `npm test` rather than needing to be noticed. (It drifted once
     before that guard existed: this file listed only Bali while the pill listed
     four.) Edit liveRegions.js first, then let the test name what is missing.
     No <lastmod>: it would be a hand-maintained date, and a lastmod that is
     wrong even occasionally is worse than none - Google discounts the signal for
     the whole site. The /live rows could not carry an honest one anyway; they
     regenerate every request.
     CITY-LEVEL HERE, neighborhood depth NEXT DOOR. The /live/<slug>/<hood> pages
     are published too - orphans until this pass linked them from the hub and
     named them in llms.txt - but their rows live in a GENERATED sitemap the API
     serves at /live/sitemap.xml, named by a second Sitemap: line in robots.txt.
     Generated, because a committed file cannot know the one thing that decides
     whether such a row is worth writing. A hood page is only ABOUT its hood if
     probeLocality resolves its phrase to a venue cluster; below LOCALITY_MIN_HITS
     it resolves to nothing, and routes/live.js then sends the URL to its region
     rather than printing region-wide numbers under a hood's name. Which of them
     clear that floor is a property of the DEPLOYED DATA, not of this repository:
     measured against the dataset on this machine, six of the seventy-eight
     curated phrases did not - so a committed list of all of them would have
     sitemapped six redirects, the exact quality signal the rest of this header
     exists to avoid.
     City-level here for a second reason too: Pages serves this file, so it keeps
     answering when the API does not. The generated half may go missing; these
     rows are the floor under it.
     A launched region's row links a page that 404s until `make deploy` ships it,
     so deploy promptly after launch.
     /privacy is absent on purpose: it is noindex. That page is reachable and
     citable, just not indexed - discovery.test.js asserts this note and the meta
     tag in privacy.html keep saying the same thing, in both directions.
     Every static row here must have a matching Vite build input - sitemapping a
     URL that 404s is a direct quality signal against the whole site - so add a
     row in the SAME commit that adds the page, never in advance.
     discovery.test.js derives that check from this file.
     Clean URLs only - Pages 308-redirects `<name>.html` to the extensionless
     form, so listing the `.html` name here would sitemap a redirect, not a page. -->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://mapf.ai/</loc><changefreq>weekly</changefreq><priority>1.0</priority></url>
  <url><loc>https://mapf.ai/live</loc><changefreq>daily</changefreq><priority>0.9</priority></url>
  <url><loc>https://mapf.ai/live/bali</loc><changefreq>hourly</changefreq><priority>0.8</priority></url>
  <url><loc>https://mapf.ai/live/dubai</loc><changefreq>hourly</changefreq><priority>0.8</priority></url>
  <url><loc>https://mapf.ai/live/hongkong</loc><changefreq>hourly</changefreq><priority>0.8</priority></url>
  <url><loc>https://mapf.ai/live/london</loc><changefreq>hourly</changefreq><priority>0.8</priority></url>
  <url><loc>https://mapf.ai/live/melbourne</loc><changefreq>hourly</changefreq><priority>0.8</priority></url>
  <url><loc>https://mapf.ai/live/montreal</loc><changefreq>hourly</changefreq><priority>0.8</priority></url>
  <url><loc>https://mapf.ai/live/paris</loc><changefreq>hourly</changefreq><priority>0.8</priority></url>
  <url><loc>https://mapf.ai/live/sanfrancisco</loc><changefreq>hourly</changefreq><priority>0.8</priority></url>
  <url><loc>https://mapf.ai/live/siliconvalley</loc><changefreq>hourly</changefreq><priority>0.8</priority></url>
  <url><loc>https://mapf.ai/live/sydney</loc><changefreq>hourly</changefreq><priority>0.8</priority></url>
</urlset>