Skip to content

fix: a site that emails a code holds the application, and the run note matches the form - #67

Merged
coderback merged 1 commit into
mainfrom
fix/greenhouse-code-and-run-note
Oct 20, 2026
Merged

coderback merged 1 commit into
mainfrom
fix/greenhouse-code-and-run-note

Conversation

@coderback

Copy link
Copy Markdown
Owner

Why

Catapult's first live send reached Greenhouse's "A verification code was sent to … enter the 8-character code to confirm you're a human". Two things went wrong in how that was recorded:

  1. The run was marked "unconfirmed" ("check whether it went through before applying again"), though it plainly hadn't gone.
  2. The run note said the demographic-consent box was left unticked. The form screenshot shows it ticked from the saved answer. The note was the fill agent's own summary, which nothing checks against the page in an unattended run.

Greenhouse job boards score each application with invisible reCAPTCHA (mouse movement, typing patterns). Depending on the employer's spam-sensitivity setting, a low score triggers an emailed code (Greenhouse support). A headless browser scores low, so other Greenhouse employers with stricter settings will ask for this too. That check is for the candidate to pass: this PR reports it clearly and does not try to get round it.

What changed

browser_agent

  • After a submit the page doesn't confirm, _code_asked reads the visible page, iframes included, for a request for an emailed code.
  • It prefers the line saying a code was sent, otherwise one asking for a verification, security or one-time code, or to "confirm you're a human".
  • That line is returned as code_asked, with the action "The site asked for a code it emailed you".

Unattended notes

  • For a filled form, the notes now keep only what Windrush checked on the final form: questions left blank, required fields still empty, and answers the agent chose itself.
  • The agent's own summary stays only when it couldn't finish, to say why.
  • Interactive runs, where the user watches the page, are unchanged.

autopilot

  • A code_asked run is needs_you. The reason quotes the page and says to apply on the job's page with the run's CV and cover letter.
  • The tracker note says the same, and the status stays Pending Review.
  • It doesn't count toward the daily limit, since nothing was sent.

Tests

  • New fast test: a site that emails a code holds the run (needs_you, quoted reason, Pending Review, not counted as sent).
  • New real-browser test, parametrised over two pages:
    • code.html (Greenhouse's wording) reports the sentence;
    • form.html with an unconfirmed submit reports no code and "Couldn't confirm the submission".
  • Updated real-browser test: an unattended, filled form's notes no longer carry the agent's "Filled every field".
  • Fast suite: 1074 passed. The affected browser tests: 4 passed.

After deploy

Rebuild the API with docker compose up -d --build api.

…e matches the form

Catapult's live send reached Greenhouse's "A verification code was sent to ...
enter the 8-character code to confirm you're a human" and was recorded as
"unconfirmed" ("check whether it went through"), though it plainly hadn't gone.

- After a submit the page doesn't confirm, browser_agent reads the page for a
  request for an emailed code (_CODE_ASKED_JS) and returns it as code_asked.
- Autopilot holds such a run as needs_you, quoting the page, and says to apply on
  the job's page with the run's CV and letter. The tracker note says the same. It
  doesn't count toward the daily limit, since nothing was sent.

The run's note was the fill agent's own summary, which said the consent box was
left unticked while the form showed it ticked from the saved answer. Unattended,
nobody checks that summary against the page, so the notes of a filled form now
keep only what Windrush checked on the final form (left blank, still empty,
self-answered); the summary stays when the agent couldn't finish, to say why.
@coderback
coderback merged commit 20da64d into main Oct 20, 2026
3 of 4 checks passed
@coderback
coderback deleted the fix/greenhouse-code-and-run-note branch October 20, 2026 13:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant