Job application engine
Open a part, then hover a box for detail or a button to see it working.
Open a part, then hover a box for detail or a button to see it working.
19 sources, read 14 at a time. Each is read its own way, and every failure is written down: 145 named traps, 150 company aliases and 999 confirmed-dead boards.
A search API per company, posted to with filters. Hosts run from wd1 to wd503.
The UK filter id is read off a live filter list, never off a job, because a job's own country can be the US. A company id with an underscore needs a hyphen in the web address, or the board silently reads as empty.
One public job board per company, read as JSON in a single call.
32 company names returned nothing, so they are recorded and never tried again.
The public boards API per company, on the US and the EU servers.
33 dead boards recorded, and 890 guessed company names that exist on neither Ashby nor Greenhouse.
The postings API per company, in JSON mode.
Location and remote status come back per posting.
The postings API per company, plus a cross-board search that finds companies not yet on the list.
New companies found by search are added to the list for the next run.
A cross-board search, then each company board read directly.
27 boards are live but empty, so they are skipped.
The company's jobs.json feed.
The jobs sit under items, and the id that matters is inside identifier.value. Remote status needs a second call.
One JSON board per company.
A board whose job ids run perfectly in sequence is a demo board, and is thrown away.
The public guest search, 10 results a page, one location at a time.
Spaces must be sent as %20. Sending %2B once turned every search into Nottingham.
The official API, asked by employer id.
It ignores an employer name without saying so, and direct-employer adverts come back as a separate set.
The official API, across UK locations.
The biggest single source: 735 shortlisted roles in one run.
Company pages, read office by office.
An advert can list Harare first and London third, so the GB office is taken. An office called York with a US address is New York, and is dropped.
Company careers endpoints, one reader each.
Six more ATS families: BambooHR, HiBob, JazzHR, Eploy, PeopleHR and Stonefish.
Read 14 at a time:
Each source is read its own way:
Every source's reader, and the trap it taught, is behind See the sources.
Board alive?Before a board is read, the registry is checked:
A host that keeps refusing is paused and read again at the end of the run, so one slow board never holds up the rest.
173,103 postingsOne run: 173,103 postings.
UK checkLocation, remote status and the whole advert read for UK eligibility.
124,280 postings out: not in the UK.
Lane matchTitle and advert matched against 9 lane definitions, each with its own CV.
31,044 out: off every lane.
Employer rulesPrivate, for-profit employers only:
13,884 out as stale, or on employer or role type.
RepeatsEvery row checked against both application registers, with names normalised: ampersands, apostrophes and prefixes.
1,968 out as duplicates or repeat applications.
Hard gate?Any one of these ends it:
286 stopped at a gate in the run.
1,676 shortlisted1,676 of 173,103 pass every filter: under 1%.
ScoreThe score adds up:
Bands, read from the top:
Tier A is checked at source before any letter is written.
BoardFiltered by lane, tier, city, freshness and source. Hover a tier for how it works.
Master CVOne master CV holds the full record, every claim checked.
9 lane CVsThe master splits into 9 lanes, each a CV for one family of roles:
Each job gets its own CV, kept close to its lane: the order and the emphasis move to fit the advert, and the record stays the same.
Per-job letterThe most personal part: a letter written for that employer, opening on something only the job seeker can say.
Human reviewBoth arrive as a good first draft. The job seeker reads, edits and approves them before anything moves.
AnswersEvery form answer pre-written, and the advert captured when the pack is built.
Fill + read backFields written through the page, then read back, because an unverified write counts as not done.
Submit, by handThe send stays with the job seeker, along with accounts, passwords, CAPTCHAs and consent boxes.
RegisterEvery send logged with its evidence.
The register feeds the repeat check on the next run.
Sell · Deliver · TrainEvery engagement has the same shape:
When a client gets the value they want, they're more inclined to do more.
Once they see what is possible, they bring their own ideas to the table, ready to be implemented.