career lane: rename census to the Q16 item's path (career-lane/ats-gate-census.md) per reply 24 §3.8(a) decision

This commit is contained in:
zephyrus-sparkborn committed 2026-10-03 13:11:07 +00:00
1 parent 3479e44a23
commit 483af8c8c6
1 file changed
+476
+476
View File
@@ -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**: `<div id="h-captcha" class="h-captcha"
data-sitekey="e33f87f8-88ec-4e1a-9a13-df9bbb1d8120">`, 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** (`<input type="text" name="urls[LinkedIn]">`
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** — `<div id="h-captcha" class="h-captcha"
data-sitekey="e33f87f8-88ec-4e1a-9a13-df9bbb1d8120">`, 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 `<div class="g-recaptcha">` 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).