<?xml version="1.0" encoding="UTF-8"?>
<!--
  Pulsar sitemap — served at https://www.pulsarcampaigns.app/sitemap.xml
  (shared/vite/brandSitemap.ts copies this file into dist/pulsar at build time).

  Every <loc> here must be a route scripts/generate-static-seo.mjs prerenders,
  and validateSitemapCoverage() in that script fails the build if one is not:
  a sitemapped URL with no static shell serves the SPA index, whose canonical
  points at "/", so it lands in Ahrefs as "non-canonical page in sitemap" and in
  Search Console as a soft 404. That gate is what the "MUST stay in sync"
  comment above CA_COUNTIES used to ask a human to remember.

  NO <lastmod> — deliberate, and enforced. 20 of these 79 URLs carried
  <lastmod>2026-02-24</lastmod> and the other 59 carried nothing; by the time
  anyone checked, the date was five months stale and claimed every page had
  changed on the same day. See the SITEMAP_LASTMOD_POLICY block comment in
  scripts/generate-static-seo.mjs for why it is omitted rather than regenerated
  (short version: every mechanical source is either a lie or breaks generator
  idempotency, and <lastmod> is optional in the protocol).
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <!-- Homepage -->
  <url>
    <loc>https://www.pulsarcampaigns.app/</loc>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>

  <!-- Core Marketing Pages -->
  <url>
    <loc>https://www.pulsarcampaigns.app/pricing</loc>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/campaign-builder</loc>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/schedule-demo</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <!-- Comparison Pages -->
  <url>
    <loc>https://www.pulsarcampaigns.app/compare</loc>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/compare/ngp-van</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/compare/nationbuilder</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/compare/everyaction</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/compare/mobilize</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/compare/action-network</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/compare/pdi</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <!-- Help Center -->
  <url>
    <loc>https://www.pulsarcampaigns.app/help</loc>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/help/category/getting-started</loc>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/help/category/contacts</loc>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/help/category/campaigns</loc>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/help/category/fundraising</loc>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/help/category/analytics</loc>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>

  <!-- Public Election Results Portal -->
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california</loc>
    <changefreq>hourly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/alameda</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/alpine</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/amador</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/butte</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/calaveras</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/colusa</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/contra-costa</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/del-norte</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/el-dorado</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/fresno</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/glenn</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/humboldt</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/imperial</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/inyo</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/kern</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/kings</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/lake</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/lassen</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/los-angeles</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/madera</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/marin</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/mariposa</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/mendocino</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/merced</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/modoc</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/mono</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/monterey</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/napa</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/nevada</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/orange</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/placer</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/plumas</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/riverside</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/sacramento</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/san-benito</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/san-bernardino</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/san-diego</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/san-francisco</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/san-joaquin</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/san-luis-obispo</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/san-mateo</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/santa-barbara</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/santa-clara</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/santa-cruz</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/shasta</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/sierra</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/siskiyou</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/solano</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/sonoma</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/stanislaus</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/sutter</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/tehama</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/trinity</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/tulare</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/tuolumne</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/ventura</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/yolo</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/results/california/yuba</loc>
    <changefreq>hourly</changefreq>
    <priority>0.6</priority>
  </url>

  <!-- Legal -->
  <url>
    <loc>https://www.pulsarcampaigns.app/terms</loc>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/privacy</loc>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.pulsarcampaigns.app/security</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
</urlset>
