Apple (the big one)
- The location=switzerland-CHE slug stopped resolving; Apple silently applied
a US location, so every run from at least 2026-08-31 returned the same 21
US/intern cards and 0 Swiss roles. Now location code CHEC (from
/api/v1/refData/postlocation), result list item as the card (location
readable), pagination, settle delay, longer wait and per-element timeout.
Verified twice: 24 Swiss roles each run.
BIS
- bis.org went behind a Cloudflare challenge (403 even headless). Moved to the
Workday tenant bis.wd3.myworkdayjobs.com/External, which also carries the
office. Host alias + lower-cased jr-id keep all 9 bis.org#jr decisions
linked (applied jr100498 included).
NAV
- Search API 429s after ~9 requests and stays blocked for hours: discovery
capped at 8 searches (4s pacing). Posting text now comes from NAV's official
third-party feed (pam-stilling-feed, public rotating token), with a small,
slow website-page fallback for ads the feed lacks (~2/3). Verified live on
15 real ads; fallback path tested on fixtures.
Location filter
- EMEA leak fixed: a country allowlist without CH/DK plus a trailing region
tag is no longer Europe-remote (27 rows). Swiss/Danish segments in
multi-location strings are evaluated per segment. Regression over all
2026-10-22 rows: only the fenced rows changed.
Reputation
- Every board now has a dated verdict; kununu added as a primary source next
to Glassdoor (the one with more reviews decides; user tip). Second-source
scores now count (a low one means avoid). AVOID: BIS (Glassdoor 2.9),
BFH (kununu 3.3), Kdo Cy (federal administration kununu 3.4).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Norway search (user request 2026-10-21/22: Trondheim, Bergen or similar, not Oslo)
- New location policy norway_no_oslo: keeps a role if any Norwegian location
is outside the Oslo area. Equinor and Telenor move to it.
- New `nav` adapter for the NAV national register (arbeidsplassen.nav.no):
keyword queries on a fixed request budget, paced; on HTTP 429 it stops and
returns a PARTIAL run with a warning instead of failing. Full-ad text checks
are cached in state/nav_detail_cache.json (ignored). Tested against
fixtures only: the live API was rate-limiting during the build.
- Dedicated boards where NAV was measured thin (2026-10-22: Nordic 0, DNV 2,
Equinor 2 vs ~10, NATO 0): Nordic Semiconductor (teamtailor custom domain),
DNV (new `algolia_jobs` adapter; app id/key/index read from the page each
run), Arm Trondheim (new `radancy` adapter), Microsoft Norway (pcsx).
Verified live: 7 / 6 / 7 / 6 roles outside Oslo.
- NAV rows that duplicate a dedicated board's posting are dropped
(employer alias + normalized title).
Language / citizenship check
- classify_language_requirement reads the requirement SENTENCE, not the
posting language: "norsk og/eller engelsk" is English OK, "kommunisere
godt ... på norsk og engelsk" is Norwegian required. Only an explicit
Norwegian requirement or Norwegian-citizenship requirement filters a role;
clearance is noted, never a gate. Runs on full ad text (NAV detail page,
untruncated Teamtailor/PCSX descriptions). Telenor Lead Platform Engineer
now reads NORWEGIAN REQUIRED (it read UNCLEAR on truncated text).
- Norwegian title keywords added (they all scored 0 and were never checked).
Employer reputation (user requirement 2026-10-22)
- state/employer_reputation.json (now tracked): dated Glassdoor lookups with
sources and the approved thresholds (good >= 3.8 on >= 50 reviews; ok
3.5-3.79 or thin-but-backed; avoid < 3.5; Vizrt excluded). Every report
row shows the verdict; unlooked-up employers show UNCHECKED.
Report
- Sections per region: Switzerland, Norway, Europe-remote / Denmark (user
preference); `--region=ch|no` runs one region only.
Fixes
- Microsoft links: apply.careers.microsoft.com<positionUrl>?jobId=<id>
with a host alias so all 7 logged Microsoft decisions still resolve; the
old jobs.careers.microsoft.com form redirected to a generic search page.
PCSX calls retry on 429.
CLAUDE.md corrections log: design/architecture gap (2026-10-21) and the
Microsoft link fix; the EMEA-suffix location leak stays OPEN.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>