# Session: SBB (Schweizerische Bundesbahnen) — Data Engineer (m/w/d), Asset Management Infrastrukturanlagen

## STATUS: SUBMITTED 2026-08-25

Application sent by the user on 2026-08-25 (2pp English resume, no cover letter — SBB waives it;
the Tier 1 query-performance fix was already applied on 2026-08-21, so the submitted document is
the 92/100 version). Cohort slot consumed: **Core 2/7** in `evidence-first-2026-01`.

**Submitted with the comp question still open.** The channel plan below called for phoning Andri
Wienandts *before* applying, and the critique's closing line advised against submitting ahead of the
Anforderungsniveau K answer. That did not gate the submission. Consequence, carried forward: the K
band and the design-scope question are now **screening-call topics, not pre-cleared facts**, and the
same is true of Kidz Care childcare support (SBB covers "bis zu 90 %" of Betreuungskosten but scales
it on *gross household income*, and the bracket table is intranet-only — assume far below 90 % at
this band). Prep an honest answer before any call rather than discovering the number in it.

## JD Integrity
- File/source: `JD_SBB_DataEngineer_AssetMgmt.txt` (this folder) — copied from `JDs/JD_SBB_DataEngineer_AssetMgmt.txt`
- Source URL: https://jobs.sbb.ch/v2/offene-stellen/data-engineer-m-w-d-asset-management-infrastrukturanlagen/45fa2411-31dc-4520-827e-1c93a527534c
- Retrieval method and date: Playwright headless scrape via `job_scout/.venv`, 2026-08-21 (board is a JS-rendered SPA; WebFetch is JS-blind on it)
- Verbatim posting: YES — full visible posting body, German original, no paraphrase
- Posting status: LIVE as of 2026-08-21. Discovered on the 2026-08-21 scout run, posted 2026-08-20. Job ID 103755.
- Named contact on posting: Andri Wienandts, People Leader, +41 79 364 62 53
- Notable: SBB explicitly waives the cover letter for this req ("verzichten wir bei dieser Stelle auf ein Motivationsschreiben")

## Application Decision
- Audience profile: **International Tech, in English** — user decision 2026-08-21. Phase 0 had provisionally recommended Swiss/DACH on the strength of the German-language posting and `#einfachDu` register; the user chose English, and since the document carries no photo and no demographic data, International Tech (the config default) is the coherent profile. The single Swiss/DACH element retained is an explicit **Languages line naming German as mother tongue**, at the user's instruction — it answers the obvious recruiter question on a German-language posting.
- Evidence Fit: **79/100**
- Fit class: **Core** (75+, no hard-gate failure)
- Hard gate: **PASS** — no minimum qualification is a Gap; the title-defining capability (build/operate cloud data pipelines and data products) is Direct and current; no clearance, relocation, language or authorization issue.
- Channel Strength: **Moderate (achievable)** — the posting names the People Leader with a direct mobile number. Every application in the log to date has been Weak/cold; this is the first with a published warm entry point. Rated Weak until the call actually happens.
- Channel plan: call Andri Wienandts **before** applying. Two questions to settle: (1) the Anforderungsniveau K salary band ceiling, (2) whether the seat carries architecture/design scope or is purely build-and-run.
- Cohort slot: Core would be **2/7** (Google SWE III consumed 1/7). Adjacent 1/2, Stretch 0/1 unchanged.
- Decision: **PROCEED to Phase 1 — but only after the comp question is answered.** The technical and practical fit is real and the hard gate passes cleanly. The blocker is not fit: it is that this seat is a lateral-or-below step in a capped federal pay band. If Anforderungsniveau K tops out near the current 140k, Phase 1 is wasted work no matter how good the framing is.

### Evidence Fit breakdown (per `critique_framework.md`)
| Dimension | Weight | Score | Reasoning |
|---|---:|---:|---|
| Required qualifications | 35 | **29** | 6 required lines. R1, R2, R3 (core), R6 Direct; R4 Direct–Adjacent; R5 split — SQL/modelling Direct, Power BI a named Gap. |
| Core responsibilities | 25 | **20** | P1, P2 (integration), P3 (data products), P5, P6 Direct; P2 predictive maintenance Adjacent-strong; **P4 (Spring Boot/Angular) a Gap**. |
| Level and ownership | 15 | **9** | The dimension asks whether title, decisions and leadership *match*. They do not: the seat sits **below** current Staff + Component Owner scope. Capability is not the issue — fit of level is. Revealed behaviour already rejected this exact shape once (BKW, same Bern tier, declined as a lateral), so scoring it as a near-match would contradict the Competitive Read below. |
| Recency and depth | 10 | **10** | The strongest evidence is his current job, at a peer Swiss enterprise, today. Nothing here is historical. |
| Domain/tool transfer | 10 | **6** | Snowflake, dbt, Argo, Helm, Power BI, Spring Boot, Angular all non-canonical. Each is individually substitutable and the JD says "z. B." — but seven named tools is a real deduction. |
| Practical constraints | 5 | **5** | Bern resident, German native, EU citizen + B permit, hybrid, no clearance. Best in the log. |
| **Total** | **100** | **79** | **Core** (75+), at the lower end. For calibration: Google SWE III 89, Kraken 87.2, MS ISE 85.8, MS Principal FDE 84.2, BIS 80.5, Aker BP 79, NATO JWC 77.5. Reads as *good fit with one unresolved blocker*, not *best fit in the log*. |

## ATS Keywords

Extracted from the JD. **Bold = canonical and safe to use.** Struck-through = named in the JD but **not canonical — must not appear in any output document.**

- **Core function:** **Data Engineer**, **Datenpipelines**, **ETL/ELT**, **Data Warehouse**, **Batch**, **Streaming**, **Orchestrierung**, **Datenprodukte**, Enterprise Analytics Plattform, semantische Modelle
- **Platform/cloud:** **cloudbasierte Datenplattformen**, **Kubernetes**, **Docker**, **AWS**, **CI/CD**, **GitLab CI/CD**, ~~Helm~~, ~~Argo Workflows~~
- **Data stack:** **Kafka**, **Airflow**, **PySpark**, **SQL**, **Datenmodellierung**, Star-/Snowflake-Schemata, **APIs**, ~~Snowflake~~, ~~dbt~~
- **Languages/SWE:** **Python**, **Tests**, **Packaging**, **Deployment**, **Java** (with context), ~~Spring Boot~~, ~~Angular~~
- **BI/reporting:** **Reporting**, **Dashboards**, **Abfrageleistungsoptimierung**, TIBCO Spotfire (canonical, as the bridge), ~~Power BI~~
- **Domain:** **Anlagenmanagement**, **Infrastrukturanlagen**, **vorausschauende Wartung / Predictive Maintenance**, **Sensordaten**, **Anomalieerkennung**, Zustandsdaten, RAMS, RAMSI
- **Ways of working:** **agil**, **Betrieb**, **Datenqualität**, **Governance**, **On-Call**, **Verantwortung**, **Mentoring / fachliche Entwicklung**, **Stakeholder**, Fachspezialist:innen

**ATS risk, stated plainly:** an automated screen keyed on the literals *Snowflake*, *dbt* or *Power BI* would reject this resume, because none of the three can honestly appear. That risk is accepted, not solvable — it is exactly the case the warm channel exists to bypass.

## Gap Assessment

| Gap | Severity | Why it is not a hard gate | How it is handled |
|---|---|---|---|
| **Snowflake** | Medium — named in a required line *and* a responsibility | Prefixed "z. B."; the requirement is cloud data platforms with a modern stack | Bridge from Teradata/Oracle → AWS warehouse work (SW-1) and data products (SW-7). Never write the word. |
| **Power BI** | Medium — named in a required line | BI tooling is genuinely substitutable; he **co-owned** a BI platform | Bridge from TIBCO Spotfire co-ownership + C# extensions + TAF 2022 (BS-5). |
| **dbt** | Low–Medium | "z. B." | Bridge from Airflow + PySpark transformation/testing discipline. |
| **Argo Workflows** | Low | "z. B."; direct orchestrator substitution | Bridge from Airflow. |
| **Helm** | Low | Not a standalone requirement; implied by Kubernetes | Kubernetes is canonical; **Helm is not — do not list it.** |
| **Spring Boot / Angular (RAMSI)** | Medium — a whole responsibility line | One of six responsibilities; not the title, not in the required list | Java is `allowed-with-context` (GN-3, BS-2). Do not claim Spring Boot or Angular. Raise it honestly in the call — he may not want this work. |
| **Rail/RAMS domain** | Low | No JD line requires it | Bridge: industrial asset/sensor data at Bosch; condition-monitoring thesis. Ask about RAMSI rather than assuming. |
| **Anforderungsniveau K comp** | **Unresolved — decision-blocking for the user, not a fit gap** | Not a qualification at all | Ask the People Leader. Do not research further; the figures are not public. |

**No Gap sits on a minimum qualification, and the title-defining capability is Direct.** Hard gate: **PASS.**

## Requirements

Requirement text is the JD's German original, abbreviated. "Required" = listed under *Das bringst du mit*; "Responsibility" = listed under *Das kannst du bewegen*.

| # | Requirement | Required/preferred | Direct/Adjacent/Gap/Constraint | Canonical evidence | Gate? |
|---|---|---|---|---|---|
| R1 | Kommunikation, Teamorientierung, **fachliche Entwicklung anderer Dateningenieur:innen fördern** | Required | **Direct** | Staff Engineer (Engineer IV) since 2025-04; BS-3 Application Owner incl. training and documentation; GN-1 training ownership | No |
| R2 | Agile, selbständige Arbeitsweise; Verantwortung für Qualität und Nachhaltigkeit technischer Lösungen | Required | **Direct** | SW-2 Component Owner — operation, data quality, governance, incidents, on-call | No |
| R3 | Mehrjährige Erfahrung in Entwurf, Aufbau, Entwicklung und **Betrieb cloudbasierter Datenplattformen** mit modernem Data Stack (ETL/ELT, DWH, Streaming, Orchestrierung — **z. B.** Snowflake, dbt, Helm, Argo Workflows, Kafka) | Required | **Direct** (core) / **Gap** (named products) | SW-1 AWS migration of his domains' ETL from Teradata/Oracle; SW-2; SW-3 Python apps on Kubernetes + GitLab CI/CD; SW-7 governed data products; skills: Kafka, Airflow, AWS, PySpark, Kubernetes all production-current | **No** — the product list is prefixed **"z. B."** (for example), so it enumerates a stack archetype, not mandates. See Gap note below. |
| R4 | Skalierbare und **kosteneffiziente Datenarchitekturen** entwerfen; Trade-offs Latenz / Konsistenz / Kosten beurteilen | Required | **Direct–Adjacent** | SW-1, SW-2, SW-3. Design/trade-off reasoning is real and current; **cost-efficiency figures are `metrics: unverified`** — describe the practice, never quantify a saving | No |
| R5 | **Datenmodellierung (Star-/Snowflake-Schemata)**, Reporting mit **Power BI**, fortgeschrittenes SQL, Abfrageleistungsoptimierung | Required | SQL **Direct**; modelling **Direct**; dimensional schemas **Adjacent**; Power BI **Gap (Adjacent via Spotfire)** | SQL production-current; SW-7 models data products (allowed verb "model"); BS-5 co-owned TIBCO Spotfire environment and built C# extensions, co-presented at TIBCO Analytics Forum 2022 | **No** — BI tooling is genuinely substitutable and he co-owned a BI platform. But this is the single weakest required line. |
| R6 | **Software-Engineering in Python** — Tests, CI/CD, Packaging, Deployment Best Practices | Required | **Direct (strongest line in the JD)** | Python production-current; SW-3 GitLab CI/CD on Kubernetes; VZ-2 automated tests wired to CI/CD quality gates; GN-1 BDD + Jenkins | No |
| P1 | Datenpipelines auf der **Enterprise Analytics Plattform** aufbauen, **betreiben**, weiterentwickeln (Batch **und** Streaming) | Responsibility | **Direct** | SW-1, SW-2, SW-3; Kafka + Airflow + PySpark production-current. "Betreiben" maps exactly to Component Ownership incl. on-call. | No |
| P2 | Datenquellen via **APIs/Kafka** integrieren; ermöglicht Analysen, Dashboards und **vorausschauende Wartung** | Responsibility | Integration **Direct**; predictive maintenance **Adjacent (strong)** | Kafka production-current; SW-7 source onboarding. PdM cluster: BS-2 fab sensor/process data (defect records, wafer inspection images, PCM electrical parameters); BS-4 ELK/Kafka anomaly-detection PoC; BS-1 containerized ML inference in 24/7 production; EDU-MENG thesis on vibration-based condition monitoring | No |
| P3 | **Datenprodukte und semantische Modelle** auf **Snowflake und Power BI** gestalten | Responsibility | Data products **Direct**; both named products **Gap** | SW-7 — builds governed data products and onboards sources inside Swisscom's company-wide Data Mesh, Atlassian Compass for metadata/lineage | No |
| P4 | **RAMSI** weiterentwickeln — Webanwendung (**Java Spring Boot / Angular**), Reports, Dashboards | Responsibility | **Gap** — the clearest one | Java is `production-historical`, `allowed-with-context` (GN-3 Java/J2EE workflow features; BS-2 Java data services). **Spring Boot: absent from canonical. Angular: absent; JavaScript is `production-historical-limited`.** | **No** (one of six responsibilities, not the title) — but see Open Risks |
| P5 | Anforderungen mit dem Business aufnehmen; nachhaltige Lösungen im Betrieb | Responsibility | **Direct** | SW-4 delivers data products/dashboards/analyses with internal B2B stakeholders and product owners | No |
| P6 | Wissen im Team teilen, zur fachlichen Weiterentwicklung beitragen | Responsibility | **Direct** | Same as R1 | No |
| C1 | Standort **Bern** / Work Smart (hybrid), 60–100% | Constraint | **Direct — best in the entire application log** | Lives in Bern. No relocation, no commute problem, hybrid matches the stated 2–3 day maximum | No |
| C2 | German-language posting and process | Constraint | **Direct** | German native | No |
| C3 | Work authorization | Constraint | **Direct** | German citizen (EU), Swiss B permit, no sponsorship required | No |
| C4 | **Anforderungsniveau K, Regionalzulage Stufe 1** | Constraint | **UNRESOLVED — the real risk** | SBB GAV runs 15 collectively-bargained levels A–O with a fixed Basiswert/Höchstwert per level; K is the 11th. Current K figures are **not published** in the sources reachable on 2026-08-21 (the SEV brochure documents the mechanism, not the table; the GAV PDF download returns an error page). | **Not a fit gate — a user-decision gate.** See Open Risks. |

### Gap note on R3 (important — do not overstate it)
Five products are named: Snowflake, dbt, Helm, Argo Workflows, Kafka. Only **Kafka** is canonical. Snowflake, dbt, Argo Workflows and Helm are **absent from `claims.json`** — under `shared_ops.md` ("omit anything absent, ambiguous or unverified") none of them may appear in any output document.

This is survivable **only because the JD writes "z. B."**. The requirement as written is *cloud data platforms with a modern data stack*, exemplified by those tools. The substitution map is honest and defensible in an interview:

| JD names | Canonical equivalent | Transfer honesty |
|---|---|---|
| Snowflake | Teradata / Oracle / AWS warehouse work (SW-1), data products (SW-7) | Strong — cloud MPP warehouse concepts, but **never claim Snowflake itself** |
| dbt | Airflow + PySpark transformation pipelines | Good — same modelling/testing/lineage discipline, different tool |
| Argo Workflows | Airflow | Strong — direct orchestrator substitution |
| Helm | Kubernetes (production-current-and-historical) | Adequate — **Helm itself is not canonical; do not list it** |
| Power BI | TIBCO Spotfire co-ownership (BS-5) | Good — BI platform ownership transfers; the product does not |

## Competitive Read
- **Obvious-fit candidate:** a Swiss data engineer with 5+ years on Snowflake + dbt + Power BI, ideally already inside a Swiss infrastructure/utility/transport operator, German-speaking, and comfortable maintaining a Java/Angular internal web application. That last trait is the unusual one — most pure data engineers do not want it, which measurably widens the field for Dennis.
- **Dennis's advantage:** he does the *operational* half of this job today, at a peer Swiss enterprise, in the same city. Component Ownership with on-call, data quality and governance is exactly "Betrieb" and "Verantwortung für Qualität und Nachhaltigkeit". Add the genuinely rare combination for this specific req: **industrial sensor/asset data (Bosch fab: defect records, wafer inspection images, PCM parameters) + anomaly detection on streaming data (ELK/Kafka) + a master's thesis on vibration-based condition monitoring of machine tools.** For a role whose stated purpose includes *vorausschauende Wartung* on physical infrastructure assets, that combination is worth more than Snowflake syntax.
- **Their advantage:** named-product fluency on the exact stack (Snowflake, dbt, Power BI) and, for the strongest candidates, rail domain knowledge — the asset taxonomy, EN 50126 RAMS vocabulary, swissTAMP/RIS ecosystem.
- **Level/scope comparison:** **This is the inversion, and it is the crux of the application.** Every other role in the log was a level stretch upward; this one reads *below* current scope. Dennis is Staff (Engineer IV) with Component Ownership at Swisscom; this is a senior IC data-engineer seat that asks him to *mentor* other data engineers but not to own architecture. The JD's only architecture language is "Datenarchitekturen entwerfen" as a personal skill, not an ownership mandate. Same shape as BKW, which the user declined as a lateral in this same Bern WLB-exception tier.

## Company Context
- **Employer:** Schweizerische Bundesbahnen SBB, division Infrastruktur — Anlagenmanagement (infrastructure asset management). Swiss federal railway; Bern is the corporate seat.
- **Where the role sits:** SBB runs a real, funded asset-management data ecosystem. **swissTAMP** (swiss Track Analysis & Maintenance Planning) is its central source for asset condition and behaviour — inspection data, measurement and operating data, trends and forecasts — and SBB describes it explicitly as enabling the move *"from reactive through proactive to predictive maintenance."* Alongside it sit **RIS** (Räumliche Informationssysteme, incl. Datenbank feste Anlagen) and the **Mess- und Diagnosetechnik (MUD)** department, which does automated condition monitoring of track, switches and power-supply systems across the standard-gauge network. SBB also operates a **Competence Center Predictive Maintenance**.
- **Current investment signal:** SBB has an active EU-journal tender (235005-2026) for up to **three new-generation infrastructure diagnostic vehicles** to sustain and expand condition-data monitoring. More diagnostic vehicles means more sensor volume, which is precisely what an Enterprise Analytics Platform pipeline role exists to absorb. The domain is funded and growing, not a maintenance backwater.
- **RAMSI:** not publicly documented. Almost certainly an internal application in the RAMS family (Reliability, Availability, Maintainability, Safety — EN 50126, the standard railway discipline) applied to Infrastruktur. **Treat as inference — do not state it as known fact in any document or interview; ask about it instead.** Good question for the People Leader call.
- **Culture signals:** `#einfachDu` (mandated informal "du" from first contact), Work Smart flexible/hybrid working, published pay system and active pay-equity commitment, cover letter deliberately waived, 60–100% part-time explicitly welcome. Process: application → virtual meeting with HR + line manager → in-person meeting → decision.
- **"Why them" angle:** public infrastructure whose data work has a physical consequence — keeping the Swiss network running — combined with a Bern seat and a genuinely on-thesis technical brief. This is the first role in the log where the mission and the commute both work without compromise.

## Framing Strategy
- **Professional identity:** Staff-level data engineer who *builds and runs* governed data products on a cloud platform in a large Swiss enterprise — pipeline construction, operation, data quality and stakeholder delivery — with unusual depth in **industrial sensor and asset data**.
- **Lead narrative:** "I already do the operational half of this job at Swisscom, on the same kind of platform, in the same city — and I have handled machine and sensor data since Bosch."
- **Strongest proof points:**
  1. SW-2 — Component Owner for business-critical Fulfillment ETL: operation, data quality, governance, incidents, on-call. Maps to "Betrieb" + "Verantwortung für Qualität und Nachhaltigkeit".
  2. SW-1 — migrated his domains' ETL from Teradata/Oracle to AWS (scoped, hedged per KB correction: **his domains**, contributor to the wider programme).
  3. SW-7 — builds governed data products and onboards sources within Swisscom's company-wide Data Mesh; Atlassian Compass for metadata and lineage. Maps to "Datenprodukte und semantische Modelle".
  4. SW-3 + VZ-2 + GN-1 — Python on Kubernetes with GitLab CI/CD, automated tests wired to quality gates. Covers R6 completely.
  5. BS-2 / BS-4 / BS-1 — fab sensor and process data, ELK/Kafka anomaly detection, containerized ML inference in a 24/7 production environment. This is the predictive-maintenance bridge and the real differentiator.
- **Honest adjacent bridges (state as transfer, never as the named tool):** Spotfire → Power BI; Airflow → Argo Workflows; Teradata/Oracle/AWS warehouse → Snowflake; PySpark/Airflow transformation discipline → dbt.
- **Explicit gaps (never paper over):** Snowflake, dbt, Argo Workflows, Helm, Power BI, Spring Boot, Angular — none are canonical, none may appear in output. Rail domain knowledge is absent.
- **Emphasize:** operation and ownership over greenfield build; sensor/asset data lineage from Bosch to now; German-language Swiss enterprise delivery; mentoring (R1) since it is a *required* line and Staff level evidences it.
- **Downplay:** GenAI/LLM work entirely — SW-8 is irrelevant here and its forbidden list is long. Also downplay FDE/customer-facing framing carried over from recent applications; this is an internal-stakeholder role (SW-4 is the right frame).
- **Do NOT include:** Security Champion (SW-5 — JD has no security requirement; default is OMIT). LOC/test counts. Any cost or performance metric (`metrics: unverified` across the board).
- **User directives:** none given for this JD.
- **Scope discipline watch (recurring error):** SBB will read "Data Mesh", "data platform" and "migration" as org-scale objects. Never pair a full-ownership verb with one. Correct: "builds governed data products within Swisscom's company-wide Data Mesh", "migrated my domains' ETL stack". Never: "built a Data Mesh", "migrated the warehouse".

## Critique Context
- **Reviewer persona:** a Swiss enterprise engineering lead (Andri Wienandts, People Leader) plus an SBB HR screener. Reads German. Screens for: does this person actually *operate* platforms or only build them; will they stay in a banded federal role; can they talk to Fachspezialist:innen.
- **Competitive landscape:** see Competitive Read. The Java/Angular half of the role narrows the field.
- **Domain vocabulary:** Anlagenmanagement, Infrastrukturanlagen, vorausschauende Wartung / Predictive Maintenance, Zustandsdaten, Diagnose, Enterprise Analytics Plattform, Datenprodukte, semantische Modelle, Batch und Streaming, Orchestrierung, Fachspezialist:innen, RAMS.
- **Likely first technical challenge:** "You have not used Snowflake or dbt — walk me through how your Teradata-to-AWS work maps." Prepare the substitution map above as a spoken answer, and answer the Power BI question with the Spotfire co-ownership honestly.

## Cover Letter Decision
- **NO** (provisional — revisit only if the People Leader call suggests otherwise)
- **Reason:** SBB explicitly waives it — *"Darum verzichten wir bei dieser Stelle auf ein Motivationsschreiben."* Under `cl_reference.md` a letter is generated only when required or when it adds information the resume cannot show. Neither holds. Writing one anyway risks reading as not having read the posting.
- **Better use of the same effort:** the phone call to Andri Wienandts, which converts a Weak channel into a Moderate one — the single highest-value action available on this application, and the variable the cohort has never yet tested.
- **If a letter is later wanted,** verified hooks are available: swissTAMP's reactive→proactive→predictive framing; the MUD condition-monitoring remit; the new-generation diagnostic-vehicle tender; and the honest thesis link (vibration-based condition monitoring — framed as a methods prototype, never as a validated system).

## Resume Plan — CONFIRMED BY USER 2026-08-21

### User decisions
1. **Role type + bundle: CONFIRMED.** Primary `bundle_data_engineer.md` (Staff/Senior Data Engineer, Tier 1). Secondary `bundle_analytics_engineer.md`, used only to reframe BS-5 (Spotfire) as the Power BI bridge.
2. **Language: ENGLISH**, with an explicit **Languages line stating German as mother tongue** — user's direct instruction. Because the document is English and carries no photo, the **International Tech** profile (config default, 2 pages) is the coherent choice; the one Swiss/DACH element retained is that Languages line, which the user asked for and which answers the obvious recruiter question on a German-language posting.
   - Languages line: **German (native) · English (fluent)**. Norwegian/Russian (basic) optional — recommend omitting as non-professional.
   - **Never list French or Italian** (config.md KB correction — Swisscom Zeugnis boilerplate, not accurate).
3. **Framing: delegated to Claude.** Chosen: lead on *operate-and-own*, carry the industrial sensor/asset-data thread from Bosch to now, drop GenAI/LLM material entirely.

### Format
- International Tech, **2 pages**, English, no photo, no demographic data
- Summary: 2–3 lines — operator identity plus the sensor/asset-data thread
- Skills: 4–6 compact lines, canonical `allowed` / `allowed-with-context` only
- Bosch title for this JD: **Senior Engineer, Data Analysis (Data Engineering)** — official title preserved with a transparent parenthetical per `resume_reference.md` §8
- Swisscom promotion shown: Senior → Staff (Engineer IV), April 2025

### Bullet plan — 11 bullets

**Swisscom — Staff Data, Analytics & AI Engineer (Oct 2023 – Present)** — budget 4–5, selected **5**

| | ID | Achievement | JD match | Why |
|---|---|---|---|---|
| * | SW-2 | Component Owner, Fulfillment ETL (Oracle → Kafka → Teradata), on-call SLA, governance | **Direct** R2, P1, P5 | **Lead bullet.** "Betrieb" and "Verantwortung für Qualität und Nachhaltigkeit" are the JD's own words; this is the closest evidence in the KB. |
| * | SW-1 | Migrated his domains' Teradata/Oracle ETL to AWS (S3, Glue, Athena/Iceberg, Redshift, Airflow, CloudFormation) | **Direct** R3, R4, P1 | Cloud data-platform build and operation. Scope-corrected: **his domains'**, contributor to the wider programme. |
| * | SW-7 | Governed data products and active metadata (Atlassian Compass) within the company-wide Data Mesh | **Direct** P3, R5 | The only direct answer to "Datenprodukte und semantische Modelle". Never claim ownership of the mesh. |
| * | SW-3 | Python data applications on Kubernetes with GitLab CI/CD | **Direct** R6 | Covers the required Python / tests / CI-CD / deployment line outright. |
| o | SW-4 | B2B data products and dashboards; process automation; RCA under 2nd/3rd-level support | **Direct** P5, P2 | Covers "Anforderungen mit dem Business aufnehmen". **First to cut** if space is tight. |
| x | SW-6 | PySpark | — | Fold into Skills, not a bullet. |
| x | SW-5 | Security Champion | — | JD has no security requirement. Default OMIT stands. |
| x | SW-8 | Domain-grounded LLM agents | — | Off-thesis here, long forbidden list. Dropped per framing. |

**Bosch — Senior Engineer, Data Analysis (Feb 2020 – Dec 2022)** — budget 3–4, selected **4**

| | ID | Achievement | JD match | Why |
|---|---|---|---|---|
| * | BS-2 | Data services in Python/Java/C# over OracleDB and Hadoop/Impala — fab sensor and process data: defect-management records, wafer inspection images, PCM electrical parameters | **Adjacent (strong)** P2 | **The differentiator.** Genuine industrial sensor/asset data for a role whose purpose includes *vorausschauende Wartung*. Also carries the Java thread. |
| * | BS-3 | Application Owner, analytics suite — SLOs, training, documentation, vendor management | **Direct** R1, R2 | Ownership plus the training/knowledge-transfer evidence R1 requires. |
| * | BS-5 | Co-owned TIBCO Spotfire platform, built C# extensions, co-presented TAF 2022 | **Bridge** R5 | **Carries the Power BI gap** — the weakest required line. A co-owned BI platform plus a public speaking credential is the honest answer. |
| * | BS-4 | ELK + Kafka anomaly-detection **PoC**, Grafana/Prometheus/Loki monitoring | **Bridge** P2 | Closest evidence to condition monitoring on streaming data. **PoC label must be retained.** |
| o | BS-1 | Containerized ML inference (Docker/K8s/Ansible) into 24/7 fab, automated defect classification | Adjacent | Strong bullet, but the JD wants pipelines that *enable* predictive maintenance, not ML delivery. Swap in for BS-4 if the production-ML angle is preferred. |

**Vizrt — Test Automation / DevOps Engineer (Jul 2017 – May 2018)** — selected **1**

| | ID | Achievement | JD match | Why |
|---|---|---|---|---|
| * | VZ-2 | Python A/V integration and unit test suite wired as CI/CD quality gates | **Direct** R6 | Reinforces the required tests/CI-CD line with a second, independent example. |
| x | VZ-1 | Distributed video transcoding backend | — | C++ — off-stack, and C++ is de-emphasized by standing preference. |

**Generali — IT Consultant (May 2015 – Jun 2017)** — selected **1**

| | ID | Achievement | JD match | Why |
|---|---|---|---|---|
| * | GN-1 | Introduced BDD; technical ownership of the automation suite; Jenkins administration; trained colleagues and presented to the Java Community | **Direct** R1 | R1 is a *required* line about developing other engineers. This is the clearest "introduced a practice and taught it" evidence in the KB. |
| o | GN-3 | Java/J2EE workflow features; WebServices to XLDeploy; **Apache Camel + Spring Boot PoC** | Bridge P4 | Only if the user wants to signal willingness for the RAMSI web-app work. See open question below. |

**Fraunhofer — 0 bullets.** FC-1 is C#/.NET plus Jenkins, off-stack here.

> **FC-4 deliberately excluded.** "Predictive Maintenance Research Grant Contribution" is a *grant proposal* contribution ("Mitarbeit"), not delivered work, and it is **absent from `claims.json`**. Despite being the most tempting keyword match in the entire KB for this JD, it must not be used as a predictive-maintenance credential — CLAUDE.md Rule 5 and the anti-fabrication rules both bar it.

**Total: 11 bullets** (Swisscom 5, Bosch 4, Vizrt 1, Generali 1) — bottom of the 11–14 guide, which is right here; padding to 14 would mean weaker evidence.

### Skills lines (draft, canonical only)
- **Languages & Data:** Python · SQL · PySpark · Java (Bosch/Generali) · C# (Bosch/Fraunhofer)
- **Pipelines & Streaming:** Apache Kafka · Apache Airflow · ETL/ELT · Oracle · Teradata · Hadoop/Impala
- **Cloud & Platform:** AWS (S3 · Glue · Athena/Iceberg · Redshift · Lambda · Step Functions) · CloudFormation/IaC · Kubernetes · Docker · GitLab CI/CD
- **Data Products & Governance:** Data Mesh data products · active metadata and lineage (Atlassian Compass) · data governance · data modelling
- **Analytics & Monitoring:** TIBCO Spotfire (co-owned, C# extensions) · Grafana · Prometheus · ELK (PoC)
- **Languages:** German (native) · English (fluent)

> **Explicitly absent, by design:** Snowflake, dbt, Argo Workflows, Helm, Power BI, Spring Boot, Angular, Terraform, Azure, GCP. Never substitute a JD word for an evidenced tool.

### Open question for the user (does not block Phase 2)
**Spring Boot.** `experience_generali.md` GN-3 records a contribution to an *Apache Camel + Spring Boot Dispatcher PoC* (2015–17). Canonical GN-3 records only "contributed to integration proofs of concept", and **Spring Boot is absent from the canonical skills list**, so it stays out of the document either way — a 9-to-11-year-old PoC is not a resume claim. But if the memory is accurate it is a legitimate *interview* answer to the RAMSI question. Worth confirming.

## Reuse Safety & Phase 2 Gates
- **`historical_outputs.json` checked 2026-08-21.** No prior package is reusable here and none is a match in kind: every existing output folder is an **English International Tech** resume, and six are on the `unsafe_do_not_reuse` list. **This would be the first Swiss/DACH German-language package in the repo** — build fresh from canonical claims, per policy.
- **Phase 2 forbidden-token gate (must not be skipped):** after generating the `.tex`, grep it for `Snowflake`, `dbt`, `Power BI`, `Spring Boot`, `Angular`, `Argo`, `Helm`, `LangChain`, `Terraform`, `Azure`, `GCP`. All must be **absent**. They appear throughout *this* session file because it analyses them as gaps — that is correct here and wrong in the document.
- Standard gates still apply: `validate_resume_system.py --document`, compile with MiKTeX pdflatex at full path, inspect the rendered PDF.

## Open Risks (surface to the user before Phase 1)
1. **Comp (C4) — the deciding factor, and it is unresolved.** Anforderungsniveau K is a collectively-bargained band with a fixed ceiling; the top of the band is not negotiable the way a private offer is. The current K figures could not be retrieved from public sources on 2026-08-21. Against the standing bar (Swisscom ~140k, moves only at 180k+ all-in) this is the most likely reason not to proceed, and it is a question for the People Leader, not for further desk research.
2. **Level (lateral or below).** Senior IC seat vs current Staff + Component Owner scope. The Bern/Thun WLB-exception tier deliberately accepts below-bar *comp*; it has never accepted below-*level* scope, and BKW was declined on exactly this. Worth asking whether the role carries design/architecture ownership in practice.
3. **P4 Java/Spring Boot/Angular.** A full responsibility line is web-application development on a stack that is historical (Java) or absent (Spring Boot, Angular). Not a gate, but it will come up, and it is work he may not want.
4. **Five named products in the required stack are non-canonical.** Defensible because of "z. B.", but the resume will visibly not say Snowflake, dbt or Power BI. An ATS keyword screen configured on those literals would drop him. Nothing can honestly be done about that.

## Output Files
- Resume: `e2e_sbb_data_engineer_asset_mgmt_resume.tex` → `.pdf` (**2 pages**, generated 2026-08-21)
- Cover letter: **intentionally omitted** — SBB explicitly waives it
- Critique: `critique_sbb_data_engineer_asset_mgmt.md` (2026-08-21)

## Critique Summary
- Evidence Fit: **79/100 — Core (lower end)**, unchanged; a document cannot move candidate-role fit
- Hard gate: **PASS**
- Document Quality: **92/100** after Edit 1 (was 90 at critique time) — truth/provenance 24/25, well clear of the 8/10 automatic-failure line
- Channel Strength: **Weak**, but uniquely upgradeable — the first posting in the log with a named hiring contact and a direct number
- **Tier 1 fix (one):** the JD names *Abfrageleistungsoptimierung* in a required line and the document is silent on query performance, despite canonical support in BS-2's 3L variant. The only substantive gap that costs nothing in honesty.
- Tier 2: "agile" **RESOLVED** (Edit 1, SW-3). APIs **not applied** — no canonical evidence that source onboarding used APIs; needs user confirmation before it can be added.
- **No Tier 1 truth findings.** Claim audit clean across all 13 bullets; SW-1 and SW-7 both avoid every forbidden phrasing.
- Reader sequence: ATS pass (fails only a screen keyed on the three unnameable products) · Recruiter **Forward** · Hiring manager **Interview, probable** · Technical reviewer **Credible**.
- **Verdict: the document is ready; the decision is the constraint.** Do not submit before the Anforderungsniveau K answer.
- Framework note: the critique skill's single 8-dimension score (incl. Publications) conflicts with `critique_framework.md` and CLAUDE.md, which mandate three separate scores. Followed CLAUDE.md.

### Phase 2 record
- **13 bullets** shipped, not the 11 planned. Two deliberate changes during generation:
  1. **Fraunhofer kept 1 bullet (FC-1 + FC-3 combined), not 0.** Dropping the role would have opened an unexplained **21-month gap** (Vizrt ends May 2018, Bosch starts Feb 2020). Chronology integrity outranks the bullet budget.
  2. **BS-1 added** as a fifth Bosch bullet (marked `o`/available in the plan). Not padding: it is HIGH priority in `bundle_data_engineer.md`, and containerized delivery into a *continuously operating* environment reads directly onto an employer that runs a 24/7 network. It also improved page-2 fill.
- **Page-break decision.** Tested the natural flow with `\newpage` removed: page 1 filled completely, but two Bosch bullets then landed on page 2 with no visible employer header — an information-hierarchy defect under `resume_reference.md` §3/§9. Kept the guarded break so every page's content sits under its own header. Remaining bottom whitespace is acceptable per §4 ("white space is acceptable when hierarchy and readability are strong") and the 2026-07-27 KB correction removing page-fill quotas.
- **Skills line relabelled** — the first line read "Languages" (programming) and the last "Languages spoken", which scanned as a duplicate. Now **Programming** and **Languages**.
- **Gates:** canonical validator **PASS** (0 warnings) · forbidden-token scan **PASS** (none of the seven non-canonical JD tools present) · scope-discipline scan **PASS** (no ownership verb paired with an org-scale object) · compile **PASS** (exactly 2 pages) · both pages visually inspected — no clipping, overlap, orphaned heading or bad break; umlauts render correctly.
- **Note for future runs:** the validator scans **raw file text including comments**. A header comment listing the banned tool names failed the gate on the first pass. Describe them; never name them.

## Edit History

### Edit 1 (2026-08-21): critique Tier 1 + one Tier 2
- **Source:** `critique_sbb_data_engineer_asset_mgmt.md` items 1 and 2
- **Changes (all MODIFY — no bullet added, removed or swapped):**
  1. BS-2 bullet: "giving analysis teams access to…" → "**tuning query performance for** analysis teams working with…". Canonical support: BS-2 3L variant, "optimized query performance and data availability".
  2. Pipelines skills line: added "query performance tuning".
  3. SW-3 bullet: added "**in an agile DevOps team**". Canonical support: SW-3 2L variant.
- **Not applied:** the API term (critique Tier 2 item 3). No canonical evidence that source onboarding used APIs — adding it would be vocabulary substitution. Needs user confirmation.

| Metric | Before | After | Delta |
|---|---:|---:|---|
| Page count | 2 | 2 | 0 |
| Bullets | 13 | 13 | 0 |
| Validator | PASS | PASS | 0 |
| Forbidden tokens | 0 | 0 | 0 |
| "query" occurrences | 0 | **2** | +2 |
| "agile" occurrences | 0 | **1** | +1 |
| Longest bullet (words) | 31 | 34 | +3 (still under the 35 flag) |

- **Verification:** validator PASS (0 warnings) · forbidden-token scan PASS · compile PASS at 2 pages · both pages re-rendered and inspected — no clipping, overlap, orphan or bad break.
- **Effect on scores:** Document Quality relevance/terminology moves 11→13, so **Document Quality 90 → 92/100**. Evidence Fit unchanged at 79 (edits do not change candidate-role fit).

## Status
- Fit gate: **DONE — PASS, Core, Evidence Fit 79/100**
- Phase 0: **DONE** (2026-08-21)
- Phase 1: **DONE** (2026-08-21) — user confirmed bundle, chose English with German-native stated, delegated framing
- Resume: **DONE** (2026-08-21, Edit 1 applied) — 13 bullets, 6 skills lines, 2 pages, all gates PASS
- Cover letter: NO (SBB waives it)
- Critique: **DONE** (2026-08-21) — Document Quality 92/100 after Edit 1; **no outstanding Tier 1 fixes**
- Application/outcome: **not submitted — held pending the comp answer**
- Next: call Andri Wienandts (+41 79 364 62 53) on the Anforderungsniveau K band and the seat’s design scope → then either apply the Tier 1 query-performance fix and submit, or close as NO-GO on comp
