LeoMed Job Sources — Compliance Policy

Last updated: 2026-07-16 Rule of thumb: if a source hasn't published documentation permitting third-party republishing OR signed a partner agreement with us, we don't touch it. Absence of a robots.txt Disallow is not consent.

Allow-list

A source is on the allow-list if AT LEAST ONE of the following is true:

  1. Public feed API with third-party permission. The source publishes an API for their listings and documents (or otherwise makes explicit) that third parties may consume it.
  2. Schema.org JobPosting markup on employer career pages. The employer publishes <script type="application/ld+json"> structured data specifically for aggregators (Google-for-Jobs style). Publishing schema.org JobPosting is an affirmative opt-in to being indexed.
  3. Signed partner agreement. LeoMed has a licensing or partnership agreement in place with the source. Terms of the agreement govern.

Currently allowed

SourceRouteBasisNotes
Greenhouse Job Board APIgreenhouse.ts(1) Public REST, per-employer opt-in via board_tokenDocs: https://developers.greenhouse.io/job-board.html — no auth required for GET.
Lever Postings APIlever.ts(1) Public REST, ToS explicitly says "may be scraped by third parties"Docs: https://github.com/lever/postings-api
USAJobs.gov Search APIusajobs.ts(1) Federal open-data API, republishing permittedDocs: https://developer.usajobs.gov/ — requires free API key registration. Env: USAJOBS_API_KEY, USAJOBS_USER_AGENT.
Employer career pages w/ Schema.org JobPostingschema-org.ts(2) Publishing <script type="application/ld+json">{"@type":"JobPosting"…} is an affirmative opt-in to aggregator indexingAdapter shipped 2026-09-26 with empty allow-list. Dana-Farber and Stanford verified as schema-publishing but carry only APP/staff roles, not MD physicians (academic MDs recruited through faculty-affairs channels). All big NCI centers checked (MSK, MD Anderson, Duke, Fred Hutch, Cleveland Clinic, JHU, Mayo, Moffitt) host on JS SPAs (Workday/iCIMS) that don't serve HTML — need a different adapter. Populate seed list with private oncology practices or SmartRecruiters/Workable/JobVite-hosted employers that publish JobPosting. See adapter file for verification protocol.
Ashby Job Board APIashby.ts(1) Public REST, per-tenant opt-in via orgSlugDocs: https://developers.ashbyhq.com/reference/publicjobpostingsforjobboard — no auth. Empty seed list; add tenants as oncology-adjacent employers on Ashby are discovered. Newer biotechs / cell-therapy startups are the likely fit.
SmartRecruiters Postings APIsmartrecruiters.ts(1) Public REST, per-tenant opt-in via companyIdDocs: https://developers.smartrecruiters.com/reference/list-postings — no auth. Empty seed list; add tenants as oncology-adjacent employers on SmartRecruiters are discovered. Common in mid-size biotech and some community hospital systems.
Workable widget APIworkable.ts(1) Public REST widget endpoint intended for customer-controlled external embeddingEndpoint: https://apply.workable.com/api/v1/widget/accounts/{subdomain}. No auth. Empty seed list; add tenants as oncology-adjacent employers on Workable are discovered. Common in small/mid biotechs and independent practices.

Under negotiation

None yet. Outreach candidates:

  • ASCO Career Center — non-profit oncology society; partner-feed conversation.
  • ASH Job Center — non-profit hematology society; partner-feed conversation.
  • NEJM CareerCenter — publisher-side; has an existing partner-feed program.
  • AAMC Career Connect — medical-school association; academic oncology focus.

Add rows here once conversations progress.

No-fly list

Do NOT scrape, crawl, aggregate, or otherwise republish from:

SourceReason
IndeedToS prohibits scraping and redistribution; documented enforcement history.
GlassdoorSame.
LinkedIn JobsSame; also gate their API behind restricted partner program only.
ZipRecruiterSame.
MonsterSame.
PracticeLinkDirect competitor job board; ToS prohibits redistribution.
Locum staffing firms (LocumTenens, Weatherby, VISTA, CompHealth, Barton, Jackson+Coker, Medicus)Aggregators are structural competitors to their direct-recruiter model; historical litigation precedent.

The scrapers for the above sources still exist under lib/scrapers/ (imported but never registered in ALL_SCRAPERS) so historical detail pages and audit-review UI render. They will not run.

Runtime kill switch

Even for allow-listed adapters, scraping is off by default. Set SCRAPERS_ENABLED=true in the environment to run them. On Vercel, add this to production env AFTER confirming the seed employer lists in each adapter file and reviewing the estimated volume + rate on staging.

Changes to this policy

Every allow-list addition needs:

  1. Written source-side permission (either public docs URL or signed agreement).
  2. A one-liner in the adapter file's top-of-file docstring citing (1).
  3. A new row in the "Currently allowed" table above.

If you're not sure, treat the source as no-fly and ask.

    Job Sources Policy | LeoMed