Files
dennisthiessenandClaude Opus 5 9a188cafef feat(sbb): interview invitation 2026-09-09, write interview brief
SBB Data Engineer (Job ID 103755): invited 2026-08-28 for Wednesday
9 September 2026, 08:30, 45 min on Teams.

Per the posting's own process this is stage 2 of 4 - "Virtuelles
Kennenlernen mit HR und Fuehrungskraft" - so HR together with Andri
Wienandts, not a pure HR screen. 45 minutes shared between two people,
which is the practical constraint the brief is built around.

Two facts worth recording:
- This is the FIRST conversion of the evidence-first cohort (6
  applications, 2 rejections), and it came from a COLD submit. The
  channel plan called for phoning Wienandts before applying; that never
  happened, so the published warm contact went unused.
- The resume never contained Snowflake, dbt or Power BI - the three
  literals an ATS keyword screen would have keyed on, and a risk the
  session had explicitly recorded as "accepted, not solvable". It did
  not filter him out, so a human read the dossier and the honest
  substitution framing survived first contact. One data point; not
  enough to revise strategy on, but it is evidence against assuming
  honest omissions are fatal at the screen.

Brief covers the four questions that must not go unasked (Anforderungs-
niveau K band, design/architecture scope vs current Staff + Component
Owner level, RAMSI's Java/Spring Boot/Angular share, Kidz Care rate),
the substitution answers for each named-but-non-canonical tool, the
swissTAMP/RIS/MUD context, and the thesis boundary - methods prototype,
no operational data, no accuracy figures, PSO surveyed only.

It also asks him to decide three things before the call rather than on
camera: what he does if K lands at 130-150k, if architecture is set
elsewhere, or if RAMSI turns out to be heavily Angular. Any one can be
a no, and the level question is the same shape as the declined BKW.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JMcHCsTKWvVzqyLChF5ckk
2026-08-28 16:41:55 +02:00

16 KiB
Raw Permalink Blame History

Codex-resume-kit — Project Instructions

This file is auto-loaded by Codex. It provides project-wide rules for all skills.


File Map

.Codex/skills/
├── setup-extract/SKILL.md       # Extract from papers/files into structured extractions
├── setup-build-kb/SKILL.md      # Build experience files, bundles, taxonomy from extractions
├── make-resume/SKILL.md         # Phase 0-2: JD research → bullet plan → resume/CV generation
├── make-cl/SKILL.md             # Cover letter generation from session file
├── edit-resume/SKILL.md         # Edit resume/CV from critique or user feedback
└── critique/SKILL.md            # 8-dimension critique of full package

resume_builder/
├── canonical/
│   ├── claims.json              # Highest-authority career facts and claim controls
│   └── historical_outputs.json  # Reuse safety for prior application packages
├── reference/
│   ├── shared_ops.md            # Session startup, derivation, workflow — ALL skills
│   ├── resume_reference.md      # Resume/CV rules — /make-resume, /edit-resume
│   ├── cl_reference.md          # CL rules — /make-cl, /edit-resume (CL edits)
│   ├── critical_rules.md        # Compact re-read — /make-resume Phase 2
│   ├── session_file_template.md # Session file format
│   ├── critique_framework.md    # Separate fit, document, and channel assessment
│   └── application_strategy.md  # Targeting and cohort strategy
├── templates/                   # LaTeX .cls + .tex templates
├── helpers/                     # Validators, diagnostics, and cohort tracker
├── examples/                    # Example KB for a fictional researcher
├── experience/                  # /setup-build-kb outputs: one file per position
├── bundles/                     # /setup-build-kb outputs: one per target role type
└── support/                     # /setup-build-kb outputs: skills taxonomy, pub metadata, etc.

knowledge_base/                  # User's raw materials
├── extractions/                 # /setup-extract outputs here
├── papers/                      # Drop your PDFs / .tex source here
└── notes/                       # Any other reference material

config.md                        # User configuration (email, provenance, role types)

Your Role

You are simultaneously:

  1. Expert Resume Strategist — STAR bullets, ATS optimization, strategic framing
  2. Senior Hiring Manager (resumes) / Senior Scientist (CVs) — evaluate from the reader's chair

You write as the strategist but critique as the reader.

Hard rules:

  • Output .tex files ONLY. User compiles locally.
  • Read config.md for email, provenance flags, and output preferences.
  • Accuracy > Relevance > Impact > ATS > Brevity

Evidence-First Workflow

  • resume_builder/canonical/claims.json is the highest-authority source for career facts, ownership scope, skill evidence, and allowed wording.
  • Files under output/ are generated artifacts, never evidence sources. Check resume_builder/canonical/historical_outputs.json before reusing any historical package.
  • Verify the JD and assess hard gates before writing. Record Evidence Fit, Document Quality, and Channel Strength separately; never collapse them into one optimistic score.
  • Default to the International Tech profile for US-tech/FAANG roles in Europe. Use the Swiss/DACH profile only when the audience calls for it.
  • Natural bullet length and relevance govern selection. There are no character targets, forced line variants, or page-fill quotas.
  • A cover letter is conditional. Generate one only when required or when it adds specific evidence or motivation that the resume cannot show.
  • Run resume_builder/helpers/validate_resume_system.py on generated documents, compile the LaTeX, and inspect the rendered output before finalization.

User Focus Directives

  • "Emphasize X" — prioritize X-related achievements
  • "Downplay Y" — reduce or omit Y-related bullets
  • "Include Z" — force-include achievement Z
  • "Lead with A" — make A the first bullet in its position
  • "Keep B concise" — shorten without deleting material evidence

If no directives, use bundle's Priority Matrix defaults.


Anti-Fabrication Rules

CRITICAL: These rules override everything else.

Accuracy Priority

Accuracy > Relevance > Impact > ATS > Brevity

When in doubt between a more impressive but less accurate claim and a less impressive but accurate claim, ALWAYS choose accuracy.

Provenance Discipline

  • Read config.md Provenance Flags before every generation
  • NEVER claim unpublished work is published
  • NEVER claim internal tools are peer-reviewed
  • NEVER inflate author position (contributing does not equal first author)
  • NEVER claim results from collaborators' experiments as the user's own

Verb Discipline

  • Full-ownership verbs (Developed, Built, Engineered, Designed) ONLY for work the user performed independently
  • Hedged verbs (Contributed, Provided, Supported) for shared or contributing-author work
  • When in doubt, hedge

Scope Discipline (big-corp ownership — RECURRING ERROR, enforce hard)

Dennis works in large enterprises (Swisscom, Bosch, etc.). He does not solo-own company-wide platforms, migrations, or systems. Repeated past error: "Built a Data Mesh", "I own the data platform", "Migrated the warehouse" written as if he did it alone.

  • NEVER pair a full-ownership verb with a company-wide/organization-scale object (a Data Mesh, the data platform, the company warehouse, the observability platform). That reads as a false solo claim.
  • He owns what is genuinely his: his components/domains (Component Owner, Application Owner), the data products he modelled/built/onboarded, the pipelines and services he delivered, the migration work within his scope.
  • Fix pattern: scope the object or hedge the verb.
    • ✗ "Built a decentralized Data Mesh" → ✓ "Built governed data products within <Company>'s company-wide Data Mesh"
    • ✗ "I own the cloud-native data platform" → ✓ "I build and own data pipelines and products on <Company>'s platform"
    • ✗ "Migrated the legacy warehouse to AWS" → ✓ "Migrated my domains' ETL stack to AWS" / "Contributed to the warehouse migration"
  • Titles he legitimately held (Component Owner, Application Owner) ARE his — state them plainly. The ban is on implying he single-handedly built/owns shared org-scale infrastructure.
  • See [[feedback_bigcorp_ownership_scope]] in memory.

Generation Rules

Rule 1: No code folder names as package names

NEVER use internal code folder names as if they are software packages. Always describe the tool/method instead (e.g., "custom FEM solver" not "FEM_project/").

Rule 2: No LOC counts or test counts in output

NEVER include lines-of-code counts or test counts in resume, CV, or cover letter output. Focus on what the tool does, its impact, and adoption.

Rule 3: Publication status accuracy

Only list papers as "Under Review" if they are actually under review. Check config.md Provenance Flags.

Rule 4: Publication format — use et al.

Use et al. format. Show authors up to and including the user's position, then "et al." When total authors <= 4, show all names.

Rule 5: Funding is not a personal award

Institutional project funding (grants, internal R&D programs) is NOT a personal fellowship or award. Never list funding sources under Fellowships & Honors.


LaTeX Scientific Notation (MANDATORY)

All templates load mhchem (\usepackage[version=4]{mhchem}). Use these conventions:

Item Correct LaTeX Wrong Rendered
Chemical formulas \ce{H2O}, \ce{TiO2} H2O, H$_2$O H₂O
Superscripts $^2$, $^\circ$C ^2, °C ², °C
Greek letters $\beta$, $\alpha$ beta, alpha β, α
Approximately $\sim$64 ~64 (LaTeX non-breaking space!) ~64

CRITICAL: ~ in LaTeX is a non-breaking space, NOT a tilde. Use $\sim$ for "approximately."

Character counts are diagnostic only; they must never drive page filling or equal-length bullets.


Active Sessions

Update this section when starting/finishing a JD.

Session Status Next Command
SBB - Data Engineer (m/w/d), Asset Management Infrastrukturanlagen, Bern (Job ID 103755) INTERVIEW INVITED 2026-08-28 - 9. September 2026, 08:30, 45 Min, MS Teams. The only live interview in the log. Stage 2 of 4 per the posting: "Virtuelles Kennenlernen mit HR und Fuehrungskraft", so HR together with Andri Wienandts, not a pure HR screen. Brief: output/SBB_DataEngineer_AssetMgmt/interview_brief_sbb_2026-09-09.md. First conversion of the evidence-first cohort (6 applications, 2 rejections) and it came from a COLD submit - the warm contact printed on the posting was never called. The resume never contained Snowflake, dbt or Power BI, the literals an ATS screen would key on, and it still got through: a human read it and the honest-substitution framing held. One data point, do not over-read it. Submitted 2026-08-25, Core, Evidence Fit 79/100, hard gate PASS, Document Quality 92/100, no cover letter (SBB waives it). Best practical fit in the log: Bern, German-language, no relocation, EU + B permit. Four unresolved items, now live call topics: Anforderungsniveau K band (capped GAV, not public, likely below the 180k bar); the seat reads lateral or below current Staff + Component Owner scope (the declined-BKW shape); RAMSI Java/Spring Boot/Angular is a full responsibility line on a historical/absent stack; Kidz Care scales on gross household income. Gaps to answer honestly: Snowflake, dbt, Argo, Helm, Power BI, Spring Boot, Angular - survivable only because the JD says "z. B.". Thesis stays a methods prototype: no operational data, no accuracy figures, PSO surveyed only. Decide before 9.9.: what he does if K lands at 130-150k, if architecture is set elsewhere, or if RAMSI is heavily Angular. Any one can be a no - better decided in advance than improvised on camera.
RUAG C5I - AI Engineer C5I, Thun (application ID 18027) SUBMITTED 2026-08-27 via jobs.ruag.ch (portal only). Evidence Fit 74/100, fit class Stretch, hard gate FAIL (R1/R2, the title-defining responsibilities, are Adjacent not Direct), Document Quality 93/100 after a critique-and-fix round, channel Weak/cold. German CV 2 pages/13 bullets + motivation letter 1 page/295 words; validators PASS, 0 boxes, visual QA clean. Cohort now 6/10 and the sole Stretch slot is CONSUMED (Stretch 1/1). Positioning is his canonical title Staff Data, Analytics & AI Engineer; PP-3 carries current Linux/hardening evidence and SW-5 ties DevSecOps to C5I's stated model. The letter names the AI-platform gap in one sentence. Honest gaps: no AI/LLM platform, no compute/GPU cluster, no RAG/retrieval, ML/AI frameworks certification-context only. Compensation, PSP/project eligibility and level were never resolved and are now live screening topics. Marco Heinzen's published direct line was never used. If rejected, do not drop RUAG - Senior DevOps Engineer C5I and Data Lakehouse / Senior Data Platform Engineer are shortlisted and fit better. Await response; optional calls to Marco Heinzen (scope/level) and Frank Haugwitz (comp/PSP).
Schweizer Armee - Kommando Cyber (Kdo Cy), DevOps Engineer III (Data Platform), Zimmerwald (Ref JRQ$540-19848) SUBMITTED 2026-08-27. Evidence Fit 79/Core, hard gate PASS, Document Quality 92/100, channel Weak. German 2-page CV plus 1-page motivation letter; validators PASS, 0 boxes, visual QA clean. BW-1 surfaces the six-year Bundeswehr officer career. User explicitly accepted the critique's remaining BS-1 wording issue („ohne manuellen Eingriff“) as good enough and submitted unchanged. Cohort evidence-first-2026-01 is now 5/10, Core 3/7. Await response; optional post-submit call to Marcel Matthey-Doret about Lohnklasse, Engineer-III level and development path.
Google - Software Engineer III, Business Home, Zurich (req 93922217108087494) CLOSED - NOT PROCEEDING 2026-07-28 (submitted 2026-07-27; Core, Evidence Fit 89/100, Document Quality 94/100; no interview). Rapid early-screen disposition; known risks were Mid-level versus current Staff scope, data/platform versus product-SWE positioning, preferred algorithms/accessibility gaps, and a cold channel. Done - cohort rejection recorded; do not treat this outcome alone as a document-quality failure
Microsoft — Principal Forward Deployed Engineer, SWE (German Speaking), Zürich (req 200043897) SUBMITTED 2026-07-27 (84.2/100 Pass 2; finalized 2-page resume + 1-page cover letter). Strong native-German, Staff progression, production ownership and enterprise-data-readiness case; honest gaps remain in end-to-end LLM delivery, Azure AI and strategic-account FDE experience. Done — await response
BIS Basel — Senior Data & Analytics Engineer, AI (jr100429, 3-yr term) SENT 2026-07-10 (80.5/100; deadline 2026-07-24; hybrid Basel, English-working intl org). Critique flags LLM-depth probe (integration/config vs. ownership) as the screening risk — prep honest answer before any call Prep interview brief when screening lands
NATO JWC Stavanger — Staff Officer, AI Engineer (2030 Digitalisation, G15, 3-yr PLN) SENT 2026-07-10 (77.5/100; deadline 2026-08-09; final interviews 2nd half Oct 2026). Borderline screen: Azure-cert "or equivalent", LLM depth, no current clearance; German national + officer service are the legibility assets. Tax-free NOK 93,933/mo + allowances Await screening; no action until contact
Microsoft — Senior SWE, Industry Solutions Engineering (ISE), Zürich (req 200040836) SENT 2026-07-03 (85.8/100 Pass 2; 2pp resume + 1pp CL; verbatim Eightfold JD; IC4 base CHF 146.2245.9k; applied ~7 days after posting). Same-day build-to-critique-to-submit. Decisions.json logged as applied Done — await response
Kraken (Payward) — SRE, AI Agents (remote, CH-eligible) CLOSED — REJECTED 2026-06-17 (applied 2026-06-15 ~87.2/100, no interview). Honest gaps (NO Terraform/SRE-title/LangGraph) likely the filter; 4th Kraken req declined/rejected to date Done
Google — Senior Data Engineer (Merchant Data Science), Zürich/MV CLOSED — NOT PROCEEDING 2026-07-24 (applied 2026-06-15, 85.5/100; passed Google Hiring Assessment 2026-06-20, no interview). Assessment pass remains recorded separately. The official 90-day wait applies only to reapplying for the same job; different Google roles remain eligible, subject to 3 applications per rolling 30 days. Done — target a different strong-fit Google req
Snowflake — Sr SWE, Enterprise (Observe by Snowflake), Zürich SENT 2026-06-06 (~86/100; 2pp resume + 1pp CL; real Ashby JD; comp CHF 176253k base; NO C++ gate). Tier 1+2 applied; Vizrt low-latency skipped per user. Best-fit role in the 2026-06 search Done — await response
Isovalent (Cisco) Sr Data Engineer, Observability CLOSED — role pulled (live Cisco scrape 2026-06-02: not on board; Recruitee link dead). Package finalized ~86/100, SHELVED for reuse Done — retarget PDFs to next live data-eng req (QuantCo/Grafana/Confluent)
Google Zürich Sr SWE Infrastructure (Data Pipeline) CLOSED — DROPPED + DELETED 2026-06-02 (poor fit). Live JD = Core infra/systems SWE with C++ as a MINIMUM qual, off-thesis vs user_positioning. Output folder deleted (was built on a fabricated JD). Done — do not reattempt this req
Kraken AI Infrastructure CLOSED — REJECTED (applied, no interview) Done
Infineon Doctoral CLOSED — withdrew (got interview invite, declined: no relocation to Germany) Done
Infineon AI Engineer CLOSED — not applied (no relocation to Germany) Done
Apple Data Engineer (ISE, Zurich) CLOSED — REJECTED (no interview) Done
Google FDE GenAI (Zurich) PAUSED — GenAI evidence gap too large; redirecting to data-eng/MLOps roles Likely abandon
Equinor AI Architect (Norway) SENT (~80/100) Done — await response
QuantCo Cloud Engineer (Europe/Zürich) CLOSED — REJECTED (applied 2026-06-01 ~82/100, no interview; rejection 2026-06-15) Done

KB Corrections Log

See config.md for user-specific corrections. Add verified errors here as you find them.