ATS Hiring Signal Monitor
Pricing
from $10.00 / 1,000 board snapshots
ATS Hiring Signal Monitor
Track hiring changes across Greenhouse, Lever and Ashby. Monitor career boards on a schedule and receive structured events when jobs are added, changed, reopened or closed.
Pricing
from $10.00 / 1,000 board snapshots
Rating
0.0
(0)
Developer
Martin Lain
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
19 hours ago
Last modified
Categories
Share
Track hiring changes across Greenhouse, Lever and Ashby.
Monitor company career boards on a schedule and receive structured events when jobs are added, changed, reopened, or closed.
Why teams pay for this
- Sales intelligence — trigger outreach when a target company opens relevant roles
- Company growth signals — watch headcount and department expansion over time
- Recruiting intelligence — track competitor or client boards without manual checks
- Investment / research monitoring — structured hiring deltas for diligence and market maps
- AI-agent workflows — typed JSON events (
job_added,job_changed, …) for webhooks, MCP, and automations
Built as a job change monitor / hiring signals API / career page monitor over official public ATS career-page JSON — not another full board dump scraper.
Supported boards
| ATS | Source |
|---|---|
| Greenhouse | Public Job Board API |
| Lever | Public postings JSON |
| Ashby | Public posting-api job board |
No login. No LinkedIn. No residential proxy required for these public boards.
Outputs
recordType | Meaning |
|---|---|
snapshot | Normalized open jobs (optional) |
change_event | Deltas after the first baseline run |
hiring_signal | Per-board open-count / department summary (optional) |
Change events
eventType | When |
|---|---|
job_added | New job appears after baseline |
job_changed | Monitored fields / content hash changed |
job_reopened | Previously closed job returns |
job_closed | Missing for N consecutive successful fetches |
Stable id: jobKey = ats:boardToken:externalId
Confirmed-closed: missing once is not enough — uses confirmedClosedAfterRuns (default 2). Failed board fetches do not close jobs.
How to use
- Add one or more boards (
boardTokenand/or careersboardUrl;ats: autoworks for common hosts). - Set a durable
kvStoreName(same name on every scheduled run). - First successful run = baseline (snapshots / signals only — no change events).
- Later runs emit
change_eventrows when jobs appear, change, reopen, or confirm-close. - Schedule hourly/daily and wire the dataset to webhooks, Make/Zapier, or your agent pipeline.
Example input
{"boards": [{ "ats": "greenhouse", "boardToken": "airbnb", "label": "Airbnb" },{ "ats": "lever", "boardToken": "leverdemo", "label": "Lever Demo" },{ "ats": "ashby", "boardToken": "ashby", "label": "Ashby" },{ "ats": "auto", "boardUrl": "https://jobs.lever.co/netflix" }],"kvStoreName": "gtm-hiring-signals","confirmedClosedAfterRuns": 2,"keywordFilter": "engineer","emitSnapshots": false,"emitHiringSignal": true}
Main input fields
| Field | Description |
|---|---|
boards[] | ats (auto / greenhouse / lever / ashby), boardToken, boardUrl, label |
kvStoreName | Named KV store for fingerprints across runs |
confirmedClosedAfterRuns | Missing streak before job_closed (default 2) |
departmentFilter / locationFilter / keywordFilter | Optional contains filters |
emitSnapshots / emitHiringSignal | Toggle snapshot rows and hiring summaries |
maxJobsPerBoard | Safety cap (default 5000) |
Example outputs
change_event
{"recordType": "change_event","eventType": "job_added","ats": "greenhouse","boardToken": "airbnb","jobKey": "greenhouse:airbnb:8184174","title": "Account Manager","after": {"title": "Account Manager","department": "Sales","location": "London, United Kingdom","absoluteUrl": "https://careers.airbnb.com/positions/8184174?gh_jid=8184174","employmentType": null,"isRemote": null}}
hiring_signal
{"recordType": "hiring_signal","ats": "ashby","boardToken": "ashby","openJobs": 25,"openJobsDelta": 0,"added": 0,"changed": 0,"closed": 0,"reopened": 0,"departmentsHiring": ["Engineering", "Sales"],"isBaseline": false}
Pricing (pay per event)
| Event | When charged | Price |
|---|---|---|
board_snapshot | Each successful board fetch + normalize | $0.01 |
change_event | Each emitted change row | $0.02 |
signal_report | Each hiring_signal summary row | $0.01 |
Example: 10 boards daily with ~5 real changes → about 10×$0.01 + 5×$0.02 + 10×$0.01 ≈ $0.30/day (plus platform start events if applicable).
Limitations
- Workday and HTML-only career sites are out of scope for this version.
- Custom career domains need explicit
ats+boardTokenwhen auto-detect cannot infer the ATS. - If
maxJobsPerBoardtruncates a large board, close detection can be skewed — prefer filters or a higher cap. - Filters define the monitored universe (filtered-out jobs are treated as absent from the board view).