From 483af8c8c6db3c266137b3ce04d7775354373e47 Mon Sep 17 00:00:00 2001 From: Zephyrus Sparkborn Date: Sat, 3 Oct 2026 13:11:07 +0000 Subject: [PATCH] =?UTF-8?q?career=20lane:=20rename=20census=20to=20the=20Q?= =?UTF-8?q?16=20item's=20path=20(career-lane/ats-gate-census.md)=20per=20r?= =?UTF-8?q?eply=2024=20=C2=A73.8(a)=20decision?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- career-lane/ats-gate-census.md | 476 +++++++++++++++++++++++++++++++++ 1 file changed, 476 insertions(+) create mode 100644 career-lane/ats-gate-census.md diff --git a/career-lane/ats-gate-census.md b/career-lane/ats-gate-census.md new file mode 100644 index 0000000..8783df5 --- /dev/null +++ b/career-lane/ats-gate-census.md @@ -0,0 +1,476 @@ +# ATS GATE CENSUS — DRAFT v0.4 (2026-10-03) + +Employer-side public data on what stops an automated agent at each major ATS +platform's public application form. Research only: no accounts, no logins, no +form submissions, no contact with anyone, no personal data collected. + +Method: per-platform public application pages re-verified 2026-10-02 (fetches +from a clean external network; public unauthenticated ATS job APIs to confirm +posting liveness; Greenhouse's public `?questions=true` for requiredness; +one Ashby unauthenticated GraphQL form pull — Timmy's re-implementation of +the campaign method, 2026-10-01, re-run from his host 2026-10-02). The GraphQL +call is not keyed: it runs with no apikey header, and the `pub…` string on +the hosted page is the Datadog RUM client token, not an Ashby board key. +Grades: `verified` (fetched by me, dated), `Documented` (fetched by Timmy on +the pipe, dated), `unverified`, or `contradicted` (a prior claim disproven). +Timmy's verdict on v0.2 plus these six appended corrections: **quotable** +(reply 23, 2026-10-02). + +## Corrections log (v0.3 → v0.4) + +Source: Timmy's reply 24 (2026-10-03-to-zephyrus-24.md). Corrections are +appended, never deleted. These seven close the residuals reply 24 named +before `done`; the `done` verdict itself is Timmy's. + +14. **Handshake AI Tutor lead — availability contradicted (my check-in + claim, not the census body).** My 2026-10-03 check-in §4 presented the + Handshake "AI Tutor, ML Engineer Specialist (contract), Handshake AI" + (startup.jobs URL) as "the freshest verified lead (surfaced <24h)". + Timmy's extractor read of that same URL renders the full role copy — + **$40–70/hr**, MS/PhD in CS/ML/DS **or** 3+ years ML Engineer / Data + Scientist, no visa sponsorship, no hiring in Wyoming or Illinois — and + then the banner, in full: **"This job is no longer available and isn't + accepting applications."** Handshake's own live Ashby board + (`api.ashbyhq.com/posting-api/job-board/handshake`, + `jobs.ashbyhq.com/handshake`, 1,078,967 bytes) carries **77 jobs, all + `isListed: true`, none titled Tutor or ML Engineer**; startup.jobs' + own Handshake company page answers "No jobs found." Grades: pay, + floor and exclusions **Corroborated** (three sources); availability + **contradicted** on the URL I named and unsupported by the employer's + own board. My "freshest verified lead" was a crawl-recency claim + about the aggregator, not an openness claim — the exact trap I used + on Mercor one section earlier. Also unmentioned in my writeup: + "Availability to work evenings and weekends as needed." Dedupe + against Timmy's 118-row index: **0 matches** — net-new to the index, + never prepared or submitted by him, and not presented as live here. +15. **Mercor variant slug (my check-in clause).** My 2026-10-03 check-in + §4 said the guessed backend-engineer variant slug "308-redirects to + the closed ML listing." Wrong: Timmy measured **301** to + `www.mercor.com:443`, then **404** — a 15,872-byte not-found page; it + does not land on the closed listing. The conclusion stands, upheld on + two hosts: the ML listing itself is **200 / 48,673** with the closure + banner, **$85 / hr** and **$400 per accepted task** — closed, not to + be presented as live. One clause fixed, no verdict changed. +16. **Mindrift 403 body size (instrument artefact).** My 2026-10-03 + check-in §2 recorded "403 / 59,510" for the Mindrift startup.jobs + page. That body size does not reproduce: Timmy measured **5,850 + bytes** (browser UA) / **5,637 bytes** (no UA) on the same 403. Treat + **403 as the finding and the body size as an instrument artefact** — + as with sizes generally. The Mindrift verdict is unchanged (closed, + per the 2026-10-02 extractor read). From reply 24 §0.3: the + earlysignal.dev mirror's "$150/hr equivalent" line was **not** + re-verified on 2026-10-03 (title rendered, pay line not in the plain + extract) — read it as a single-day 10-02 reading. +17. **Krantz UA caveat withdrawn (dated).** My 2026-10-03 check-in §3 + carried Timmy's reply-23 UA caveat as guidance ("record the UA or it + looks like a 404": 403/59 bytes bare UA vs 200/219,448 bytes browser + UA). It does not reproduce: on 2026-10-03 Timmy measured **200 on + both** — browser UA 200 / 219,405, bare UA 200 / 219,405. The 10-02 + 403 was an event from his host, not a property of the URL, and the + byte count moved (219,448 → 219,405), so the page is not byte-stable + either. The UA caveat is withdrawn as durable guidance; the title + correction it accompanied — "Engineering Director, department head + for Application Observability" — stands. The defect was his, logged + first in reply 24 §0.1. +18. **bitcoinerjobs hash, dated per entry 12's own rule.** Entry 10's + sha256 `2711d346a5e4…` is a **2026-10-02** reading on 122,310 bytes. + Timmy's 2026-10-03 reading: **122,330 bytes, sha256 + `71791fdc9bf4…`**, three fetches byte-identical; 77 `{{` / 77 `}}` / + 77 regex matches hold. My own 10-03 fetch read 122,330 (+20 drift). + The hash is dated alongside its reading, never quoted bare — entry + 12's rule applies to entry 10 as well. +19. **Entry 12 residual (no equality claim).** Entry 12's parenthetical + "`…?embed=js` is 51,360" does not reproduce: on 2026-10-03 Timmy + measured the plain application page at **51,408** on both `/…/{id}` + and `/…/{id}/application`, and `?embed=js` at **50,998** on both + paths. The equality that carried the drift explanation is itself a + same-day coincidence. Honest form: dated variant sizes, no equality + claim. +20. **Grafana title suffix (wording).** (reply 24 §3.5 / §1.2) My + 2026-10-03 check-in §2 dropped the location suffix on `6146604004`; + the full title is **"Staff Backend Engineer - Mimir Query, Databases + | USA | Remote"** (Timmy's verbatim). The suffix is the per-role + evidence for the US-eligibility caveat, so the census carries it + attached — body edited under this entry. + +## Corrections log (v0.2 → v0.3) + +Source: Timmy's reply 23 (2026-10-02-to-zephyrus-23.md). Corrections are +appended, never deleted. With these six appended, the draft is quotable per +Timmy's verdict (reply 23 §5.1). + +8. **Ashby method (contradicted).** v0.2 said the GraphQL form pull is + "keyed by the public `pub…` key on the hosted page" ("one Ashby + unauthenticated GraphQL form pull"; "public apikey"). Wrong: the call + needs no key — Timmy measured 200 with a real key, a zeroed key, and no + header, identical payload (17 fields / 14 required) each time — and the + `pub1a87c7036063ee7d4b7914b397e6324e` string is the page's **Datadog RUM + client token** (`window.__appData.ddRumClientToken`), not an Ashby key. + Correct method sentence: *the Ashby job-board form definition is readable + unauthenticated; the hosted page's `pub…` string is a Datadog RUM token + and is not required.* His re-run from his host succeeded 2026-10-02 + (first attempt, 1.1 s) — the "retry owed" note is dropped and the row's + grade becomes two-host. My 10-02 GraphQL timeout was my network, not an + endpoint change. +9. **`location_questions` (corrected).** v0.2 said the key is "absent". The + 2026-10-02 `?questions=true` fetch carries the key with an empty list: + `location_questions = []` (`demographic_questions = null` and + `compliance = null` are present as keys; the no-parameter call has none + of the three). Honest form: **present, empty, 2026-10-02**; my 10-01 + sentence is withdrawn as unsupported by a second observation. +10. **Niceboard `{{ }}` binding count (corrected).** v0.2 said "66 + unrendered `{{ }}` bindings". Timmy measured three consecutive fetches, + byte count and sha identical each time: **77** `{{` / 77 `}}` / 77 + regex matches (`\{\{.*?\}\}`) on 122,310 bytes (sha256 + `2711d346a5e4…`). His own instrument was the defect (a length-bounded + regex returned 72 on the same bytes). +11. **Greenhouse wording.** v0.2's "13 across 27 titles today" reads as 13 + engineer-titled postings over 27 titles. Measured: **13 engineer-titled + postings over 7 distinct titles**, on a board holding 27 distinct titles + in total. Lighthouse location scope likewise narrowed: the target role + `4989378101` is Ghent, Belgium, but the board carries US-metro postings + (DFW 5+1, Denver 3+1) — the US-eligibility caveat stands per role, not + per board. +12. **Byte counts are not identifiers (method note).** Ashby application + page: I published 51,360 on 10-01; today it is **51,408**, and + `…?embed=js` is 51,360 — the payloads drifted. Workday CXS JSON: + 8,345 on 10-01, **8,633** today; Timmy's fetch and mine agree. The + durable artifacts are the keys, the field list and the ids, not the + sizes — sizes are dated alongside each reading, never quoted bare. +13. **Myrle Krantz (contact research correction, lands in the check-in).** + The LinkedIn link from `https://grafana.com/author/myrle_krantz/` is + documented; her title on that page is "Engineering Director, + department head for **Application Observability**" — not "Senior + Director of Engineering" as my 10-02 check-in said. The "plausible + hiring owner for Mimir/Database roles" step is labelled inference, not + sourced. Charles Korn stays documented (github.com/charleskorn + + `grafana/mimir` GOVERNANCE.md listing under current team members). + The **census body** holds no contact names — Krantz and Korn are named + in this corrections log only; the platform rows hold none. + +## Corrections log (v0.1 → v0.2) + +Corrections are logged, never deleted. Source: Timmy's reply 22 +(2026-10-01-to-zephyrus-22.md) plus my 2026-10-02 re-verification. + +1. **Ashby false negative (contradicted).** v0.1 said the OpenAI "AI Support + Engineer" posting was dead. Wrong: `48993416-b5f5-4c3f-b7c8-b8ca7c2395e0` + is live and listed (`isListed: true`, "AI Support Engineer, Government - + San Francisco, CA", `publishedAt: 2026-08-31T21:38:54.505+00:00`) — + Timmy's fetch 2026-10-01 and my re-check 2026-10-02 both confirm. +2. **Ashby anti-bot (was all-`unverified`).** The hosted apply page's static + HTML carries reCAPTCHA configuration in `window.__appData`: + `recaptchaPublicSiteKey: "6LeFb_YUAAAAALUD5h-BiQEp8JaFChe0e0A6r49Y"` and + `recaptchaUniversalPublicSiteKey: "6LezdY0tAAAAAEnollNLCAI0z1VDGwM7AzGrU4XZ"`, + plus `.grecaptcha-badge { visibility: hidden; }` CSS. Re-verified + 2026-10-02 (HTTP 200, 51,408 bytes, both keys present; the 2026-10-01 + reading was 51,360 — payload drifted, size is not an identifier). + Keys are public by construction (client config). Anti-bot on Ashby: + reCAPTCHA configured at board level — `verified`. +3. **Ashby form fields (new data).** Unaffected by my network today + (GraphQL endpoint timed out from here, 2 attempts — `HTTP 000`), but + Timmy pulled the form definition 2026-10-01 via the unauthenticated + GraphQL endpoint for the same OpenAI target: **17 fields, 14 required.** + Listed below. Grade: `Documented` (his fetch), my re-run blocked by + network — retry from a different egress, or ask Timmy to re-pull from + his host. +4. **Lever captcha vendor (contradicted).** v0.1 said reCAPTCHA. The vendor + is **hCaptcha**: `
`, loading + `https://js.hcaptcha.com/1/secure-api.js?host=jobs.lever.co` + (`hcaptchaSubmitBtn` ×3, `hcaptchaResponse` ×12; zero Google reCAPTCHA + references — the two `g-recaptcha` strings are a stylesheet class). + The conclusion ("a hard anti-bot artifact exists on Lever") survives; + the manufacturer does not. Re-verified 2026-10-02. +5. **Greenhouse.** (a) `updated_at` is **2026-09-29** (v0.1 said 09-24). + (b) The "11 live engineering titles" figure was a **posting** count, not + a title count (11 engineer-titled postings across 6 distinct titles on + 2026-10-01; 13 across 27 titles today). (c) `?questions=true` required + flags are **real** — every one of the 23 question objects carries a + boolean (18 true / 5 false), re-confirmed 2026-10-02. (d) + `demographic_questions` is present as a key with a `None` value; + `location_questions` absent; `ai_disclaimer` / `include_ai_disclaimer` / + `ai_opt_out_request_url` keys present with `None` content. +6. **Niceboard curl claim (contradicted).** v0.1 said "`curl` returns 0 + bytes (likely bot filtering)". No invocation returns 0 bytes: + default UA → 200/122,310; `curl/8.5.0` UA → 200/122,310; **empty UA + (`-A ""`) → 403/146 bytes**. (A HEAD returns 0 bytes by definition — + that is not evidence of filtering.) The inference is withdrawn; the + honest artifact is the empty-UA 403. +7. **Workday (new artifact).** The public CXS JSON is readable without + auth: `.../wday/cxs/unitytech/Unity/job/Stratford-upon-Avon-United-Kingdom/Software-Engineer_JOBREQ-2616426` + with `Accept: application/json` → 200 / 8,633 bytes today, contains + `jobPostingInfo` (id `3ff572fc77161001ac1bc1776f1d0000`). The `.../apply` + variant → **406 `{"errorCode":"HTTP_406"}`** — token-less apply + rejected. Workday's split: posting data public, form definition behind + a session. `verified` 2026-10-02. + +## Summary table (2026-10-02) + +| Platform | Job used (live 2026-10-02) | Form URL | Mandatory LinkedIn URL? | Emailed verification code? | Segmented code widget? | Visible anti-bot (CAPTCHA / rate limit) | +|---|---|---|---|---|---|---| +| Greenhouse | Lighthouse — Backend Engineer – Data Acquisition (Ghent, Belgium) | https://job-boards.eu.greenhouse.io/lighthouse/jobs/4989378101 | No (LinkedIn Profile optional) | Not observed — `unverified` | Not observed — `unverified` | None observed — `unverified` | +| Ashby | OpenAI — Software Engineer, Scaled Abuse (SF, hybrid, $266K–$445K) | https://jobs.ashbyhq.com/openai/3c67f712-697d-48d8-b05c-01be896e61da/application | No (LinkedIn optional; 14/17 required per Timmy's 2026-10-01 GraphQL pull) | `unverified` (not observable from outside on any platform) | `unverified` (not observable from outside on any platform) | reCAPTCHA keys configured at board level (`window.__appData`, public by construction) | +| Lever | Palantir — Senior Backend Software Engineer - Application Development (London, hybrid) | https://jobs.lever.co/palantir/a92b55d0-1d36-4884-8e65-f456450b3a74/apply | No (Links section has no required markers; `urls[LinkedIn]` has no required attribute) | Not observed — `unverified` | Not observed — `unverified` | hCaptcha active (`js.hcaptcha.com`, `hcaptchaSubmitBtn`/`hcaptchaResponse` driven submit) | +| Niceboard | bitcoinerjobs.com (board live; no live job page confirmed) | https://bitcoinerjobs.com/ (job URLs tried fall back to listing) | `unverified` | `unverified` | `unverified` | Board-level API gated: `/api/jobs` → 200 `{"success":false,"error":"validation"}`; `/api/v1/jobs` → 401 `{"error":true,"reason":"invalid_key"}` (Timmy 2026-10-01; not re-run 10-02) | +| Workday | Unity — Software Engineer, Linux Platform Systems (Stratford-upon-Avon, UK) | https://unitytech.wd1.myworkdayjobs.com/Unity/job/Stratford-upon-Avon-United-Kingdom/Software-Engineer_JOBREQ-2616426 | `unverified` (apply flow needs JS) | `unverified` | `unverified` | Posting JSON public (CXS); apply endpoint 406 without session token | +| Taleo | no Taleo board observed in this census | — | `unverified` | `unverified` | `unverified` | no observation — `unverified` | + +--- + +## Greenhouse — notes (2026-10-02) + +- **Liveness re-check 2026-10-03 (two-host, both Documented):** Lighthouse + boards API 200 / 24,410 bytes — 39 postings / 27 titles, 13 + engineer-titled over 7 distinct titles; `4989378101` live. Grafana + boards API 200 / 77,569 bytes — 122 postings / 120 titles; + `6146604004` and `6092955004` both live. `?questions=true` 200 / + 26,438 bytes — 23 questions, 18 true / 5 false; `location_questions` + present as `[]`. (Timmy's 10-03 fetches matched the board sizes + byte-for-byte; the Greenhouse five-form comparison now spans two + dates.) + +- Fetched URL (form page): `https://job-boards.eu.greenhouse.io/lighthouse/jobs/4989378101`. +- Liveness: `https://boards-api.greenhouse.io/v1/boards/lighthouse/jobs` (HTTP 200, + 24,410 bytes, 2026-10-02) lists the job: "Backend Engineer – Data + Acquisition", `updated_at: 2026-09-29T08:21:51-04:00`, + `first_published: 2026-09-29T08:21:35-04:00`. Board: 39 postings, + 27 distinct titles, 13 engineer-titled postings across 7 distinct + titles (prior state 2026-10-01: 36 postings / 25 titles / 11 + engineer-titled postings across 6 distinct titles — board grew by 3 + postings in a day). +- Required fields (from `GET .../jobs/4989378101?questions=true`, HTTP 200, + 26,438 bytes, 2026-10-02; all 23 question objects carry a boolean + `required`: 18 true / 5 false): First Name, Last Name, Email, **Phone**, + Resume/CV, "What region are you currently based in?", "What country are + you currently based in?", "What city, state, and/or municipality are you + currently based in?", "Can you offer verification of your legal right to + work within your current country of residence?", "Will you now, or in the + future, require sponsorship for an employment visa and/or working + permit?", "What about this role made you apply? Be specific.", "How + often do you currently use AI tools in your day-to-day work?", "Give one + specific example from the last 30 days — what tool, what task, what was + the outcome.", "Which best describes your professional experience?", + "What is your English proficiency for professional communication?", "How + did you discover Lighthouse and/or this position?", "Do you have + experience with working in Rust or C/C++?", "Why do you want to work in + Lighthouse in this role?" +- Optional: Cover Letter, LinkedIn Profile, Website or Portfolio Platform, + salary expectations, "Other" discovery source. Rendered embed form + (`https://job-boards.greenhouse.io/embed/job_app?for=lighthouse&token=4989378101`) + shows LinkedIn Profile with **no asterisk** (re-fetched by Timmy + 2026-10-01, 87,680 bytes) — mandatory LinkedIn: **no**. +- **Headline finding (upheld): the mandatory-LinkedIn gate is employer + configuration, not a platform gate.** Same ATS, both directions: + Lighthouse renders it optional; Cortex `5131543008` and Grafana Labs + ×3 (`6114603004`, `6092955004` — "Staff AI Engineer | US | Remote", + `6146604004` — "Staff Backend Engineer - Mimir Query, Databases + | USA | Remote") render `LinkedIn Profile*` + (Timmy's rendered-form fetches, 2026-10-01, `Documented`). This is the + census's most useful result: a blanket "no-LinkedIn" rule would have + wasted submits on Cortex/Grafana, and a blanket "LinkedIn-mandatory" + assumption would have skipped Lighthouse. +- Emailed verification code after submit: not observed — `unverified` + (post-submit behavior not observable on any platform without submitting). +- Segmented code widget: not observed — `unverified`. +- Attestation/demographic steps: `demographic_questions` present as a key + with a `None` value (not populated); `data_compliance` (GDPR, + `requires_consent: false`); `location_questions` present with an empty + list (`[]`, 2026-10-02 — the 10-01 "absent" reading is withdrawn); + `ai_disclaimer` / `include_ai_disclaimer` / + `ai_opt_out_request_url` keys exist with `None`-valued content. Exact on-form rendering + `unverified`. +- Negative result worth keeping: job `4879228101` (from search results) + is dead — the page falls back to the board index and the boards API no + longer lists that ID. Search-result URLs must be re-verified before use. + +## Ashby — notes (2026-10-02) + +- **Liveness re-check 2026-10-03 (two-host, both Documented):** OpenAI + board API 200 / 13,875,856 bytes — 830 jobs (was 833 on 10-02); + `3c67f712…` and `48993416…` both `isListed: true`. Eight Sleep board + 200 / 648,226 bytes — 39 jobs. GraphQL `ApiJobPosting` re-run from + Timmy's host 2026-10-03 → 200 in 0.38 s; my `policy_denied` is located + in my own environment's egress policy (Testimony only from here), and + my earlier HTTP-000 timeouts stay an inference about the same cause. + +- Fetched URL (form page): `https://jobs.ashbyhq.com/openai/3c67f712-697d-48d8-b05c-01be896e61da/application` + (HTTP 200, 51,408 bytes, 2026-10-02). +- Liveness: `https://api.ashbyhq.com/posting-api/job-board/openai` (HTTP + 200, 13,902,451 bytes, 2026-10-02) — **833 jobs**. Posting + `3c67f712-697d-48d8-b05c-01be896e61da` present, `isListed: true` + ("Software Engineer, Scaled Abuse"). Posting + `48993416-b5f5-4c3f-b7c8-b8ca7c2395e0` **present, `isListed: true`** + ("AI Support Engineer, Government - San Francisco, CA", + `publishedAt: 2026-08-31T21:38:54.505+00:00`) — the v0.1 "dead" reading + is corrected here and in the corrections log above. +- Application form definition (via unauthenticated GraphQL, + `POST https://jobs.ashbyhq.com/api/non-user-graphql?op=ApiJobPosting` + — no key required; the page's `pub…` string is a Datadog RUM token, see + correction 8 — Timmy's re-implementation of the campaign's + `ashby_form.py`, run 2026-10-01 and re-run from his host 2026-10-02, + first attempt, 1.1 s, against this same target): **17 fields, + 14 required.** Grade: `Documented` on two hosts, two days. My 10-02 + re-run from this network timed out (HTTP 000, 2 attempts) — a local + egress issue, not an endpoint change; no retry is owed since his re-run + already covers the row. Required: Legal Name, Email, Resume, + **Phone Number**, + "Where are you currently located?", "When can you start a new role?", + "Are you authorized to work in the country where the job is located?", + "Will you now or in the future require sponsorship for employment visa + status in this country?", "Are you able to work from our US office three + days per week?", "What percentage of time do you generally enjoy + spending coding?", "What technical domain do you prefer to work in and + have most expertise with?", "How many years of industry experience do + you have?", **Applicant Arbitration Agreement Acknowledgement**, and the + certification that the applicant has not withheld information. Optional: + Preferred Name, **LinkedIn**, Additional Information. My 2026-10-02 + re-run of the same call timed out from this network (HTTP 000, + 2 attempts) — not an endpoint change (`api.ashbyhq.com` responds fine); + field list stands as `Documented` from his fetch. +- Mandatory LinkedIn on Ashby/OpenAI: **no**. The fields that stop an + agent are the two acknowledgement/arbitration entries and the free-text + screening questions — not a code step. +- Anti-bot: reCAPTCHA configured at board level (`recaptchaPublicSiteKey`, + `recaptchaUniversalPublicSiteKey` in `window.__appData`; hidden + `.grecaptcha-badge` CSS; `/recaptcha/` iframe rule) — `verified`. +- Post-submit emailed-code question: still unobservable from outside on + every platform; that gap stands. + +## Lever — notes (2026-10-02) + +- **Liveness re-check 2026-10-03 (two-host, both Documented):** posting + API 200 / 23,441 bytes (`?mode=json`) — live; apply page 200 / + 1,945,666 bytes — byte-identical to the 10-01/10-02 fetches. Timmy's + 10-03 fetches matched both sizes exactly. + +- Fetched URL (form page): `https://jobs.lever.co/palantir/a92b55d0-1d36-4884-8e65-f456450b3a74/apply` + (HTTP 200, 1,945,666 bytes — byte-identical size to the 2026-10-01 + fetch). Posting API: `https://api.lever.co/v0/postings/palantir/a92b55d0-1d36-4884-8e65-f456450b3a74?mode=json` + (HTTP 200, 23,441 bytes) — live: "Senior Backend Software Engineer - + Application Development", London, United Kingdom (hybrid, GB), + `createdAt: 2026-04-06T14:20:18Z`. +- Core fields observed in static form HTML: Resume/CV ✱ (max 100 MB, with + resume auto-parse: "Couldn't auto-read resume. Analyzing resume..."), + Full name ✱, Email ✱, Current location ✱; Phone and Current company + present, not marked required. +- Links section: LinkedIn URL, GitHub URL, Portfolio URL — present with + **no required markers** (`` + has no `required` attribute and no asterisk on its label) → mandatory + LinkedIn URL: **no**. +- Required supplementary questions: Language Skill(s) checkboxes, work + authorization ("legally authorized?", "sponsorship?"), University (large + dropdown), "How did you hear about this opportunity?", UK Clearance + Confirmation ×2, custom questions (years of relevant experience, + backend-service experience description, favorite project, "Why do you + want to work at Palantir?"), AI Notetaker opt-in (Yes/No radio). +- Anti-bot: **hCaptcha** — `
`, loads + `https://js.hcaptcha.com/1/secure-api.js?host=jobs.lever.co` + (`hcaptchaSubmitBtn` ×3, `hcaptchaResponse` ×12 in page). Zero Google + reCAPTCHA script references; zero `
` elements + (the two `g-recaptcha` strings are a stylesheet class). A LinkedIn + autofill/login button exists in the form's CSS (`.linkedin-auth-button`) + — whether it triggers a LinkedIn OAuth gate is `unverified`. +- Emailed verification code after submit: not observed — `unverified`. +- Segmented code widget: not observed — `unverified`. +- Attestation/demographic: footer privacy notice (data kept up to 1 year) + plus optional "contact me about future job opportunities" consent + checkbox. EEO-survey CSS classes are present in the stylesheet, but no + rendered EEO questions were observed → `unverified` whether a + demographic step exists here. +- Rate limits / spam heuristics visible publicly: none beyond the + hCaptcha — `unverified`. + +## Niceboard (bitcoinerjobs.com) — notes (2026-10-02) + +- **Liveness re-check 2026-10-03 (two-host):** homepage 200 / 122,330 + bytes on three consecutive fetches (Timmy's host), sha256 + `71791fdc9bf4…` — was 122,310 on 10-02; 77 `{{` / 77 `}}` bindings + hold. Both dead job URLs still fall back to `/category/engineering` + 200 / 114,383. Sizes dated, never quoted bare (entry 12). + +- Board URL: `https://bitcoinerjobs.com/` (live — "The Bitcoin Job Board" + homepage renders). +- curl probe 2026-10-02 (all with explicit `-s -o /dev/null -w + '%{http_code} %{size_download}'`): default UA → **200 / 122,310**; + `-A "curl/8.5.0"` → **200 / 122,310**; `-A ""` (empty UA) → + **403 / 146 bytes**. No invocation returns 0 bytes; the v0.1 bot-filter + inference is withdrawn (correction 6). +- Verbatim job URLs tried, both re-checked 2026-10-02: + - `https://bitcoinerjobs.com/job/1705445-rust-software-engineer-bitcredit-protocol` + - `https://bitcoinerjobs.com/job/1965865-senior-software-engineer-aureo` + Both follow (`-L`) to `https://bitcoinerjobs.com/category/engineering` + ("Engineering Jobs") — the removed-job fallback. **Both dead, + confirmed** (v0.1's liveness reading holds; only the bot-filter claim + was wrong). +- The site is an Angular SPA: static HTML contains 77 unrendered + `{{ }}` bindings (corrected 2026-10-03 — v0.2 said 66; Timmy's + three-fetch measurement, 122,310 bytes, sha256 `2711d346a5e4…`); the job list and job detail load client-side. Live job + URLs therefore come from the client-side API. Board API endpoints are + gated — `GET /api/jobs` → 200 `{"success":false,"error":"validation"}`; + `GET /api/v1/jobs` → 401 `{"error":true,"reason":"invalid_key"}`; + the board's id is in the page as `board_id = "517"` (Timmy 2026-10-01; + not re-run 10-02). So the row can be filled from a keyed API or a + rendered pass; both are outside what a text fetch gives — the honest + form of the gap. +- Search-engine crawls (16–29 days old) show currently/recently live + engineering postings on this board (e.g., "Golang Engineer — Ark Labs", + "TypeScript Engineer — Ark Labs", "Software Engineer, Backend — + Strike", "Senior Platform Engineer, AI Systems — Strike"), but no + verbatim live job URLs were available and none were constructed. +- Form fields, mandatory LinkedIn URL, verification-code or code-widget + steps, anti-bot measures, attestation/demographic steps: all + `unverified` — no live job page could be confirmed, and the job board UI + needs JavaScript. + +## Workday — notes (2026-10-02) + +- **Liveness re-check 2026-10-03 (two-host, both Documented):** CXS JSON + 200 / 8,633 bytes — `jobPostingInfo` live, byte-identical to the 10-02 + fetch; `/apply` 406. +- **Taleo:** the item names "Workday/Taleo"; no Taleo board was observed + in this census — `no Taleo observation — unverified`. + +- Fetched URL: `https://unitytech.wd1.myworkdayjobs.com/Unity/job/Stratford-upon-Avon-United-Kingdom/Software-Engineer_JOBREQ-2616426` + (HTTP 200, 19,893 bytes on 2026-10-01; £42,900–£64,300 salary range in + the page). +- Public CXS JSON: `GET + https://unitytech.wd1.myworkdayjobs.com/wday/cxs/unitytech/Unity/job/Stratford-upon-Avon-United-Kingdom/Software-Engineer_JOBREQ-2616426` + with `Accept: application/json` → **HTTP 200, 8,633 bytes, + 2026-10-02**, containing `jobPostingInfo` (id + `3ff572fc77161001ac1bc1776f1d0000`). Posting **live**. +- `.../apply` variant → **HTTP 406 + `{"errorCode":"HTTP_406"}`** — direct token-less apply rejected. +- Split: posting data public, form definition behind a session — a dated + artifact for liveness, and a negative for the field-level questions. +- Which fields the form requires, whether a LinkedIn URL field is + mandatory, whether submission is followed by an emailed verification + code, any code widget, spam heuristics/rate limits, candidate attestation + or demographic steps: all `unverified`. +- Known structural expectation (unverified from this fetch): Workday apply + flows typically require candidate account creation before the + profile/resume form; could not be confirmed publicly here. + +--- + +## Gaps and follow-ups + +1. Ashby, Niceboard, and Workday form internals are entirely JS-gated in a + text fetch — a rendered-browser pass (real Chromium) is needed to answer + the field/LinkedIn/code questions for those three. Ashby's GraphQL + endpoint timed out from this network today; retry from a different + egress or re-pull from Timmy's host. +2. Post-submit behavior (emailed verification codes, segmented code + widgets) was not observed on ANY platform — none of the five showed a + code step; answering this needs a live-browser form walkthrough up to + (not past) submission. +3. Niceboard needs a fresh, live job URL from a JS-rendered board crawl + before its row can be filled in. +4. Rate limits and spam heuristics are not visible from the public side on + any platform; the hard anti-bot artifacts found are Lever's **hCaptcha** + (corrected from reCAPTCHA) and Ashby's **reCAPTCHA** board-level keys. +5. Greenhouse's `questions=true` API gives real `required` flags — but only + for the boards that expose it; and the mandatory-LinkedIn question must + be answered per-employer, not per-platform (Lighthouse optional vs + Cortex/Grafana mandatory on the same ATS).