<?xml version="1.0" encoding="UTF-8"?>
<!-- ⚠️ List CANONICAL, 200-returning urls ONLY. Cloudflare Pages 308s /foo.html -> /foo, so the
     .html forms are REDIRECTS and must never appear here (a sitemap of redirects is a documented
     error). Declaring /terms.html is exactly how Google ended up indexing BOTH /terms and
     /terms.html as separate pages. The .html urls stay working via the 308 for the external
     references (Chrome Web Store listing, Stripe checkout) — they just aren't canonical. See #667.
     ⚠️ No hand-written lastmod dates here: deploy.sh §1a stamps them into the STAGED copy from
     each page's git commit date. A hand-added date would go stale and teach Google to distrust
     it — and a literal lastmod TAG in this comment would break §1a's stamped-count assertion. -->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
  <url>
    <loc>https://jobshifu.com/</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url><loc>https://jobshifu.com/about</loc>
    <lastmod>2026-10-03</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
  <!-- Tier-A content pages. These carry the long-tail question queries the
       one-pager cannot: one page can only win one query. -->
  <url>
    <loc>https://jobshifu.com/calibration</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/autofill</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>
  <!-- /fresh is the Tier-A page for the fresh / employer-direct / "is this posting real"
       cluster (docs/marketing-fresh-jobs-direction.md). Unlike /tailoring it has no organic
       sibling, so it is indexed and doubles as the future Campaign E landing page. -->
  <url>
    <loc>https://jobshifu.com/fresh</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/is-this-job-still-open</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/resume-tailoring</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <!-- The en-GB/IE/NZ twin of the page above. The two are joined by reciprocal hreflang
       in each page's head, which is sufficient on its own; this file stays a plain urlset
       with no xhtml alternates, so the pair is declared in exactly one place per page. -->
  <url>
    <loc>https://jobshifu.com/cv-tailoring</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <!-- ⚠️ /tailoring (LP-B) is deliberately ABSENT. It is a paid-ad landing page for Google
       Search Campaign B and argues the same query cluster as /resume-tailoring, so it ships
       `noindex, follow` rather than competing with the Tier-A page for one query. /ats-truth
       below is the opposite case: it is the flagship Tier-A asset of that build and is meant
       to keep earning after the ad spend stops. Since 2026-09-03 it is the "Why you're not
       hearing back" pain page and absorbed its ads twin /ats-check (now a 301 here).
       ⚠️ /fit-score is deliberately ABSENT since the same change: the Fit beat was folded
       into /fresh as its second section and the url 301s there. -->
  <url>
    <loc>https://jobshifu.com/ats-truth</loc>
    <lastmod>2026-09-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/cover-letters</loc>
    <lastmod>2026-09-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/interview-prep</loc>
    <lastmod>2026-09-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/job-tracker</loc>
    <lastmod>2026-09-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/ai-job-search-agent</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/shifu-film</loc>
    <lastmod>2026-10-07</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <video:video>
      <video:thumbnail_loc>https://jobshifu.com/assets/video/shifu-agent-film-poster.jpg</video:thumbnail_loc>
      <video:title>Shifu in 44 seconds: the AI job search agent in JobShifu</video:title>
      <video:description>Tell Shifu what job you want in plain words. It searches employer career sites and skips stale posts, tailors your resume from experience you've confirmed and asks when something is missing, then fills the application and stops before Submit.</video:description>
      <video:content_loc>https://jobshifu.com/assets/video/shifu-agent-film-16x9-1080p60-web.mp4</video:content_loc>
      <video:duration>44</video:duration>
      <video:publication_date>2026-10-07T00:00:00-07:00</video:publication_date>
      <video:family_friendly>yes</video:family_friendly>
    </video:video>
  </url>
  <url>
    <loc>https://jobshifu.com/visa-sponsorship</loc>
    <lastmod>2026-09-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/extension</loc>
    <lastmod>2026-09-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <!-- Comparison pages (blog program Play A). Prices on them rot: each carries an
       "as of" date in copy and gets a quarterly re-verify. -->
  <url>
    <loc>https://jobshifu.com/jobshifu-vs-hiringcafe</loc>
    <lastmod>2026-09-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/jobshifu-vs-jobright</loc>
    <lastmod>2026-09-25</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/faq</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/pricing</loc>
    <lastmod>2026-09-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/privacy</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/terms</loc>
    <lastmod>2026-09-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <!-- /fraudulent-postings is a POLICY page, listed for the same reason /privacy and /terms
       are: it has to be findable, and it is linked from the footer of every page rather than
       being a sitemap-only orphan. Ontario's ESA requires the policy and its reporting
       mechanism to be posted where users are likely to see them; the footer slot is that,
       and this entry is how a crawler finds the page. -->
  <url>
    <loc>https://jobshifu.com/fraudulent-postings</loc>
    <lastmod>2026-09-21</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <!-- ⚠️ /bot is deliberately ABSENT, removed 2026-08-07. It is the crawler-information
       page for JobShifuBot, and its audience is a webmaster reading their own access log —
       who arrives via the `+https://jobshifu.com/bot` in FEED_UA (packages/crawler-providers/
       src/util.ts), not via a search result. Listing it here made it a sitemap-only ORPHAN:
       255 words, zero inbound links from any page on the site, which is precisely the shape
       Google leaves in "Discovered - currently not indexed" forever (it sat there from
       2026-08-05). The page stays live and crawlable — robots.txt still allows it and it
       still 200s; it just stops asking for index budget it was never going to win.
       ⛔ Do not "fix" the GSC report by re-adding it. Re-adding recreates the orphan.
       ⚠️ Removing a url is safe for deploy.sh §1a only because its count assertion is
       DERIVED by grepping this file, not hardcoded. Verified by replaying §1a against
       this file: stamped=16 prestamped=5 locs=21 mods=21, assertion passes.
       ⛔ THE COMMENT ITSELF IS PARSED. §1a counts loc and lastmod tags with grep, which
       does not know what a comment is — so spelling either tag literally in prose here
       ABORTS EVERY DEPLOY. The existing warning at the top of this file says that about
       lastmod; it is equally true of loc, and this comment tripped exactly that while
       being written (a loc tag quoted inside a code span pushed the count 21 -> 22 and
       §1a aborted). Describe the tags in words; never spell them. -->
  <!-- ⚠️ /admin is likewise absent and must stay absent: it is held out of the index by
       X-Robots-Tag + a meta robots tag (see robots.txt), which a sitemap entry would fight. -->
  <!-- BEGIN research (generated by scripts/research/build.ts: do not hand-edit) -->
  <url>
    <loc>https://jobshifu.com/research</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/research/relisting</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/research/how-long-jobs-stay-open</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/research/experience-required</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/research/pay-disclosure</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/research/visa-sponsorship</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <!-- END research -->
  <!-- BEGIN blog (generated by scripts/build-blog.mjs: do not hand-edit) -->
  <url>
    <loc>https://jobshifu.com/blog</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/career-change-resume-first-read</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/reddit-job-search-advice-sorted</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/rewrite-your-first-resume-bullet</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/where-recruiters-look-on-a-resume</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/will-recruiters-know-i-used-ai-on-my-resume</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/can-ai-agents-apply-for-jobs</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/ghost-job-laws-tracker</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/uk-visa-sponsors-hiring-now</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/does-remote-mean-work-from-anywhere</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/tailor-cv-to-job-description</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/stop-rewriting-job-application-answers</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/can-application-questions-reject-you</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/find-experience-missing-from-your-resume</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/is-a-three-week-old-job-worth-applying-to</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/claude-resume-tailoring</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/one-click-resume-tailoring</loc>
    <lastmod>2026-08-31</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/resume-tailoring-tools-benchmark</loc>
    <lastmod>2026-08-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/tailor-resume-to-job-description-by-hand</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/tailor-resume-to-job-description-with-ai-free</loc>
    <lastmod>2026-10-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/we-analyzed-500000-job-descriptions</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/h1b-sponsors-hiring-now</loc>
    <lastmod>2026-10-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/is-jobshifu-legit</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/is-jobshifu-worth-it</loc>
    <lastmod>2026-10-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://jobshifu.com/blog/first-48-hours</loc>
    <lastmod>2026-10-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <!-- END blog -->
</urlset>
