feat: NVIDIA Sr DevOps application, drop cohort caps, fix Workday/decision-log bugs

Scout run 2026-09-04 (36 companies, 778 eligible) plus the NVIDIA package it
surfaced, and the tooling and policy fixes found along the way.

Application
- NVIDIA Senior DevOps Engineer, Zurich (JR2024256): submitted 2026-09-05.
  Evidence Fit 64/100 Stretch, hard gate FAIL x2, channel Weak. Sent on an
  explicit user override with the working model unresolved, so hybrid-vs-onsite
  is a live screening topic. 2pp resume + 1pp cover letter, both validators
  PASS, 0 boxes, 0 Tier 1 findings open.

Policy
- Drop the 7 Core / 2 Adjacent / 1 Stretch cohort caps. They had no derivation
  and were overridden whenever they bound, and the cohort was confounded: it
  tested fit class while holding channel constant at Weak across all six
  applications. Keep the recording, drop the rationing.
- Channel replaces the slot budget as the rationed variable: no application
  goes out cold when a named contact is published and reachable.
- Propagated through shared_ops, session_file_template, cohort_tracker
  (counts, never counts-against-a-target) and application_cohort.json.

Tool fixes
- fetch_workday emitted 404 URLs for every Workday company (NVIDIA, Novartis,
  Equinor): externalPath is site-relative and needs the locale + site prefix.
  6/6 short-form 404, 3/3 long-form 200. 773 dead links repaired across 42
  archived reports.
- find_decision_url silently de-linked decisions on two boards, which is why
  ruled-out roles kept resurfacing as undecided. RUAG rotates its UUID on
  repost; BIS migrated its vacancy URL scheme, orphaning 5 decisions including
  a live application. Fixed as a two-tier match, not a slug key -- slugs
  collide (two live RUAG reqs shared one).

Knowledge base
- claims.json: add Bash / shell scripting, the third canonical gap of this
  shape after Ansible and Linux administration.
- bundle_data_platform: BS-4 was framed as a delivered observability stack over
  what claims.json calls a proof of concept -- the defect the 2026-08-21 sweep
  was told to look for.
- CLAUDE.md and AGENTS.md: correct the RUAG Data Lakehouse shortlist claim,
  which the JD does not support and which both files still asserted.
- resume_template: comment-guard the missing babel/ngerman language block.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QFb8tTCig5r1KzkQiNXcYt
This commit is contained in:
dennisthiessenandClaude Opus 5 committed 2026-09-05 13:24:44 +02:00
1 parent 89af779bf3
commit a0ec2fedb5
18 files changed
+1250 -37

No files matched your search

@@ -0,0 +1,227 @@
# Critique — NVIDIA, Senior DevOps Engineer (Zurich, JR2024256)
Date: 2026-09-04 · Documents: `e2e_nvidia_sr_devops_resume.tex` (2pp, 13 bullets),
`e2e_nvidia_sr_devops_cover_letter.tex` (1pp, 279 body words) · No prior critique.
> Per `critique_framework.md`, fit, document quality and channel are scored separately and never
> collapsed into one number. **This package is not submit-ready on document quality alone** — the fit
> gate failed twice at Phase 0 and one of those failures is still unresolved.
---
## 1. Fit verdict and hard gates
| | |
|---|---|
| **Evidence Fit** | **64/100 — Stretch** (unchanged from Phase 0; documents do not move evidence) |
| **Hard gate** | **FAIL ×2** |
| **Channel** | **Weak** — cold portal application, the 7th consecutive one |
| **Cohort** | evidence-first-2026-01 at 6/10. Core 3/7 free; **Adjacent 2/2 and Stretch 1/1 both consumed** — no slot of the right class exists. Proceeding is an explicit user override, recorded as such |
**Gate failure 1 — a required qualification is a Gap.** *"Strong expertise in on-premises networking
and compute infrastructure."* Networking is 0 canonical. Not writable around, and correctly not
written around.
**Gate failure 2 — an unresolved practical constraint. STILL OPEN.** The JD is silent on hybrid vs
onsite; Thun→Zurich is ~1h50 each way. `critique_framework.md` §1 treats this as a NO-GO trigger, and
the Citadel precedent in `CLAUDE.md` says it **must be asked, not researched**. **Nothing should be
submitted until NVIDIA recruiting answers this.** It is the single highest-value open action on the
application, above every document fix below.
---
## 2. Document Quality — 82/100
| Dimension | Weight | Score | Note |
|---|---:|---:|---|
| Truth and provenance | 25 | **22** | Scope discipline is exemplary across all six risky objects. One unsupported token (Tier 1 #1) and one canonical instruction not followed (Tier 1 #2) |
| Information hierarchy | 20 | **17** | Employer/title/dates prominent and correct, promotions shown, positions intact across the page break. Costs a point for the headline/recency mismatch (Tier 2 #1) |
| Bullet evidence and impact | 20 | **15** | Specific, scoped, no invented metrics — but **zero quantified outcomes anywhere**, against a JD that asks for "proven ability to achieve or exceed" goals. Not fixable: every canonical claim is `metrics: unverified`. It still costs |
| Relevance and terminology | 15 | **11** | JD term coverage **19/38 = 50%**. Four honest wins available (Tier 2 #2) |
| Skills evidence | 10 | **8** | Every line traceable except the Ubuntu token |
| Mechanics and readability | 10 | **9** | Compiles clean, 0 over/underfull boxes, cadence validator passes, good length spread (18–36 words). One wording slip |
Truth/provenance is well above the 20/25 automatic-failure threshold.
---
## 3. Claim audit
| Claim | Canonical | Direct/Adjacent | Safe? | Fix |
|---|---|---|---|---|
| "over ten years" (summary) | Visible record Generali 2015-05 → today = 11y4m | Direct | **Yes** | — Correctly avoided the template's unsupported "12+ years" |
| "Ansible-driven Linux server automation" (summary) | `BS-6` | Direct | Yes, but **undated** | See Tier 2 #1 |
| "Integrated containerized ML inference into a continuously operating semiconductor fab" | `BS-1` | Direct | Yes | — |
| "owns business-critical pipeline components on call" | `SW-2` | Direct | Yes | — |
| **"Linux administration (Debian/Ubuntu)"** | `PP-3` = **Debian only**. Ubuntu: **0 canonical** | — | **NO** | **Tier 1 #1** |
| "security hardening" (Operations line) | `PP-3`; canonical note says hardening evidence *"leans on the personal side; say so"* | Adjacent | **Borderline** | **Tier 1 #2** |
| "Ansible including custom plugins" | `BS-6` credential plugin | Direct | Yes | — |
| "ELK … Grafana, Prometheus, Loki — proof-of-concept work" | `BS-4` | Direct | Yes | PoC scope preserved; `forbidden` "observability platform" avoided |
| "Migrated the Fulfillment and Product Analysis domains' … contributing to the wider migration programme" | `SW-1` | Direct | Yes | Scope-locked exactly as `forbidden` requires |
| "governed data products … inside Swisscom's company-wide Data Mesh" | `SW-7` | Direct | Yes | Builds *inside* the mesh; no ownership implied |
| "Security Champion for 2025/2026" | `SW-5` | Direct | Yes | Correct years, team role, not an award |
| "Linux server estate behind fab analytics and ML workloads" | `BS-6` | Direct | Yes | Not "the fab's infrastructure" or "the datacenter" |
| "self-hosted Debian server … around ten years" | `PP-3` | Direct | Yes | Labelled personal; header date now `Ongoing`, matching the self-reported quantity |
| Bosch/Swisscom promotion lines | `title_history` | Direct | Yes | — |
| Vizrt "Test Automation / DevOps Engineer" | `display_title` | Direct | Yes | Full display title retained deliberately |
| CL: every claim | `FC-1`,`BS-6`,`BS-1`,`SW-3`,`SW-2`,`PP-3`,`SW-1` | — | Yes | No claim in the letter is absent from the resume |
Validators: **resume PASS (0 warnings) · cover letter PASS (0 warnings).**
---
## 4. Tier 1 fixes — truth and fit
**#1 — `Ubuntu` is not canonical evidence. Remove it.**
`\skillline{Infrastructure and automation}` reads *"Linux administration (Debian/Ubuntu)"*. `claims.json`
has **Debian ×2, Ubuntu ×0**; `PP-3` is a Debian server. The reasoning that Debian→Ubuntu transfers
almost exactly is sound — but that belongs in an **interview answer**, not a skills line, which asserts
experience. The JD names "CentOS, Ubuntu, RedHat", which is exactly why the token slipped in.
**Fix:** `Linux administration (Debian)`. Self-inflicted during generation; caught here.
**#2 — Say that hardening is personal-side.**
`claims.json` note on Linux administration: *"Hardening and security configuration evidence leans on
the personal side; **say so** rather than implying an employer mandate."* The Operations skills line
lists *"security hardening"* beside on-call, SLO definition and component ownership — all employer
evidence — with no marker. `PP-3` is labelled a personal project on page 2, so it is traceable, but
the canonical file gives an explicit instruction that is not being followed.
**Fix:** `security hardening (personal server)` or move it onto the Monitoring/personal line.
*No other Tier 1 findings. No forbidden term appears anywhere: HPC, GPU, bare metal, switches,
QEMU/KVM, RHEL/CentOS, Groovy, Terraform, GitOps, GitHub Actions, Azure, LangChain, Capgemini,
"12+ years", "observability platform" — all absent, verified by sweep.*
---
## 5. Tier 2 improvements — presentation
**#1 — The headline advertises currency the evidence does not have.**
Headline: *"Staff Engineer | Linux, Ansible & Kubernetes | CI/CD and Infrastructure Automation"*.
Summary: *"Ansible-driven Linux server automation"*. Both undated. The employer evidence for Linux and
Ansible is **Feb 2020 – Dec 2022**, and the only current Linux practice is a personal project at the
foot of page 2. Nothing is false and the bullets are correctly dated — but the technical reviewer will
form an expectation from the headline and find it three years stale. **The cover letter now names this
explicitly, which is the right place for it.** Optional resume-side softening: reorder the headline to
lead with Kubernetes and CI/CD (both current) and let Ansible follow.
**#2 — Four honest ATS terms are missing and all four are writable.**
Coverage is 19/38. The absent terms split cleanly:
- **Correctly absent — never add:** HPC, bare metal, VMs, QEMU/KVM, virtualization, Groovy, GitHub.
These are the real gaps and adding them would be fabrication.
- **Writable from existing evidence:** **"configuration management"** (Q5a's exact phrase — `BS-6`
*is* configuration management; the resume says only "Ansible"), **"reliability"** (the JD's second
named focus; `SW-2` on-call and `BS-3` SLOs support it), **"observability"** (`BS-4`; the skills line
says only "Monitoring" — the word itself is not forbidden, only "observability platform"), and
**"orchestration"** (`BS-1`'s `allowed_verbs` include "orchestrated"; Kubernetes is an orchestrator
and the JD says "orchestrators like Kubernetes").
**#3 — Summary wording slip.** *"the automation and delivery layer that engineering and research teams
work on"* — the teams do not work *on* the delivery layer, they ship *through* it. In the most-read
sentence of the document. **Fix:** "rely on" or "ship through".
**#4 — Bullet 6 is at the density threshold.** 36 words, the longest in the document
(`resume_reference.md` §7 flags ~35+). It is also the single most JD-central bullet and its three-part
scope clause is doing real work. **Leave it** unless something else must be added to that position.
---
## 6. Reader sequence
- **Parser/ATS —** extracts cleanly; text order verified (employer → dates → title → location → bullets).
Ranking is the risk, not extraction: at 50% term coverage, with the misses concentrated in the
HPC / networking / virtualization cluster, a strict keyword screen down-ranks him. Tier 2 #2 lifts
this a few points honestly; it cannot fix the cluster that is genuinely absent.
- **Recruiter glance — Borderline.** The headline reads on-title for a DevOps role. The risk is two
inches below: the formal Swisscom title is *Staff Data, Analytics & AI Engineer*, which a
non-technical screener may read as "data person applying to infrastructure". This is the intended
positioning trade and it is defensible — the formal title must stay — but it is the 10-second risk.
- **Hiring manager — Maybe.** R3 (CI/CD for R&D teams) and R4 (automated testing into deployment
workflows) are answered with unusually direct evidence — Fraunhofer and Vizrt map almost verbatim.
R2 and R5 (networking, hardware, bare metal) are not answered at all, and the letter says so.
- **Technical reviewer — credible, and the letter helps.** Naming the networking gap pre-empts the
discovery. First challenge: *"Walk me through your on-prem networking."* Second: *"Ansible was three
years ago — what is current?"* Third: *"Which distributions?"* Prepared answers exist for all three
in the session file's Critique Context.
---
## 7. Competitive read
The obvious-fit candidate is a Linux/HPC systems engineer from CSCS, ETH/EPFL, a Swiss hosting or
colocation provider, or a hardware vendor — someone who has racked servers, configured switches and run
Slurm. **Their advantage is precisely the half he lacks, and it is named in a required line.**
**His real advantage** is not "also does Linux". It is a decade-long, five-employer CI/CD and automation
thread that a pure sysadmin usually lacks, Ansible depth beyond use (he wrote extensions), current
production Kubernetes, and `BS-1` — putting containerized inference into a fab that cannot stop. That
last one is the closest thing in his record to the operational discipline an AI-infrastructure site
needs, and it is genuinely uncommon.
**Do not over-value the bridge.** Debian→Ubuntu is close to free; RHEL/CentOS is a real unknown;
networking is not a bridge at all.
---
## 8. Cover letter assessment
**The letter earns its place.** Under `cl_reference.md`'s decision gate it qualifies on two counts:
a credible domain transition needs explaining (data/platform engineer → DevOps infrastructure), and
work authorization materially helps. **Deleting it would weaken the application** — it is the only
place the networking gap and the recency split can be stated in the candidate's own voice rather than
discovered by a reviewer.
- **Anti-patterns:** none. No generic opener, no credential dump, no copied resume bullet, no
press-release paraphrase. The gap paragraph is factual rather than apologetic — it states the limit
and what he does have, in two sentences.
- **Hooks — first-party verified.** The one hook used is NVIDIA's own live Zurich posting **JR2022878**
(*"building the next generation of scalable AI infrastructure … distributed training, real-time
inference, and communication efficiency across large systems"*), scraped directly 2026-09-04.
**A hook was dropped at verification:** the Phase 0 plan carried "Alps / Swiss AI Initiative with ETH
Zurich and EPFL", but the first-party NVIDIA newsroom release mentions **neither EPFL nor a Swiss AI
Initiative** — that framing came from secondary coverage. Corrected in the session file, and Alps was
omitted from the letter regardless as being about CSCS rather than NVIDIA Zurich.
- **Package cohesion:** every letter claim traces to a resume bullet. No new skill, metric, tool or
ownership claim. No contradictions.
- **Length:** 279 body words, inside the 250–300 industry target. One page, well filled.
---
## 9. Mechanical verification
| Check | Result |
|---|---|
| Canonical validator — resume | **PASS, 0 warnings** |
| Canonical validator — cover letter | **PASS, 0 warnings** |
| Compile | Clean, two passes, both documents |
| Over/underfull boxes | **0** |
| Page count | Resume 2, letter 1 — matches `config.md` |
| Text extraction order | Verified: heading → employer → dates → title → location → bullets |
| Visual inspection | Both resume pages and the letter inspected at normal size. No orphans, no clipping, no header wrapping. Positions intact across the page break |
| Cadence (§7a) | PASS after remediation — the first build hit **10/12 bullets (83%)**, the SBB failure mode; five sentences reshaped without touching a claim, scope or verb |
| Bullet length spread | 18–36 words. Good variation within and across positions |
| Email | `dennis@thiessen.io` in both, matches `config.md` |
| Forbidden-term sweep | Clean — 22 terms checked, 0 hits |
| Stale artifacts | None. No superseded PDF beside either deliverable |
**Tool caveat — `char_count.py` output for this document is unreliable and should be ignored.** Its
parser takes everything between `\item` markers, so it absorbs following section markup *and LaTeX
comments* into the preceding bullet: it reported bullet 13 as "90 words / 3 clauses" when the real
bullet is 23 words. Every "potentially dense" flag it raised is an artifact. The provenance comments in
this `.tex` (recording why Ubuntu, the PP-3 date and the thesis grade were handled as they were) make
the effect worse, but they are worth keeping — the tool should be fixed instead. Bullet metrics in this
critique were measured independently.
---
## 10. Verdict
**Document Quality 82/100 · Evidence Fit 64/100 (Stretch) · Channel Weak · Hard gate FAIL ×2.**
The documents are honest, well-scoped and specific, and the two Tier 1 fixes are small. **They are not
what is holding this application.** What holds it is the unresolved working-model question, which is a
NO-GO trigger under the project's own framework and cannot be answered by research.
**Order of operations:** ask NVIDIA recruiting about hybrid vs onsite → if the answer is compatible,
apply Tier 1 #1 and #2 and optionally Tier 2 #2 and #3 via `/edit-resume` → then submit. If the seat is
5-day onsite, the correct outcome is a documented NO-GO on the Bern/Thun constraint, and the package
is shelved intact for a future NVIDIA req.