Detect companies actively hiring GTM teams. Scrapes Greenhouse, Lever, Ashby, Workday, and Rippling for Sales, RevOps, and Growth roles. Tracks velocity and role changes across runs. Flat output built for Clay enrichment columns. Pay per result.
ATS slug override map integrated as lookup-first layer. Reduces probe requests for known companies.
[0.0.17] - 2026-04-20
Removed
Workday and Rippling fallbacks dropped from the ATS cascade. Verification against v0.0.16 returned zero successful Workday results on hubspot.com, salesforce.com, and workday.com. Discovery failed on two (careers pages either bot-blocked or did not expose a Workday URL to a bare fetch) and the myworkdayjobs.com jobs endpoint returned empty postings on the third. The fallbacks were adding 20 to 30 seconds of empty-result runtime per unmatched domain without ever surfacing data.
src/workday.js and src/rippling.js deleted. Imports and Phase 3 cascade removed from main.js. deriveCareerPageUrl no longer branches on workday or rippling.
Changed
ATS scope documented in README as Greenhouse, Lever, and Ashby only. v0.2.0 Workday and Rippling language removed from the overview, features list, supported platforms table, cascade order, and known limitations. Rationale for the removal is included in the overview so future readers understand why the scope was narrowed.
ats_platform output is now constrained to greenhouse, lever, ashby, or null.
Performance
hubspot.com and other domains without a supported ATS drop from ~20s to ~2s of empty-result runtime.
Ramp, Clay, Stripe, Brex unchanged.
[0.0.16] - 2026-04-20
Changed
ATS cascade restructured for speed. Greenhouse, Lever, and Ashby now probe the base slug in parallel instead of sequentially running each one through every slug variant. Variant probing (labs, -labs) only fires on ATS platforms where the base slug returned 404, and only if no base slug succeeded anywhere. Workday and Rippling still run sequentially after the slug-based cascade since they discover slugs from the careers page, not from the domain.
Slug-based scrapers (Greenhouse, Lever, Ashby) now accept a single slug and return {jobs, slug, is404}. Variant orchestration moved into main.js so the three ATS probes can run in parallel.
Performance
Ramp drops from ~13s to ~3s (base slug hit on Ashby, no variant probing needed).
Clay stays at ~7s (base slug 404 on all three, one variant probe finds claylabs on Ashby).
Stripe, Brex, and other happy-path domains unchanged at ~2s.
[0.0.15] - 2026-04-20
Fixed
GTM role matcher no longer pulls in administrative titles that happened to contain GTM keywords. New exclusion pass rejects Executive Assistant, Administrative Assistant, Admin Assistant, Personal Assistant, Assistant to, EA to, Receptionist, Office Manager, Office Coordinator, and Facilities roles before GTM keyword matching runs. Applied centrally in classifyRoles so every ATS adapter benefits.
top_gtm_role selection now uses a seniority-weighted ranker instead of returning the first match by array order. Roles are scored by the highest-ranked title token they contain (Chief / CRO / CMO / CCO / CSO / CFO at 100, Head of / SVP / EVP / VP / Vice President at 80, Director at 60, Senior Manager / Principal / Staff / Lead at 40, Manager / Senior at 20, everything else at 10), and the highest-scoring role wins. Ties break on original array order.
CRO homograph guard on the seniority ranker. CRO stops counting as a Tier 1 keyword when the title also contains website, conversion rate, conversion, seo, digital marketing, landing page, or optimization within 20 characters of cro. The role can still score on other keywords present in the title, so it does not get dropped from matching, just denied the fake Tier 1 boost. Fixes cases like Ramp picking Growth Manager, Website CRO over Head of Customer Success.
ATS slug probe. Scrapers now try base slug plus labs and -labs suffixes before giving up, which fixes companies whose ATS slug differs from their domain (e.g. clay.com uses claylabs on Ashby). New optional ats_slug input lets you pin the slug directly when auto-probing is not enough. Scrapers also now return the slug that actually worked so career_page_url reflects the real board.
[0.2.0] - 2026-04-15
Added
Workday ATS detection: scrapes the company careers page for a Workday board link, extracts the slug and tenant, then queries the Workday jobs JSON API and filters results by GTM keywords
Rippling ATS detection: scrapes the company careers page for a Rippling board link, then queries the Rippling jobs API and filters by GTM keywords
Velocity tracking: three new output fields (role_count_delta, velocity_signal, days_between_runs) derived by comparing the current run against the optional previous_gtm_role_count and previous_run_date inputs
Change detection: four new output fields (change_detected, change_type, new_gtm_roles, removed_gtm_roles) derived by comparing current gtm_roles_detected against the optional previous_gtm_roles_detected input
Three new optional input fields: previous_gtm_role_count, previous_run_date, previous_gtm_roles_detected — all null-safe, first run returns first_run state with no delta computed
ats_platform output field now supports "workday" and "rippling" in addition to existing values
input_schema.json updated with three new optional fields
output_schema.json updated with seven new output fields
Known Limitations
Workday detection is best-effort: coverage estimated at 60-70% due to non-deterministic company slug patterns. Workday slugs do not reliably map to the input domain. The careers page scrape is the only reliable resolution method. Failures return ats_platform = none gracefully.
Rippling detection uses unofficial API endpoints that are not publicly documented. Coverage is lower confidence than Greenhouse, Lever, and Ashby. Failures return ats_platform = none gracefully.
Neither Workday nor Rippling failures affect the core GTM signal output. If both fail, the actor returns ats_platform = none with all GTM fields null rather than erroring out.
[0.1.1] - 2026-04-07
Changed
Price reduced from $0.12/result to $0.07/result for volume strategy
GitHub repo visibility changed to private
[0.1.0] - 2026-04-03
Added
Initial release: Greenhouse, Lever, Ashby ATS cascade via HTTP (no Playwright)