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:
1 parent
89af779bf3
commit
a0ec2fedb5
18 files changed
+1250
-37
No files matched your search
@@ -40,7 +40,15 @@
|
||||
- "AWS IaC (CloudFormation)" — infrastructure-as-code signal
|
||||
- "AWS migration" — hands-on cloud platform experience
|
||||
- Security Champion is not a default positioning theme; use the 2025/2026 team role only when the JD explicitly requires security exposure
|
||||
- "ELK + Grafana + Prometheus observability stack"
|
||||
- "ELK + Grafana + Prometheus monitoring" — **never** "delivered/built the observability stack" or
|
||||
"full monitoring suite": `claims.json` BS-4 is a **proof of concept** and forbids "built the
|
||||
observability platform" / "enterprise observability platform". Carry the PoC scope into any wording.
|
||||
|
||||
> **Scope warning (corrected 2026-09-04).** The S3 row for BS-4 previously read "*Designed and
|
||||
> delivered observability stack … full monitoring suite for manufacturing infrastructure*" and was
|
||||
> labelled "Full observability stack implementation" — a delivered-capability claim over a PoC, and the
|
||||
> same defect the 2026-08-21 log entry found in `bundle_data_engineer.md` §S5. That entry said to check
|
||||
> the other four bundles; this is the one that had it. See CLAUDE.md → Scope Discipline.
|
||||
|
||||
**Tone:** Infrastructure-minded engineer who thinks about reliability, observability, and security — not just data throughput. Platform thinking embedded in data work.
|
||||
|
||||
@@ -59,7 +67,7 @@
|
||||
| SW-1 | AWS migration | "Migrated pipelines in his owned domains from legacy Teradata/Oracle processing onto Swisscom's AWS platform (Glue, Athena/Iceberg, Redshift, Airflow, CloudFormation)" | Scoped migration delivery plus AWS breadth |
|
||||
| SW-2 | Component Owner | "Owned Fulfillment ETL pipelines (Oracle/Kafka → Teradata) — platform reliability, Data Governance compliance, 2nd/3rd-level support and on-call duty" | Platform SLA + on-call = reliability engineer signal |
|
||||
| BS-1 | ML inference | "Containerized and orchestrated ML inference (Docker, K8s, Ansible) into 24/7 semiconductor production — zero-downtime constrained deployment" | Production-grade containerization under hardest constraints |
|
||||
| BS-4 | ELK PoC | "Designed and delivered observability stack: ELK + Kafka, Grafana dashboards, Prometheus metrics, Loki log aggregation — full monitoring suite for manufacturing infrastructure" | Full observability stack implementation |
|
||||
| BS-4 | ELK PoC | "Built an anomaly-detection **proof of concept** on ELK + Kafka (Docker) with Grafana, Prometheus and Loki monitoring, validating centralized logging and alerting for 24/7 semiconductor production" | PoC-scoped observability breadth — **the PoC framing is mandatory, not optional** |
|
||||
| SW-5 | Security Champion | "2025/2026 team Security Champion; include only if the JD explicitly requires security or DevSecOps exposure" | Secondary team-role evidence, not ownership or certification |
|
||||
| BS-2 | Data services | "Built multi-language data services (Python/Java/C#) over OracleDB and Hadoop/ImpalaSQL — platform-layer data access for semiconductor analysis teams" | Enterprise DB + Hadoop infrastructure |
|
||||
| BS-3 | App Owner | "Application Owner for semiconductor analytics platform — SLOs, reliability, vendor management, on-call coverage" | Platform SLA ownership |
|
||||
|
||||
@@ -563,6 +563,12 @@
|
||||
"output": "allowed",
|
||||
"note": "User-confirmed 2026-08-27 and previously ABSENT from claims.json entirely. Professional: at Bosch (2020-2022) Linux servers carried everything - ML platform, Docker hosts, backend services, Ansible control - and he administered and automated them (see BS-6). Personal and current: a self-hosted Debian server he has run and hardened for ~10 years (see PP-3). Hardening and security configuration evidence leans on the personal side; say so rather than implying an employer mandate. Does NOT license claiming datacenter/physical infrastructure work, which remains a genuine gap."
|
||||
},
|
||||
{
|
||||
"name": "Bash / shell scripting",
|
||||
"evidence": "production-historical-and-personal-current",
|
||||
"output": "allowed",
|
||||
"note": "User-confirmed 2026-09-05 and previously ABSENT from claims.json entirely - the third gap of this shape after Ansible and Linux administration (both 2026-08-27). Evidence basis is the same as Linux administration: professional at Bosch 2020-2022 administering and automating the Linux server estate and the Ansible control path (BS-6), and personal and current on the self-hosted Debian server run for ~10 years (PP-3). Scope is ordinary operational shell work - scripting, automation glue and system administration. Does NOT license Groovy, which stays unverified and forbidden, and does NOT license any claim of systems-programming or kernel-level work."
|
||||
},
|
||||
{
|
||||
"name": "Docker",
|
||||
"evidence": "production-current-and-historical",
|
||||
|
||||
@@ -24,11 +24,12 @@ def save(data: dict) -> None:
|
||||
|
||||
def summary(data: dict) -> None:
|
||||
applications = data["applications"]
|
||||
print(f"Cohort: {data['cohort_id']} ({len(applications)}/10 applications)")
|
||||
# Slot caps were dropped 2026-09-05 (application_strategy.md). This is a record, not a
|
||||
# budget: report counts, never counts-against-a-target, so nothing reads as a remaining slot.
|
||||
print(f"Application record: {data['cohort_id']} ({len(applications)} applications)")
|
||||
for fit_class in FIT_CLASSES:
|
||||
count = sum(item["fit_class"] == fit_class for item in applications)
|
||||
target = data["target_mix"][fit_class]
|
||||
print(f" {fit_class}: {count}/{target}")
|
||||
print(f" {fit_class}: {count}")
|
||||
for channel in CHANNELS:
|
||||
count = sum(item["channel"] == channel for item in applications)
|
||||
print(f" channel {channel}: {count}")
|
||||
|
||||
@@ -27,19 +27,56 @@ Before generating a resume, complete Evidence Fit from `critique_framework.md`.
|
||||
|
||||
Do not spend a full resume/cover-letter cycle on a no-go role. Record the decision and move on.
|
||||
|
||||
## Controlled Ten-Application Cohort
|
||||
## Application Record (no quotas)
|
||||
|
||||
The next diagnostic cohort uses:
|
||||
**Policy change, 2026-09-05, user decision: the 7 Core / 2 Adjacent / 1 Stretch caps are DROPPED.**
|
||||
|
||||
- 7 Core applications.
|
||||
- 2 Adjacent applications.
|
||||
- 1 Stretch application maximum.
|
||||
The caps were arbitrary -- no derivation existed for those numbers -- and they were routed around
|
||||
whenever they bound (RUAG AI Engineer went in at Evidence Fit 74 with a hard-gate FAIL; Citadel was
|
||||
recorded Adjacent when the strict reading said Stretch). A rule that is overridden whenever it binds
|
||||
governs nothing and only adds friction.
|
||||
|
||||
Track fit class, hard gates, channel, application date, stage and outcome. Evaluate the cohort only after ten applications or a meaningful screen/interview result; do not infer profile quality from a few high-variance FAANG outcomes.
|
||||
The cohort was also a confounded experiment. It was designed to test **fit class**, but the variable
|
||||
it silently held constant was **channel**: all six applications were Weak/cold. It therefore could not
|
||||
distinguish "Stretch does not convert" from "cold does not convert", and the results point away from
|
||||
fit class anyway -- the highest-scoring package in the log (Snowflake, ~86) drew no reply in 80 days,
|
||||
while the one interview (SBB) came from a cold Core submit whose resume was *missing* the three ATS
|
||||
literals the session had flagged as risky.
|
||||
|
||||
**What is kept: the recording, not the rationing.** Every application still records fit class, hard
|
||||
gate, channel, date, stage and outcome. That record is what makes patterns visible instead of
|
||||
re-derived, and it produced every useful finding to date. `application_cohort.json` continues as a
|
||||
durable log; `cohort_tracker.py summary` remains a read-only view. There is no slot to consume and no
|
||||
application is blocked for lack of one.
|
||||
|
||||
**Fit class is now a preparation signal, not a spend limit.** An Evidence Fit of 64 does not mean
|
||||
"do not apply" -- it means know which two questions you will be asked and have honest answers ready.
|
||||
Hard gates and NO-GO triggers are unchanged: a required Gap or an unresolved practical constraint is
|
||||
still a real finding that must be surfaced before the user decides.
|
||||
|
||||
### Real constraints that survive independently of any quota
|
||||
|
||||
These are not cohort discipline and must not be dropped with it:
|
||||
|
||||
- **Google: 3 applications per rolling 30 days**, and a 90-day wait before reapplying to the *same*
|
||||
role. An external, enforced limit.
|
||||
- **Do not stack a second cold application on one organisation while the first is pending** -- a
|
||||
judgment call, made deliberately before (Snowflake Metrics was paused for exactly this).
|
||||
- **Each package costs real hours.** Volume is limited by effort, not by policy.
|
||||
|
||||
## Channel Strategy
|
||||
|
||||
For every Core application, attempt at least one warm action before or immediately after applying:
|
||||
**Channel is the rationed variable, replacing the old slot budget** (2026-09-05). It is the constraint
|
||||
with a plausible effect and an untested one: the record stands at **six consecutive cold submits, one
|
||||
interview**, with zero Strong or Moderate channels ever attempted.
|
||||
|
||||
**Rule: no application goes out cold when a named contact is published and reachable.**
|
||||
|
||||
This has been available and unused repeatedly -- Marco Heinzen at RUAG (published direct line), Andri
|
||||
Wienandts at SBB (published number, and it still converted), Per Olav Marthinsen at Aker BP. Making
|
||||
contact costs one phone call or one short email and is the cheapest experiment left.
|
||||
|
||||
For every application, attempt at least one warm action before or immediately after applying:
|
||||
|
||||
- credible internal referral;
|
||||
- targeted note to a relevant recruiter;
|
||||
@@ -47,6 +84,7 @@ For every Core application, attempt at least one warm action before or immediate
|
||||
- former colleague/customer/vendor connection who can establish work quality.
|
||||
|
||||
Record the channel as Strong, Moderate or Weak. Tailoring alone does not upgrade a cold channel.
|
||||
When no contact is published anywhere, a cold submit is fine -- record it as Weak and move on.
|
||||
|
||||
## Resume Strategy
|
||||
|
||||
@@ -63,10 +101,10 @@ Apply the decision gate in `cl_reference.md`. A letter is not a default package
|
||||
|
||||
## Feedback Loop
|
||||
|
||||
After the ten-application cohort, compare:
|
||||
Review the record whenever a meaningful screen or interview result lands, and compare:
|
||||
|
||||
- Warm vs cold progression -- **the primary question now, and still unanswered.**
|
||||
- Core vs Adjacent/Stretch progression.
|
||||
- Warm vs cold progression.
|
||||
- Recruiter rejection vs hiring-manager rejection.
|
||||
- Tool/domain patterns among successful and unsuccessful roles.
|
||||
- Whether resume changes affected outcomes.
|
||||
|
||||
@@ -18,7 +18,7 @@ Every JD gets `output/<Folder>/session_<name>.md`.
|
||||
- Hard gate: PASS / FAIL — [reason]
|
||||
- Channel Strength: Strong / Moderate / Weak
|
||||
- Channel plan: [referral/recruiter/hiring-team/cold]
|
||||
- Cohort slot: Core [n]/7, Adjacent [n]/2, Stretch [n]/1
|
||||
- Named contact published? YES/NO -- [who, and whether contacted] (no slot quotas; see application_strategy.md)
|
||||
- Decision: PROCEED / HOLD / NO-GO
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -28,7 +28,7 @@ Read `resume_builder/reference/application_strategy.md` and `critique_framework.
|
||||
|
||||
- Core: proceed.
|
||||
- Adjacent: proceed selectively and state the serious gap.
|
||||
- Stretch: confirm cohort capacity and user intent before full generation.
|
||||
- Stretch: confirm user intent before full generation and state the gap plainly. There is no cohort capacity to check -- the slot caps were dropped 2026-09-05 (`application_strategy.md`).
|
||||
- No-go: record the decision; do not generate a package unless the user explicitly overrides after seeing the gate.
|
||||
|
||||
## Audience and Cover-Letter Decisions
|
||||
|
||||
@@ -6,6 +6,13 @@
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{lmodern}
|
||||
% LANGUAGE — this template is English and relies on TeX's default (English) hyphenation.
|
||||
% For a GERMAN package you MUST add babel, or words break with English patterns
|
||||
% (`Hal-bleiterfertigung`, `automa-tisierte`) — a native reader notices, and no overfull
|
||||
% box warns you. See the 2026-08-27 KB Corrections Log entry.
|
||||
% \usepackage[ngerman]{babel}
|
||||
% \hyphenation{Trans-krip-ti-on} % ngerman still breaks this one wrongly
|
||||
% Then check the breaks in the compiled PDF — a clean box count proves nothing here.
|
||||
\usepackage[a4paper,left=0.65in,right=0.65in,top=0.55in,bottom=0.55in]{geometry}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{hyperref}
|
||||
|
||||
Reference in new issue
Block a user