RUAG C5I - AI Engineer C5I (Thun, app ID 18027): SUBMITTED 2026-08-27.
Evidence Fit 74/100, fit class Stretch, title-capability hard gate FAIL
(R1 build/operate the AI-LLM platform and R2 in-house LLM/retrieval are
Adjacent, not Direct) - all knowingly accepted under the user's explicit
Phase 0 override. Consumes the cohort's sole Stretch slot: cohort is now
6/10, Stretch 1/1.
Critique ran twice. Round 1 scored the documents 85/100 and raised three
Tier 1 items; Round 2, after the fixes, scores 93/100 with truth and
provenance 24/25 and zero Tier 1 findings. Evidence Fit did not move and
was not allowed to: PP-3 is a personal project and cannot convert an
Adjacent title-capability into a Direct one.
Documents (.tex is the deliverable; PDFs are gitignored):
- resume 2pp/13 bullets, letter 1pp/295 words, both validators PASS
- headline is now the canonical title "Staff Data, Analytics & AI
Engineer", which puts the req's own word above the fold
- PP-3 added as a Projekte section - the only current Linux/hardening
evidence, since BS-6 ended Dec 2022
- the letter names the AI-platform gap in one sentence, then connects
SW-5 to C5I's stated DevSecOps model
- "governte" -> "governance-konforme"; JD term coverage 18/22 -> 22/22
claimable, with all six gap terms still correctly absent
Two defects found and fixed that the first critique missed:
- the resume never loaded babel, so a German document was hyphenated
with English patterns (Hal-bleiterfertigung, Tran-skription). Fixed
with babel[ngerman] plus a Transkription exception; this also cleared
an overfull box. Check this on every future German package -
resume_template.tex likely has the same omission.
- IBM AI Engineering had no primary-source record. Certificate read
directly (IBM via Coursera, 4 Jun 2020, verify 3ZBZFVAL6A34), recorded
as entry #8; it also proves PyTorch, now evidence: certification.
Also included: the submitted Kdo Cy DevOps Engineer III package, the
Capgemini omit rule promoted into config.md, BW-1 canonicalized in
experience_bundeswehr.md, and a scout.py comment correcting the
telenorgroup slug from "near-empty" to a claimed board serving stale
phantom listings that DEMO_TITLES would not catch.
Compensation, PSP/project eligibility and role level were never resolved
before sending and are now live screening topics.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JMcHCsTKWvVzqyLChF5ckk
Boards rewrite their own URLs between runs, so a decision recorded under one
URL was lost the next time the same req appeared. Amazon truncates the job
slug to a fixed width and that width changed, which silently resurfaced the
already-skipped Principal Delivery Consultant req at score 7 in the 08-21 run.
Adds _decision_key(): "<host>#<req-id>" via per-board ID patterns, falling
back to a normalized path. Host-scoping is deliberate — a wrong ID match can
never mark a role decided at a different company. Also collapses genuine
duplicates: Workday's /apply suffix, PostFinance's per-locale URLs, Apple's
?team= and /locationPicker variants, the same NVIDIA req under two locations.
The log file stays URL-keyed (it is hand-edited and the URL is the readable
part); lookups go through index_decisions(). --decide now updates an existing
entry when the job is already logged under a drifted URL instead of adding a
second row.
Verified against all 955 URLs in the decision log plus the 2026-08-21 report:
4 groups collapse, each inspected and correct, no false merges.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WpMtWFtYkGkjSMShuTgXiB
Probed CERN, Swiss Post, NATO NCIA and SIX Group. Two actionable results:
- CERN: SmartRecruiters board "CERN", 66 live Geneva postings with real
engineering (Deep Learning Developer, ML Engineer NGT, Full-stack SWE, Data
Storage R&D Engineer). Added — the adapter already existed. Two standing
caveats recorded in the entry: Geneva is ~1h50 from Bern so a 2-3 day hybrid
is not viable without relocation, and CERN grades sit below the 180k bar.
- NATO NCIA: nato.int is Cloudflare-blocked to headless browsers. Moved to
MANUAL_CHECK beside Oracle, with a note that NCIA is a separate pipeline from
the JWC Stavanger reqs the `nato` adapter returns.
Not added, documented instead:
- Swiss Post: real board is job.post.ch (SuccessFactors CSB), scrapable via
a[href*='/job/']. The only tech role on page 1 was served from the PostFinance
sub-board, which is already covered. Paginated, so this is page-1 evidence
only, not a whole-board verdict.
- SIX Group: SAPUI5 SPA backed by a legacy DWR RPC endpoint
(careerJobSearchControllerProxy.getInitialJobSearchData.dwr). Scrapable in
principle, brittle in practice; job rows did not render into readable text.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Pipeline:
- SDU PhD: closed, not proceeding. Prof. Jørgensen never replied to the
2026-08-02 enquiry; user dismissed it two days before the 2026-08-20 deadline.
- Google FDE III GTM: closed, not proceeding after two Google rejections. The
bar for a third attempt is now a very strong fit; this was Adjacent with an
agent-orchestration gap. Frees the Adjacent cohort slot (back to 1/2).
JD triage — 5 pulled and read, 1 survives:
- SHORTLIST AWS Senior FDE Zurich: all four basic quals pass and AI/agentic is
preferred-only, unlike the Google Senior Staff FDE where vector DB + RAG were
minimum quals. AWS is the evidenced cloud; JD names Kiro, which he uses.
- SKIP AWS ProServe Bern (clinical pharma domain gate), AWS Principal Delivery
Consultant (8+ yrs architecture leadership + VP+ exec comms), GitLab FDE EMEA
(Ruby/Go hard gate), MS 200044133 (title says FDE Data Scientist, quals are
BGP/MPLS/SD-WAN network engineering — mislabelled req).
Roster:
- Dropped Louis Dreyfus: 300 roles, all Brazil/India/Bulgaria ops, zero Swiss.
- Kept MET Group: its "0 eligible" was a filter artifact; exclusion mode reveals
real Baar/Zug commodity-trading roles.
- Kept Equinor/Telenor/NATO. Memory corrected: the Norway lane is selective, not
closed — the user still wants very good Norwegian roles.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Scraper fixes:
- Roche: new fetch_phenom adapter (Phenom refineSearch). The old playwright scrape
of ?locationsearch=Switzerland harvested recommendation-widget cards (Shanghai,
Kyiv, Bogota) while the page reported no-results. 0 -> 88 CH-eligible roles.
- Apple: dropped default_location "Switzerland", which relabelled US "Various
Locations" postings as Swiss (84 phantom CH rows over 4 runs). Now honestly 0.
- Meta: NOT broken — metacareers reports "1 Items" for Zurich. Comment added so it
is not "fixed" again.
New boards:
- Amazon/AWS (fetch_amazon): 32 CH roles incl. a Zurich AWS FDE req and a Bern
ProServe Cloud Architect. AWS is the evidenced cloud; claims.json forbids GCP.
- Axpo (teamtailor via base_url + pagination): 461 roles, opens the energy lane.
Locations read from schema.org jobLocation with ISO alpha-2 expanded, so
Madrid/Milan/Warsaw roles are not marked Swiss. Telenor benefits too.
Title filtering now has two explicit modes. Inclusion allowlists fail closed and
hide unanticipated good-fit roles, so they are now used only where volume forces
it (>~200 roles). Everything else uses the shared, board-agnostic
NOISE_TITLE_EXCLUDE, which fails open and leaves the final call to the scorer and
the reviewer. Palantir stays unfiltered per its existing documented rationale.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The board never carried Coinbase's own roles — only Getro portfolio companies.
Across ~3 months it surfaced 3 distinct CH-eligible roles, all from Ashby
(recruiting software, ruled out 2026-07-28) and all decided "skip". Since the
Ashby exclusion it has returned 0 jobs on every run, surfacing a false error
line in each report.
Entry replaced with a "Dropped:" note per the file's convention. fetch_getro is
retained (no caller) since it generalises to any Getro collection id.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The "dbtlabsinc" Greenhouse board started returning 404, silently dropping
a target company from every scan. getdbt.com/careers now redirects to a page
serving Fivetran's Greenhouse listings (gh_jid links) — the two companies
merged, so the roles live on board "fivetran" (239 jobs, 10 title matches).
Renamed the entry id dbtlabs -> fivetran and cleared the stale seen-state key.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Aker BP ASA — Data Product Architect (FINN 469067315): archive the finalized
resume/CL sources, JD, session and critique. Submitted 2026-07-30 ahead of the
2026-08-02 deadline; logged as applied in the scout decision log and marked
SUBMITTED in Active Sessions.
KB: record Atlassian Compass as Swisscom's metadata/catalogue platform for data
products and lineage (user-confirmed 2026-07-29). Practitioner use only —
claims.json forbids claiming administration, rollout or ownership, and it is
explicitly not a substitute claim for Purview, Collibra or Alation.
Also: close out the Google Business Home session (no interview), extend the job
scout, and allow the job-board domains used during the Aker BP research.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Tighten eligibility to CH/DK/Europe-remote (Equinor Norway-only, NATO DK+NO), add Taleo adapter, parallel API fetches, atomic state writes, and empty-board warnings. Log NATO AI Engineer as applied and Architect as skip.
Equinor (Workday) and BFH (Bern, playwright) wired up as new sources; artificial
intelligence/analytics-engineer keywords added so int'l-org listings (BIS) stop scoring
as noise. certifi-backed SSL context works around Workday certs failing verification
against a stale Windows root store.
location_matches() previously treated "remote + any single named EU country" as
CH-eligible, which let single-country residency-locked listings (e.g. Databricks'
"Remote - United Kingdom") pass as if they were open EU-wide. Now requires either a
pan-regional keyword (Europe/EMEA/Global/Worldwide) or 2+ distinct countries named.
Denmark is carved out as its own always-on relocation category (on-site or remote,
any company), replacing the previous Databricks-only opt-in.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds positive keywords (forward deployed, field engineer, resident
architect/engineer, customer engineer) and title-filter entries so
vendor deploy-to-customer roles surface — the lane matched to
user_international_mobility (intl scope from Bern, travel-OK, no
relocation). Bare "resident" stays title-filter-only to avoid
re-opening the pre-sales-SA overscoring trap.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Track per-job decisions across runs so we don't re-evaluate roles.
- state/decisions.json (keyed by URL: company/title/decision/note/date), now
git-tracked while seen_jobs.json stays local
- --decide "<url>" <status> [note] records a decision; --hide-decided gives an
undecided-only view; report tags each role inline with its decision
- usage docstring updated
- seed 18 decisions (9 shortlist, 7 skip, 1 paused, 1 maybe); flags Google Staff
FDE GenAI as the paused prior session
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add positive keywords for the core DevOps/data-platform/cloud lane and
technical-architect titles (cloud/data/platform architect) that previously
scored 0 and surfaced only via the generic "senior" term. Rebalances rankings
so hands-on engineering roles aren't buried under pre-sales "Solutions
Architect" + crypto keyword stacking.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Two scoring bugs inflated the rankings:
- Substring matching: 'rag' matched sto[rag]e / tet[rag]on, 'intern'
matched inte[rnal], 'lead' matched [lead]ership. Roche's staff
restaurant and Cisco Tetragon roles scored as fits. Now keywords must
not be flanked by alphanumerics (c#/.net/c++ keep matching).
- Body boilerplate: every Kraken post mentions crypto/blockchain/trading,
so sales/PM/design roles scored as high as engineering ones. Title
matches now score full weight, body-only matches half (min 1);
negatives still count fully anywhere.
Strong-fit count drops 13 -> 5; the bogus 'intern' negatives and rag
false positives are gone. Shared _kw_in() also backs the title filter.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Dennis is interested in trading roles (energy/finance/crypto), but the
scorer had no terms for them, so trading-tech roles scored 0 and got
buried. Add a trading/quant cluster (trading, trader, quant, market
data, low-latency, FIX protocol, brokerage, commodity, execution) plus
singular "solution architect" and adjacent stack (C#, .NET).
Bitcoin Suisse's Solution Architect Trading now scores 4 (medium) on
title alone, up from 0.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Bitcoin Suisse's careers page is a JS-rendered Next.js SPA, but the
underlying onlyfy.jobs ATS exposes a plain HTML job list at
candidate/job/ajax_list (title + location per card). Add an onlyfy
adapter that parses it — no headless browser needed. Surfaces the 3
current Zug roles correctly (CH filter + pre-dedup location filtering
keep the Swiss posting over its Bratislava/Copenhagen cross-posts).
MANUAL_CHECK is now empty (all 22 target companies automated), so the
report's manual-check section is suppressed when the list is empty.
Coverage notes updated.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AMINA Bank rates poorly on Glassdoor and isn't worth tracking. Remove
its manual-check entry, leaving Bitcoin Suisse as the only manual source.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Coinbase cut ~14% of staff and is not actively hiring; remove its
manual-check entry. The getro Coinbase Ventures source covers portfolio
companies only, not Coinbase itself, so Coinbase is now off the radar
until they reopen. Now 2 manual sources (AMINA, Bitcoin Suisse).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add a getro adapter (POST JSON search API) and wire up the Coinbase
Ventures portfolio talent network (collection 1625), CH + eng-title
filtered. Note this covers portfolio companies (Ashby, Notion, VALR,
World, ...), not Coinbase itself, which doesn't list on its Ventures
board — Coinbase-the-employer stays in MANUAL_CHECK.
Also clean up stale comments: drop Sonova (MedTech, off-thesis, dead
scrape) from MANUAL_CHECK, remove the dangling BIS comment now that
BIS is automated via rss, and refresh the adapter-coverage notes and
module docstring to the current 21-automated / 3-manual state.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Generic RSS/RDF feed parser (handles RSS 1.0 namespaced items + RSS 2.0)
- BIS (Bank for International Settlements, Basel) promoted from manual-check
to an automated source via its vacancies RSS feed — commutable from Bern,
salary net of Swiss tax. Scout now 20 automated + 4 manual-check.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>