atsfill 0.0.5 is on PyPI. It adds two hiring systems, WeRecruit and ADP Workforce Now, and fixes a Teamtailor send that looked like a failure but wasn't one.
uvx atsfill@0.0.5 status
WeRecruit
WeRecruit is a French hiring system. Freehire lists about 3,200 of its postings, nearly all in France and in French, mostly outside tech: sales, accounting, retail, apprenticeships. Each posting lives at careers.werecruit.io/<fr|en>/<company>/offres/<slug>-<id>.
It's one of the easier systems atsfill handles. The apply form sits on the posting page and is rendered on the server. There's no account, captcha or OTP, and nothing reaches WeRecruit until you submit. atsfill read fetches the page over HTTP and parses the form. The browser read runs the same HTML through the same parser, so the two can't drift apart.
I looked at 11 employers' forms before writing any code. They all draw the same form:
- Title (Madame, Monsieur, Mx), names, email and phone, always required.
- Availability and a salary band, both dropdowns. Some employers require them and some don't.
- A CV, plus a cover letter and a photo where the employer asks for them.
- On 2 of the 11, the employer's own questions: yes/no buttons or a free-text box.
Two details came out of the survey. Every page carries a consent checkbox in its markup, but it's commented out, so the adapter doesn't list it. And one employer serves the same career site on its own domain, with no company name in the path. For URLs like that, atsfill can't tell from the address, so it opens the page and checks for WeRecruit's form.
A posting has two URLs, one French and one English, plus a slug that can change. The double-send guard keys on the company and the six-hex id, so all of them count as one posting.
The adapter passed the gate: 10 fresh postings all dry-ran to ready, and five gave the same fields from the HTTP read and the browser read. No application has gone out through it yet. Submit takes the form's own post as evidence, and the first real send will show what the page says afterwards.
ADP Workforce Now
To apply on ADP Workforce Now, you need an account with each employer. You create it on a "talent community" step that asks for your name, email and mobile number, then confirms it with a code sent by email. atsfill login --create makes that account and signs in, typing the code from your otp-commands. Then atsfill goes through the application form step by step: personal information, resume, questions, voluntary self-ID and review. The adapter passed its gate.
ADP MyJobs is a different ADP product, and it passed its gate in this release too.
Teamtailor: held, not failed
On some Teamtailor postings the submit goes through, then the page asks the applicant to click a link sent by email before the employer sees the application. atsfill was only waiting for the thank-you page, so these sends timed out and ended as errors. Running send again would have sent a second application.
These sends now end as submitted, with the reason held and the verification page's URL as evidence. The double-send guard treats them like any other send that went out.
Smaller fixes
- Phenom: the read lists the fields each country shows, and a fill now gets through sites that open on terms, all the way to the review step.
- Lever: a location's country matches by its code, and a visible hCaptcha after submit is reported as
blocked: captcha. - Join: a required cover letter is listed as required.
- Rippling: a long file name reads back whole.
- Jobstreet: the cover letter can be uploaded as a file instead of written.
- Work at a Startup: atsfill can fill the list of YC companies to hide your profile from.