ATS name
Ashby
URL pattern
No response
2–3 sample posting URLs (public)
Ashby is a fast-growing ATS used by ~3,000 companies. We already ship 2,839 Ashby slugs in agent/data/company_pools/ashby.json but there's no adapter to actually fetch + parse jobs from them.
What to do
- Look at how Greenhouse / Lever / SmartRecruiters adapters work:
agent/backend/services/job_sources.py → fetch_greenhouse_jobs(), fetch_lever_jobs(), fetch_smartrecruiters_jobs()
worker/adapters/greenhouse.py (form-parser side, for apply_now.py)
- Add
fetch_ashby_jobs() to job_sources.py. Ashby's public API:
- List jobs:
https://api.ashbyhq.com/posting-api/job-board/{slug}
- Returns JSON with
jobs[].id, title, location, applyUrl, descriptionHtml
- Add
worker/adapters/ashby.py that detects an Ashby application URL pattern (jobs.ashbyhq.com/...) and parses the form. Steal the structure from worker/adapters/greenhouse.py.
- Wire it into
agent/run.py so the discovery cycle includes Ashby (the batch is already there at line ~5586).
Acceptance
- Discovery cycle pulls fresh jobs from at least 5 Ashby companies and inserts them into
data/jobs.db
apply_now.py can open an Ashby job URL and fill at least name/email/phone fields
- Add tests in
worker/tests/test_ashby_adapter.py mirroring the Greenhouse + Lever ones
Notes
- Ashby's API is generally clean (no scraping needed for discovery)
- Their forms are React-based; Playwright handles them fine
Want to write the adapter yourself?
ATS name
Ashby
URL pattern
No response
2–3 sample posting URLs (public)
Ashby is a fast-growing ATS used by ~3,000 companies. We already ship 2,839 Ashby slugs in
agent/data/company_pools/ashby.jsonbut there's no adapter to actually fetch + parse jobs from them.What to do
agent/backend/services/job_sources.py→fetch_greenhouse_jobs(),fetch_lever_jobs(),fetch_smartrecruiters_jobs()worker/adapters/greenhouse.py(form-parser side, forapply_now.py)fetch_ashby_jobs()tojob_sources.py. Ashby's public API:https://api.ashbyhq.com/posting-api/job-board/{slug}jobs[].id,title,location,applyUrl,descriptionHtmlworker/adapters/ashby.pythat detects an Ashby application URL pattern (jobs.ashbyhq.com/...) and parses the form. Steal the structure fromworker/adapters/greenhouse.py.agent/run.pyso the discovery cycle includes Ashby (the batch is already there at line ~5586).Acceptance
data/jobs.dbapply_now.pycan open an Ashby job URL and fill at least name/email/phone fieldsworker/tests/test_ashby_adapter.pymirroring the Greenhouse + Lever onesNotes
Want to write the adapter yourself?