<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <!-- EVERY PUBLIC ROUTE IS SERVED IN THREE LANGUAGES. `?lang=` is a real
       address, not a client-side preference: astro_soni/www/mobile.py hands it
       to seo.route_meta, so the served shell carries that language's title,
       description, <html lang> and FAQ answers, and the SPA adopts it on boot
       for a visitor with no stored preference (astro/src/i18n.ts getLang).
       The alternates are declared BOTH here and as <link rel="alternate"> in
       the head (scripts/_make_www.py), which is belt and braces on purpose:
       the sitemap is what a crawler reads first and the head is what it
       confirms against. Each url lists all three plus x-default INCLUDING
       ITSELF; a set that omits its own page is ignored wholesale.

       ONLY the three routes seo.ROUTE_META covers carry them. The legal
       pages below are served as one English document whatever ?lang= says,
       and claiming a Hindi alternate for a page that answers in English is
       the same lie as three hreflangs pointing at one URL. When a legal page
       is translated, add it to ROUTE_META and to this list together. -->
  <!-- Apex home -->
  <url>
    <loc>https://abhisheksoni.in/</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
      <xhtml:link rel="alternate" hreflang="en" href="https://abhisheksoni.in/" />
      <xhtml:link rel="alternate" hreflang="hi" href="https://abhisheksoni.in/?lang=hi" />
      <xhtml:link rel="alternate" hreflang="mr" href="https://abhisheksoni.in/?lang=mr" />
      <xhtml:link rel="alternate" hreflang="x-default" href="https://abhisheksoni.in/" />
  </url>

  <!-- Blog index + article URLs: the frappe /blog surface (AST-173) is not yet
       live (/blog currently 404s), so it is intentionally omitted here to keep
       every submitted <loc> a 200 during launch-week crawl. When AST-173 ships,
       re-add the /blog index url below and one <url> per published post
       (slugs from the AST-204 launch set), e.g.:
  <url><loc>https://abhisheksoni.in/blog</loc><lastmod>YYYY-MM-DD</lastmod><changefreq>weekly</changefreq><priority>0.8</priority></url>
  <url><loc>https://abhisheksoni.in/blog/POST-SLUG</loc><lastmod>YYYY-MM-DD</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
  -->

  <!-- Public content routes. Both render for guests (astro App.tsx
       PUBLIC_INTENTS) and both set their own canonical (App.tsx INTENT_META);
       before that they inherited the home canonical, which points at "/", so
       listing them here would have submitted two URLs that each declared
       themselves to be the home page. Sitemap entry and self-canonical have to
       land together or neither works. -->
  <url>
    <loc>https://abhisheksoni.in/learn</loc>
    <lastmod>2026-07-30</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
      <xhtml:link rel="alternate" hreflang="en" href="https://abhisheksoni.in/learn" />
      <xhtml:link rel="alternate" hreflang="hi" href="https://abhisheksoni.in/learn?lang=hi" />
      <xhtml:link rel="alternate" hreflang="mr" href="https://abhisheksoni.in/learn?lang=mr" />
      <xhtml:link rel="alternate" hreflang="x-default" href="https://abhisheksoni.in/learn" />
  </url>
  <url>
    <loc>https://abhisheksoni.in/services</loc>
    <lastmod>2026-08-18</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
      <xhtml:link rel="alternate" hreflang="en" href="https://abhisheksoni.in/services" />
      <xhtml:link rel="alternate" hreflang="hi" href="https://abhisheksoni.in/services?lang=hi" />
      <xhtml:link rel="alternate" hreflang="mr" href="https://abhisheksoni.in/services?lang=mr" />
      <xhtml:link rel="alternate" hreflang="x-default" href="https://abhisheksoni.in/services" />
  </url>

  <!-- Legal / policy routes -->
  <!-- /contact carries the visible business contact details required for
       payment-gateway activation and has set its own meta since it was built
       (LegalPages.tsx ContactPage), it was simply never listed here. -->
  <url>
    <loc>https://abhisheksoni.in/contact</loc>
    <lastmod>2026-07-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://abhisheksoni.in/privacy-policy</loc>
    <lastmod>2026-07-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://abhisheksoni.in/terms</loc>
    <lastmod>2026-07-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://abhisheksoni.in/refunds</loc>
    <lastmod>2026-07-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://abhisheksoni.in/grievance</loc>
    <lastmod>2026-07-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://abhisheksoni.in/legal</loc>
    <lastmod>2026-07-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://abhisheksoni.in/preferences</loc>
    <lastmod>2026-07-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.4</priority>
  </url>
</urlset>