The problem
Job boards are built for browsing, not for a structured search across thousands of employers with a specific, two-part question: does this role fit me, and does this company actually build with AI or just say so?
The three big applicant-tracking systems expose public JSON APIs for every company that uses them, but each has its own schema, pagination, and quirks, and the volume is far past what a person can read.
What I did
-
Enumerated the public job-board endpoints for Greenhouse, Lever, and Ashby plus a remote-jobs feed, and wrote a poller that walks all of them daily with retries and rate awareness, then normalizes every posting into one schema.
-
Filtered on hard gates first (remote eligibility, compensation, years of experience) so the expensive scoring only runs on postings that could matter, and deduplicated against a persistent ledger so a role is scored once.
-
Designed a two-axis scoring model. Role fit matches requirement bullets against a skills profile built from my resume. The AI-forward score measures the density of distinct LLM, agent, MCP, and API-tooling language in the posting, kept separate so it cannot inflate fit.
-
Built the whole thing with an LLM coding agent and MCP connectors, then scheduled it as a daily Claude Code task that writes a ranked report with both views: best fit, and the AI-forward subset.
- Poll 15,862 Public Greenhouse, Lever, and Ashby boards, with retries and rate awareness.
- Normalize 263K Postings from three schemas and a remote-jobs feed into one.
- Hard gates Remote eligibility, compensation, years of experience. gate
- Dedupe Against a persistent ledger, so a role is scored once.
- Score Role fit against a skills profile; AI-forward language density, kept separate.
- Report 1,350 Matches tracked all time; a ranked report lands each morning.
Counts from the November 2026 sweep log. The 263K postings include 260,911 from ATS boards and 2,097 from the remote-jobs feed.
Outcome
A daily ranked report over the entire public job market in these three systems, with the AI-forward employers surfaced separately, instead of hours of browsing.
The skills profile and scoring weights live in code, so changing what I am looking for is a one-line change that re-ranks the whole market the next morning.
15,862 boards in total, each a public JSON endpoint with its own schema and pagination.
Table view
| Category | Boards |
|---|---|
| Greenhouse | 8,333 |
| Lever | 4,368 |
| Ashby | 3,161 |
In the stack
Where it sits
The highlighted nodes are the systems and people this project touched.
Skills used
- Python (production automation, 6,000+ lines)
- API integrations (Salesforce, DealHub, Cloudflare, Stripe, job-board APIs)
- LLM coding agents (Claude Code) as a daily build tool
- Model Context Protocol (MCP) connectors wired into agent workflows
- LLM-assisted scoring and classification pipelines
- Data modeling & analytics