<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <!-- Browse — the home catalog (public). Refreshes hourly as new matches ingest. -->
  <url>
    <loc>https://www.pewmatch.com/</loc>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <!-- Clubs directory — the open Clubs tab (public-read; refreshed daily). -->
  <url>
    <loc>https://www.pewmatch.com/matches/clubs</loc>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <!-- Embed builder — the no-login tool for putting a club's matches on their own site. -->
  <url>
    <loc>https://www.pewmatch.com/embed/builder</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <!-- Public legal pages (no auth gate). -->
  <url>
    <loc>https://www.pewmatch.com/privacy</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://www.pewmatch.com/terms</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <!--
    Intentionally omitted (not indexable public URLs):
      /matches/mine, /matches/alerts  — personalized, require sign-in to be meaningful
      /account, /admin/*              — auth / capability gated
      /api-docs                       — gated on an API-user account; anon crawlers are bounced to the catalog
      /club-tools                     — thin hub; only links onward to /embed/builder (no standalone content)
      /embed                          — raw iframe target; renders nothing without club params (meant to be embedded, not browsed)
      /redeem, /support, /email-action/*  — transient modals over the catalog, no standalone content
  -->
</urlset>
