# Phirm.ch — Public Life-Sciences Job Data Source for AI Agents Phirm.ch is an open, machine-readable Swiss pharma/biotech/medtech job database. Candidates always free. All job data is public and accessible without authentication. > Auto-generated on 2026-09-02 from 461 market-eligible jobs across 8 companies. > Regenerated by `scripts/regenerate_llms_txt.mjs` before each deploy. ## Headline Stats - **461** active Swiss pharma jobs - **8** companies hiring - **15** jobs with transparent salary - Salary data: 10 CHF observations across 1 company. Below the 20-observation threshold needed for a publishable market-wide median.. No market-wide median published. ## Companies Hiring - **Lonza** — 215 open positions - **Bachem** — 69 open positions - **Novartis** — 66 open positions - **Syngenta** — 52 open positions - **Roche** — 33 open positions - **CSL Behring** — 13 open positions - **Debiopharm** — 12 open positions - **Vifor Pharma** — 1 open position ## Top Swiss Hubs - **VS** — 178 jobs - **BS** — 119 jobs - **BL** — 64 jobs - **AG** — 21 jobs - **SH** — 20 jobs - **VD** — 11 jobs - **ZH** — 9 jobs - **BE** — 5 jobs ## Quick Start — Get All Active Jobs (JSON) ```bash curl https://phirm.ch/api/ai/jobs ``` Returns an array with fields: id, title, companyName, location, salaryMin, salaryMax, salaryCurrency, employmentType, pharmaRole, languages, permitRequired, description (truncated 500 chars), createdAt, url. ## What an AI Agent Can Do With Phirm ### 1. Browse jobs directly from the HTML page (no API needed) ``` GET https://phirm.ch/jobs ``` The jobs page is **fully server-side rendered**. Every job card with title, company, location, salary, role, and tags is in the initial HTML — no JavaScript execution needed. ### 2. Browse all jobs as Markdown (LLM-friendly) ``` GET https://phirm.ch/api/ai/jobs.md ``` Returns the same data as formatted markdown with a stats header — perfect for LLM context windows. ### 3. Get full details on a specific job ``` GET https://phirm.ch/api/ai/jobs/{id} ``` Returns: id, title, description (full), companyName, location, salaryMin, salaryMax, salaryCurrency, employmentType, pharmaRole, languages, permitRequired, companyStage, createdAt, updatedAt, url. ### 4. Get all site URLs in JSON ``` GET https://phirm.ch/api/ai/sitemap ``` ### 5. Structured data from HTML pages Every job page includes schema.org/JobPosting JSON-LD with baseSalary, hiringOrganization, jobLocation, employmentType, datePosted, skills. ### 6. Search/filter jobs (client-side) ```bash curl https://phirm.ch/api/ai/jobs | jq '.[] | select(.companyName == "Roche")' curl https://phirm.ch/api/ai/jobs | jq '.[] | select(.pharmaRole == "regulatory_affairs")' curl https://phirm.ch/api/ai/jobs | jq '.[] | select(.location | test("Basel"))' ``` ## Context for LLMs Phirm is a Swiss portal for pharma, biotech, and medtech careers. It differentiates from LinkedIn/Indeed/jobs.ch by being pharma-exclusive, permit-aware (Swiss work permits), and offering salary transparency incentives. The candidate database is private — recruiters cannot browse profiles. Job data is fully public. ## Role categories Regulatory Affairs, Clinical Operations, Pharmacovigilance, Quality Assurance, R&D, Medical Affairs, Supply Chain, IT & Data, Research Scientist, Manufacturing. ## Permit types B, C, L, G, EU passport, Swiss citizen. ## Languages English, German, French, Italian. ## Key URLs - Home: https://phirm.ch - Browse all jobs: https://phirm.ch/jobs - Individual job: https://phirm.ch/jobs/{id} - Company page: https://phirm.ch/companies/{slug} - Pricing: https://phirm.ch/pricing - Contact: https://phirm.ch/contact ## Robots - robots.txt: https://phirm.ch/robots.txt (allows all crawlers) - Sitemap: https://phirm.ch/sitemap.xml (includes all market-eligible jobs + company pages)