# jobshifu.com — the PUBLIC marketing site. (The app at app.jobshifu.com is separately noindex:
# a tag with crawling ALLOWED so the tag can be read, never Disallow: /.
# See apps/web/public/robots.txt.) This site SHOULD be indexed.
#
# AI crawlers (GPTBot, ClaudeBot, PerplexityBot, CCBot, Google-Extended, ...) are DELIBERATELY
# allowed by the wildcard below. Answer engines are a retrieval surface we want to be in, and
# llms.txt at the site root exists for exactly them (generated by scripts/build-blog.mjs).
#
# ⛔ There is deliberately NO `Disallow: /admin` for the CMS. A Disallow stops the crawler
# FETCHING the page, so it never reads the noindex - which is how a disallowed url still gets
# listed url-only. /admin is kept out of the index by `X-Robots-Tag: noindex` in _headers plus
# a tag in admin/index.html, both of which require the fetch to work.
#
# `Content-Signal` (2026-08-17) states the ask we actually have, which is NOT the same as the
# access the wildcard grants: index us, quote us, cite us — `use=reference` — but the corpus
# behind the research pages is not training material. It is advisory, unenforceable, and costs
# nothing; it exists so the intent is on the record rather than inferred from a bare Allow.
User-agent: *
Content-Signal: search=yes,ai-input=yes,use=reference
Allow: /
# ⛔ A JOB URL CARRYING A QUERY IS NOT A PAGE (2026-09-11, with the hub pages).
# `/jobs/` is a posting and `/jobs/` is a hub; both are finite sets the Worker
# enumerates. A query string on either is a filter permutation, i.e. an unbounded crawl space
# that yields near-duplicates of pages already in the sitemaps. The Worker already refuses to
# render one (it passes through to the marketing site), and this keeps the crawl budget off them
# in the first place.
Disallow: /jobs/*?*
# ── AI-crawler tiering — WRITTEN, DELIBERATELY NOT ACTIVE ────────────────────────────────────
# ⛔ Do not uncomment this block yet. Today jobshifu.com is entirely marketing pages plus
# aggregate research, and every one of them is a page we WANT an answer engine to read and cite.
# Restricting AI crawlers now would cost retrieval reach and withhold nothing — a pure loss.
#
# ACTIVATION CONDITION, and the only one: the day we publish ROW-LEVEL pages (per-posting or
# per-company detail — Phase 4 of docs/plans/public-research-program.md). At that point the two
# audiences genuinely diverge: search engines should index the long tail, while AI crawlers
# should see the aggregates and not the inventory, because the inventory is the scrapeable
# asset and an aggregate is not. Competitor precedent for exactly this split is recorded in
# docs/archive/corpus-public-surface-analysis.md §2.
#
# When that day comes, uncomment and keep the Allow list in sync with what /research publishes:
#
# User-agent: Amazonbot
# User-agent: Applebot-Extended
# User-agent: Bytespider
# User-agent: CCBot
# User-agent: ClaudeBot
# User-agent: FacebookBot
# User-agent: Google-Extended
# User-agent: GPTBot
# User-agent: PerplexityBot
# User-agent: meta-externalagent
# Allow: /$
# Allow: /research
# Allow: /blog
# Allow: /llms.txt
# Disallow: /
#
# ⚠️ Two traps if you do activate it. (1) A named User-agent group REPLACES the wildcard group
# for that crawler — it does not layer on top — so anything still wanted must be re-Allowed
# inside the block, including llms.txt. (2) `Allow: /research` prefix-matches /research-foo
# too; use `/research/` plus `/research$` if that ever matters.
Sitemap: https://jobshifu.com/sitemap.xml
# The crawl pilot's job pages (jobshifu.com/jobs/, one country, served by the
# job-page-render Worker; docs/architecture/public-job-page.md §5). Separate file: it is dynamic and
# not part of the static sitemap the deploy gate audits.
Sitemap: https://jobshifu.com/sitemap-jobs.xml
# The HUB pages (jobshifu.com/jobs/), the durable half of that surface: a posting expires
# and a hub does not. Served by the same Worker, and it publishes only hubs that actually held
# inventory when the file was built, so a registry row that never fills is never announced.
Sitemap: https://jobshifu.com/sitemap-hubs.xml