<?xml version="1.0" encoding="UTF-8"?>
<!-- One URL, not four.

     /impressum, /datenschutz and /agb are SPA routes: the not_found_handling
     fallback serves index.html for all three, so each returns a byte-identical
     document whose <link rel="canonical"> points at "/". Listing them here
     asked Google to index three pages that each declare they are really the
     home page -- a sitemap contradicting a canonical, which Google resolves by
     believing the canonical and ignoring the sitemap entry.

     They stay reachable and crawlable via the footer, which is all the law
     requires of an Impressum. They were never search targets.

     lastmod is the mark-and-metadata change of 10 Aug 2026. Keep it honest:
     a lastmod that moves without the content moving is a signal Google learns
     to discount, and then it is worth nothing when the page really does
     change. -->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://gradematch.org/</loc>
    <lastmod>2026-08-10</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <!-- Belongs here where the legal routes did not: it is a real static file
       with its own <head> and a canonical pointing at itself, so the sitemap
       and the page agree about what it is. -->
  <url>
    <loc>https://gradematch.org/how-it-works/</loc>
    <lastmod>2026-08-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <!-- Same test as the page above, same answer: a static file with its own
       head and a self-referencing canonical. changefreq is weekly because the
       roster is meant to grow as seats are handed out; move lastmod when it
       actually does, not on the schedule this line implies. -->
  <url>
    <loc>https://gradematch.org/team/</loc>
    <lastmod>2026-08-13</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.5</priority>
  </url>
</urlset>
