Greenhouse
career-ops hits Greenhouse's public boards API directly. No HTML scraping, no rate-limit risk, no AI tokens consumed during the scan itself.
What it does
The greenhouse provider in providers/greenhouse.mjs makes HTTP requests to boards-api.greenhouse.io/v1/boards/{slug}/jobs and parses the JSON response into the career-ops listing format. The slug is the company's Greenhouse board identifier (e.g. 'notion' for Notion).
When to use it
Use Greenhouse scanning when your target companies use Greenhouse as their ATS. Most US tech companies in the 50–10,000-employee range do. templates/portals.example.yml ships with 70+ pre-configured Greenhouse slugs you can enable.
Example
In your portals.yml: `- provider: greenhouse\n slug: notion\n careers_url: https://job-boards.greenhouse.io/notion` — then `/career-ops scan` picks up all open Notion roles.What the scanner does
The scanner reads your enabled Greenhouse slugs from portals.yml, calls the public boards API for each one, and adds new, title-matching roles to your pipeline with no scraping and zero LLM tokens spent on the fetch. A single node scan.mjs run handles your Greenhouse, Ashby, and Lever boards in one pass, then filters the results by your configured title keywords.
node scan.mjsPortal Scan - 2026-07-06
Offers found: 58 total
Filtered by title: 9 relevant
Duplicates: 6 (already evaluated or in pipeline)
New added to pipeline.md: 3
+ Notion | AI Product Engineer | greenhouse
+ OpenAI | Applied Engineer | greenhouseHow career-ops talks to Greenhouse
career-ops requests boards-api.greenhouse.io/v1/boards/{slug}/jobs and reads the jobs array from the JSON, taking each role's title and its absolute_url. That boards endpoint returns listing metadata — title, location, and department — but not the full description, so career-ops pulls the complete job text with a follow-up request per role during the evaluate step, or by appending ?content=true where the board supports it. The scan itself is a plain HTTPS GET against a public endpoint, which is why it stays inside rate limits and spends no model tokens. Re-running the scan is safe: every URL is deduplicated against your scan history, your evaluated applications, and the current pipeline, so a role you have already seen is never added twice.
Gotchas
Greenhouse-API listings only include the title, location, and department in the boards endpoint. Full JD text requires a follow-up request per listing, which career-ops handles automatically during the evaluate step.
Related
followup
Flags applications and interviews that are overdue for followup based on the cadence rules you configure. Drafts the followup messages so you can review and send.
Ashby
Ashby is the modern ATS choice for Series A–C startups in the AI and dev-tools space. career-ops hits the public job-board API directly.