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
186 lines
16 KiB
Markdown
186 lines
16 KiB
Markdown
# 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.2–245.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 176–253k 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._
|