First release. Searches a cross-ATS job index built from 33.000 company career boards on
seven platforms (Greenhouse, Lever, Ashby, SmartRecruiters, Teamtailor, Personio, BambooHR)
and verifies every delivered role against its source at query time.
- Filters: title (any/all, word-boundary, phrases), company, location, department, remote,
posted-date window, platform; caps for result count and per-company share.
- Live verification: one board read verifies every matched role of that board; closed roles
are dropped and never charged. A board that cannot be read leaves its roles delivered but
flagged
verified: false rather than silently reported as closed.
- Descriptions come free with the board read on Lever, Ashby, Teamtailor and Personio; the
other three platforms cost one extra call, made only for roles that survived verification.
- Personio and BambooHR publish no posting date (measured): a date filter sets their roles
aside and the run message says how many, instead of dropping them silently.
- Empty result is never a silent zero: the run says which filter emptied it and charges nothing.
- Proxy URLs are awaited (
proxyConfiguration.newUrl() is async; the unresolved Promise
made every proxied request fail), and no proxy group is named — the account default is
used, with a direct read as the fallback. Both were caught by the first platform runs.
- Mode detection fixed: only
APIFY_META_ORIGIN=STANDBY selects Standby. ACTOR_STANDBY_PORT
is set on every platform run, so a normal batch run was starting the HTTP server and
timing out instead of searching. Caught by the first platform run.
- Reads go direct by default and fall back to the proxy only when a source pushes back
(429/403) or a read fails. Measured: a 21-row query takes 3.9 s direct vs 58 s through the
proxy, and costs $0.0004 vs $0.0051 — with identical results and no rate limiting.
- README now carries measured numbers instead of estimates: the index holds 445,722 open
roles across 20,380 boards that currently have any (32,997 indexed), a full refresh takes
~14 minutes, and a title+location query over the whole index answered in 11.8 seconds.
- Default memory lowered to 512 MB after measuring a 135 MB peak on the full index.
- Charging fixed. The priced-event list was read from
Actor.getEnv().actorRunPricingInfo,
a field that does not exist, so every charge was skipped silently: the D+0 check measured 10
delivered rows and job-posting: 0. Events now come from Actor.getChargingManager() and
delivery+charge happen in one Actor.pushData(rows, "job-posting") call, so the charged count
cannot drift from what was delivered. Standby uses the same check.