feat(sbb): 2-page English resume for SBB Data Engineer, Bern

13 bullets, 6 skills lines, International Tech profile in English with an
explicit Languages line naming German as mother tongue (user instruction).
Framing leads on operate-and-own — Component Ownership with on-call and
governance answers the JD's "Betrieb" and "Verantwortung für Qualität und
Nachhaltigkeit" — and carries the Bosch industrial sensor-data thread
(defect records, wafer inspection images, PCM parameters) against the
role's vorausschauende-Wartung purpose. GenAI/LLM material dropped.

Two deviations from the approved 11-bullet plan, both deliberate:
Fraunhofer keeps one combined bullet rather than zero, because dropping the
role opens an unexplained 21-month gap between Vizrt and Bosch; and BS-1 is
added as a fifth Bosch bullet, HIGH priority in the bundle and directly
relevant to an employer running a 24/7 network.

Kept the guarded page break after testing the natural flow: without it page 1
fills, but two Bosch bullets land on page 2 with no visible employer header.
Hierarchy beats page-fill, and page-fill quotas were removed on 2026-07-27.

Gates: canonical validator PASS (0 warnings), forbidden-token scan PASS (none
of the seven non-canonical JD tools present), scope-discipline scan PASS,
compile PASS at exactly 2 pages, both pages visually inspected. SW-1 and SW-7
bullets also read by eye against their claims.json forbidden lists.

Not submitted — held pending the Anforderungsniveau K comp answer.

Also fixes a KB defect found during generation: bundle_data_engineer.md §S5's
cover-letter hook read "leading the migration of our legacy stack", a
full-ownership verb on a company-scale object that contradicts claims.json
SW-1 and its own narrative thread. Rewritten, warned inline, and recorded in
the CLAUDE.md corrections log. The other four bundles are unchecked.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WpMtWFtYkGkjSMShuTgXiB
This commit is contained in:
2026-08-21 16:56:48 +02:00
co-authored by Claude Opus 5
parent 787a1d937e
commit a64661e42a
5 changed files with 243 additions and 17 deletions
+2 -1
View File
@@ -157,7 +157,7 @@ _Update this section when starting/finishing a JD._
| Session | Status | Next Command | | Session | Status | Next Command |
|---------|--------|-------------| |---------|--------|-------------|
| SBB — Data Engineer (m/w/d), Asset Management Infrastrukturanlagen, **Bern** (Job ID 103755) | **PHASE 0 DONE 2026-08-21 — awaiting user confirmation.** Evidence Fit **79/100 (Core, lower end)**, hard gate **PASS** — the title-defining capability (build/operate cloud data pipelines and governed data products) is Direct and current, unlike the AWS FDE NO-GO. Best practical fit in the log: **Bern-based, German-language, no relocation, EU citizen + B permit**. Real strength cluster for the *vorausschauende Wartung* purpose — Bosch fab sensor/process data, ELK/Kafka anomaly detection, containerized ML inference, plus the condition-monitoring thesis. **Two open risks, both level/comp not fit:** (1) **Anforderungsniveau K** is a capped GAV band and the figures are not public — must be asked, not researched; (2) the seat reads **lateral or below** current Staff + Component Owner scope (same shape as the declined BKW). Named gaps: Snowflake, dbt, Argo Workflows, Helm, Power BI, Spring Boot, Angular — all non-canonical, survivable only because the JD prefixes the stack list with "z. B.". **Cover letter: NO — SBB explicitly waives it.** Channel: posting names **Andri Wienandts, People Leader, +41 79 364 62 53** — the first published warm entry point in the entire log. | Confirm role type/format/framing, then `/make-resume output/SBB_DataEngineer_AssetMgmt/session_sbb_data_engineer_asset_mgmt.md` Phase 1 | | SBB — Data Engineer (m/w/d), Asset Management Infrastrukturanlagen, **Bern** (Job ID 103755) | **RESUME DONE 2026-08-21 — not submitted, held pending the comp answer.** 2pp English resume, 13 bullets, validator PASS. Evidence Fit **79/100 (Core, lower end)**, hard gate **PASS** — the title-defining capability (build/operate cloud data pipelines and governed data products) is Direct and current, unlike the AWS FDE NO-GO. Best practical fit in the log: **Bern-based, German-language, no relocation, EU citizen + B permit**. Real strength cluster for the *vorausschauende Wartung* purpose — Bosch fab sensor/process data, ELK/Kafka anomaly detection, containerized ML inference, plus the condition-monitoring thesis. **Two open risks, both level/comp not fit:** (1) **Anforderungsniveau K** is a capped GAV band and the figures are not public — must be asked, not researched; (2) the seat reads **lateral or below** current Staff + Component Owner scope (same shape as the declined BKW). Named gaps: Snowflake, dbt, Argo Workflows, Helm, Power BI, Spring Boot, Angular — all non-canonical, survivable only because the JD prefixes the stack list with "z. B.". **Cover letter: NO — SBB explicitly waives it.** Channel: posting names **Andri Wienandts, People Leader, +41 79 364 62 53** — the first published warm entry point in the entire log. | Call Andri Wienandts on the K band + design scope, then `/critique output/SBB_DataEngineer_AssetMgmt/session_sbb_data_engineer_asset_mgmt.md` |
| AWS (AWS EMEA SARL, Switzerland Branch) — Senior Forward Deployed Engineer, Zürich (job 10504263) | **CLOSED — NO-GO 2026-08-18** at the Phase 0 gate. Evidence Fit **69/100** (Adjacent). Minimum-qual gate passed (all 4 Basic Quals Direct) but the *title-defining* capability — customer embedding — is a Gap that `claims.json` globally forbids claiming, and R2 multi-agent/retrieval is a second Gap. User declined: **69 is below the fit bar worth spending a package on.** Consistent with revealed behaviour — every application actually submitted scored **77.589**; nothing below 75 has ever been sent. **No cohort slot consumed (Adjacent stays 1/2).** Phase 0 analysis retained in the session file for reuse if a better-fitting AWS req appears. | Done — no package built | | AWS (AWS EMEA SARL, Switzerland Branch) — Senior Forward Deployed Engineer, Zürich (job 10504263) | **CLOSED — NO-GO 2026-08-18** at the Phase 0 gate. Evidence Fit **69/100** (Adjacent). Minimum-qual gate passed (all 4 Basic Quals Direct) but the *title-defining* capability — customer embedding — is a Gap that `claims.json` globally forbids claiming, and R2 multi-agent/retrieval is a second Gap. User declined: **69 is below the fit bar worth spending a package on.** Consistent with revealed behaviour — every application actually submitted scored **77.589**; nothing below 75 has ever been sent. **No cohort slot consumed (Adjacent stays 1/2).** Phase 0 analysis retained in the session file for reuse if a better-fitting AWS req appears. | Done — no package built |
| Google — Forward Deployed Engineer III, Google Cloud GTM (French, German), Zürich (req 78350205438567110) | **CLOSED — NOT PROCEEDING 2026-08-18.** Phase 0 was done (Evidence Fit 67/100, hard gate PASS) but user declined to proceed after **two Google rejections** (Merchant Data Science, Business Home): the bar is now that a Google req must fit *very* well to be worth a third attempt, and this one was Adjacent with an agent-orchestration Gap. **Frees the Adjacent cohort slot (back to 1/2).** Phase 1 never started. | Done — do not reopen without a materially stronger Google req | | Google — Forward Deployed Engineer III, Google Cloud GTM (French, German), Zürich (req 78350205438567110) | **CLOSED — NOT PROCEEDING 2026-08-18.** Phase 0 was done (Evidence Fit 67/100, hard gate PASS) but user declined to proceed after **two Google rejections** (Merchant Data Science, Business Home): the bar is now that a Google req must fit *very* well to be worth a third attempt, and this one was Adjacent with an agent-orchestration Gap. **Frees the Adjacent cohort slot (back to 1/2).** Phase 1 never started. | Done — do not reopen without a materially stronger Google req |
| SDU Center for Energy Informatics, Odense DK — PhD, Theme 2 Predictive Maintenance & Asset Management of Smart Energy Networks (job 4159) | **CLOSED — NOT PROCEEDING 2026-08-18.** Enquiry email to Prof. Bo Nørregaard Jørgensen (sent 2026-08-02) went unanswered for 16 days; user dismissed the idea. Genuine thesis fit (vibration condition monitoring, RBR+ANN hybrid) but the blockers were never the documents — 2 letters of recommendation 13 years out of academia, and DKK 37,075/mo ≈ CHF 56k against a 180k bar. Deadline was 2026-08-20. | Done — no further action | | SDU Center for Energy Informatics, Odense DK — PhD, Theme 2 Predictive Maintenance & Asset Management of Smart Energy Networks (job 4159) | **CLOSED — NOT PROCEEDING 2026-08-18.** Enquiry email to Prof. Bo Nørregaard Jørgensen (sent 2026-08-02) went unanswered for 16 days; user dismissed the idea. Genuine thesis fit (vibration condition monitoring, RBR+ANN hybrid) but the blockers were never the documents — 2 letters of recommendation 13 years out of academia, and DKK 37,075/mo ≈ CHF 56k against a 180k bar. Deadline was 2026-08-20. | Done — no further action |
@@ -188,6 +188,7 @@ _See `config.md` for user-specific corrections. Add verified errors here as you
| Date | Correction | Files fixed | | Date | Correction | Files fixed |
|------|-----------|-------------| |------|-----------|-------------|
| 2026-08-21 | **The data-engineer bundle carried the SW-1 scope violation it was supposed to prevent.** `bundle_data_engineer.md` §S5's cover-letter opening hook read "*while simultaneously leading the migration of our legacy stack to a cloud-native AWS architecture*" — a full-ownership verb on a company-scale object, directly contradicting `claims.json` SW-1 `forbidden` **and** point 2 of the narrative thread three lines below it. Live trap for every future data-eng cover letter. Rewritten to the scoped form plus an inline scope warning. **Check the other four bundles for the same pattern.** | `bundle_data_engineer.md` (§S5 hook + new warning) |
| 2026-07-27 | **SW-1 was not solo.** Swisscom AWS migration was written as "sole technical lead" / "Led migration of legacy stack." Dennis was primary engineer for **his own domains'** pipelines and a contributor to the wider programme. | `experience_swisscom.md` (role line + all 3 bullet variants + overclaiming warning), `config.md` | | 2026-07-27 | **SW-1 was not solo.** Swisscom AWS migration was written as "sole technical lead" / "Led migration of legacy stack." Dennis was primary engineer for **his own domains'** pipelines and a contributor to the wider programme. | `experience_swisscom.md` (role line + all 3 bullet variants + overclaiming warning), `config.md` |
| 2026-07-27 | **Security Champion is 2025/2026 only, and is a team role — not an award.** Source files claimed "3 consecutive years (2023/242025/26)." User has now corrected this twice. **Default is OMIT** unless the JD explicitly requires security/DevSecOps. | `experience_swisscom.md` SW-5, `achievement_reframing_guide.md`, `skills_taxonomy.md` (3 rows) | | 2026-07-27 | **Security Champion is 2025/2026 only, and is a team role — not an award.** Source files claimed "3 consecutive years (2023/242025/26)." User has now corrected this twice. **Default is OMIT** unless the JD explicitly requires security/DevSecOps. | `experience_swisscom.md` SW-5, `achievement_reframing_guide.md`, `skills_taxonomy.md` (3 rows) |
| 2026-07-29 | **Atlassian Compass is the metadata/lineage platform for Swisscom data products** (user-supplied). Previously the KB named no catalogue/lineage product at all, which read as a hard gap against data-governance JDs. Practitioner use only — never claim admin, rollout or ownership. Does NOT license claiming Purview/Collibra/Alation. | `claims.json` (SW-7 scope + skills entry), `experience_swisscom.md` SW-7 | | 2026-07-29 | **Atlassian Compass is the metadata/lineage platform for Swisscom data products** (user-supplied). Previously the KB named no catalogue/lineage product at all, which read as a hard gap against data-governance JDs. Practitioner use only — never claim admin, rollout or ownership. Does NOT license claiming Purview/Collibra/Alation. | `claims.json` (SW-7 scope + skills entry), `experience_swisscom.md` SW-7 |
@@ -0,0 +1,86 @@
% SBB — Data Engineer (m/w/d), Asset Management Infrastrukturanlagen (Job ID 103755)
% Profile: International Tech, English, 2 pages. Languages line names German as mother tongue
% per user instruction 2026-08-21.
% Generated from resume_builder/canonical/claims.json + normalized experience files.
% Seven tools named in the JD are non-canonical and are deliberately absent from this
% document; they are listed and bridged in the session file's Gap Assessment. Do not
% reintroduce them here, not even in a comment -- the validator scans raw file text.
\documentclass{resume}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[a4paper,left=0.65in,right=0.65in,top=0.55in,bottom=0.55in]{geometry}
\usepackage{xcolor}
\usepackage{hyperref}
\hypersetup{hidelinks}
\usepackage[version=4]{mhchem}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[R]{\small \thepage/\pageref{LastPage}}
\name{Dennis Thiessen, M.Eng.}
\headline{Staff Data Engineer $\vert$ Cloud Data Platforms $\vert$ Pipeline Ownership \& Governed Data Products}
\contactline{Bern, Switzerland $\vert$ \href{mailto:dennis@thiessen.io}{dennis@thiessen.io} $\vert$ +41 795 955 585 $\vert$ \href{https://linkedin.com/in/dennis-thiessen}{LinkedIn}}
\begin{document}
\begin{rSection}{Summary}
Staff data engineer who builds and runs production data pipelines and governed data products on AWS at Swisscom, with Component Ownership covering data quality, governance and on-call operation. Earlier work at Bosch centred on semiconductor manufacturing data -- defect records, wafer inspection images and electrical parameter tests -- and on anomaly detection over streamed logs.
\end{rSection}
\begin{rSection}{Technical Skills}
\skillline{Programming}{Python, SQL, PySpark; Java and C\# (professional, historical)}
\skillline{Pipelines and streaming}{Apache Kafka, Apache Airflow, ETL/ELT, data modelling, Oracle, Teradata, Hadoop/Impala}
\skillline{Cloud and platform}{AWS (S3, Glue, Athena/Iceberg, Redshift, Lambda, Step Functions), CloudFormation, Kubernetes, Docker, GitLab CI/CD, Ansible}
\skillline{Data products and analytics}{Data Mesh data products, active metadata and lineage (Atlassian Compass), data governance; TIBCO Spotfire (co-owned, C\# extensions), Grafana, Prometheus, ELK (proof of concept)}
\skillline{Certifications}{AWS Solutions Architect -- Associate; Data Engineering with AWS; iSAQB CPSA-F; ITIL Foundation}
\skillline{Languages}{German (native), English (fluent)}
\end{rSection}
\begin{rSection}{Professional Experience}
\begin{rSubsection}{Swisscom (Schweiz) AG}{Oct 2023 -- Present}{Staff Data, Analytics \& AI Engineer (promoted from Senior, Apr 2025)}{Bern, Switzerland}
\item Own Fulfillment ETL pipeline components as Component Owner, covering production operation, data quality, governance, incident handling and on-call duty across Oracle, Kafka, Python and Teradata processing.
\item Migrated pipelines in the Fulfillment and Product Analysis domains onto Swisscom's AWS platform using Glue, Athena with Apache Iceberg, Redshift, Airflow and CloudFormation, contributing to the wider company migration programme.
\item Build and model governed data products within Swisscom's company-wide Data Mesh, onboarding source systems and maintaining active metadata and lineage so downstream teams can find and reuse data.
\item Build and operate Python data applications on Kubernetes with GitLab CI/CD, covering automated tests, packaging and deployment from development through production operation.
\item Gather requirements with business stakeholders and deliver data products, analyses and dashboards; automate recurring technical processes and run root-cause analysis under 2nd- and 3rd-level support.
\end{rSubsection}
\end{rSection}
\newpage
\begin{rSection}{Professional Experience (continued)}
\begin{rSubsection}{Robert Bosch Semiconductor Manufacturing Dresden GmbH}{Feb 2020 -- Dec 2022}{Senior Engineer, Data Analysis (Data Engineering)}{Dresden, Germany}
\item Developed Python, Java and C\# data services over Oracle and Hadoop/Impala, giving analysis teams access to semiconductor manufacturing data -- defect-management records, wafer inspection images and electrical parameters from process control monitoring.
\item Served as Application Owner for analytics applications and upstream pipelines, defining SLOs, coordinating vendors and delivering user training and documentation.
\item Integrated containerized ML inference with Docker, Kubernetes and Ansible into a continuously operating semiconductor-fab environment, replacing manual image-based defect classification.
\item Built an anomaly-detection proof of concept on Elasticsearch, Logstash, Kibana and Kafka, with Grafana, Prometheus and Loki monitoring for continuously operating manufacturing systems.
\item Co-owned the TIBCO Spotfire environment, built C\# extensions and wafer-map visualizations, and co-presented the work at TIBCO Analytics Forum 2022.
\end{rSubsection}
\begin{rSubsection}{Fraunhofer CML}{Sep 2018 -- Oct 2019}{Research Software Engineer}{Hamburg, Germany}
\item Set up Jenkins CI/CD with quality gates, developed C\#/.NET software for a maritime crew-scheduling system and built containerized microservices for a research data-exchange platform.
\end{rSubsection}
\begin{rSubsection}{Vizrt}{Jul 2017 -- May 2018}{Test Automation / DevOps Engineer}{Bergen, Norway}
\item Developed automated audio/video integration and unit tests in Python and connected them as quality gates in the CI/CD pipeline.
\end{rSubsection}
\begin{rSubsection}{Generali Deutschland Informatik Services GmbH}{May 2015 -- Jun 2017}{IT Consultant}{Hamburg, Germany}
\item Introduced BDD test automation through a proof of concept, held technical responsibility for the suite and Jenkins jobs, and trained colleagues in the Java community.
\end{rSubsection}
\end{rSection}
\begin{rSection}{Education}
\compactentry{M.Eng. Computer Aided Engineering (Software Design \& Engineering), Universität der Bundeswehr München}{Apr 2012 -- Oct 2013}
Thesis at Tongji University, Shanghai: \textit{Development of a Web-Based Remote Fault Diagnosis System}; grade 1.0.
\compactentry{B.Eng. Information and Telecommunication Technologies, Universität der Bundeswehr München}{Oct 2009 -- Oct 2012}
\end{rSection}
\end{document}
@@ -0,0 +1,59 @@
\ProvidesClass{resume}[2026/07/27 Evidence-first professional resume]
\LoadClass[11pt,a4paper]{article}
\RequirePackage{enumitem}
\RequirePackage{ifthen}
\RequirePackage{lastpage}
\RequirePackage{parskip}
\RequirePackage{needspace}
\pagestyle{empty}
\setlength{\parindent}{0pt}
\def\@resumename{}
\def\@resumeheadline{}
\def\@resumecontact{}
\newcommand{\name}[1]{\def\@resumename{#1}}
\newcommand{\headline}[1]{\def\@resumeheadline{#1}}
\newcommand{\contactline}[1]{\def\@resumecontact{#1}}
\newcommand{\printresumeheader}{%
{\LARGE\bfseries \@resumename}\par
\vspace{0.15em}
\ifthenelse{\equal{\@resumeheadline}{}}{}{\@resumeheadline\par}
\vspace{0.1em}
{\small \@resumecontact}\par
\vspace{0.45em}
}
\AtBeginDocument{\printresumeheader}
\newenvironment{rSection}[1]{%
\vspace{0.35em}
{\bfseries #1}\par
\vspace{0.1em}\hrule\vspace{0.35em}
}{%
\vspace{0.2em}
}
% Arguments: employer, dates, formal title, location.
\newenvironment{rSubsection}[4]{%
\Needspace{6\baselineskip}%
{\bfseries #1}\hfill{\small #2}\par
{\itshape #3}\hfill{\itshape #4}\par
\vspace{0.1em}
\begin{itemize}[leftmargin=1.25em,label=\textbullet,itemsep=0.18em,topsep=0.15em,parsep=0pt,partopsep=0pt]
}{%
\end{itemize}
\vspace{0.25em}
}
\newcommand{\skillline}[2]{%
\textbf{#1:} #2\par
\vspace{0.08em}
}
\newcommand{\compactentry}[2]{%
\textbf{#1}\hfill #2\par
}
@@ -10,7 +10,7 @@
- Notable: SBB explicitly waives the cover letter for this req ("verzichten wir bei dieser Stelle auf ein Motivationsschreiben") - Notable: SBB explicitly waives the cover letter for this req ("verzichten wir bei dieser Stelle auf ein Motivationsschreiben")
## Application Decision ## Application Decision
- Audience profile: **Swiss/DACH** — German-language posting, Swiss federal employer, German-language process, `#einfachDu` informal register. This is the documented exception to the International Tech default. - 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** - Evidence Fit: **79/100**
- Fit class: **Core** (75+, no hard-gate failure) - 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. - 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.
@@ -138,15 +138,79 @@ This is survivable **only because the JD writes "z. B."**. The requirement as wr
- **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. - **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). - **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 (draft — Phase 1 will confirm) ## Resume Plan — CONFIRMED BY USER 2026-08-21
- Audience profile: **Swiss/DACH**, 2 pages, German or English **to be confirmed by the user**
- Summary: 23 lines — operate-and-build identity, sensor/asset-data thread ### User decisions
- Skills: 46 lines, canonical only — Python, SQL, PySpark, Kafka, Airflow, AWS, Kubernetes, Docker, GitLab CI/CD, Atlassian Compass, Java (with context) 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.
- Swisscom: SW-2, SW-1, SW-7, SW-3 (+ SW-4 for the business-collaboration line) 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.
- Bosch: BS-2, BS-4, BS-1 (+ BS-3 Application Ownership, BS-5 Spotfire for the BI bridge) - Languages line: **German (native) · English (fluent)**. Norwegian/Russian (basic) optional — recommend omitting as non-professional.
- Earlier: VZ-2 or GN-1 for the test/CI-CD line; GN-3 only if the Java thread needs reinforcing for RAMSI - **Never list French or Italian** (config.md KB correction — Swisscom Zeugnis boilerplate, not accurate).
- Total bullets: 1114, natural length 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.
- Impact evidence still needed: none blocking — all metrics are `unverified`, so the resume stays qualitative by design
### Format
- International Tech, **2 pages**, English, no photo, no demographic data
- Summary: 23 lines — operator identity plus the sensor/asset-data thread
- Skills: 46 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 45, 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 34, 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 1114 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* (201517). 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 ## 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. - **`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.
@@ -159,12 +223,26 @@ This is survivable **only because the JD writes "z. B."**. The requirement as wr
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. 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. 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: PENDING — `/critique output/SBB_DataEngineer_AssetMgmt/session_sbb_data_engineer_asset_mgmt.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.
## Status ## Status
- Fit gate: **DONE — PASS, Core, Evidence Fit 83/100** - Fit gate: **DONE — PASS, Core, Evidence Fit 79/100**
- Phase 0: **DONE** (2026-08-21) - Phase 0: **DONE** (2026-08-21)
- Phase 1: PENDING — awaiting user confirmation of (1) role type + bundle, (2) format and language, (3) framing strategy, and a decision on the comp question - Phase 1: **DONE** (2026-08-21) — user confirmed bundle, chose English with German-native stated, delegated framing
- Resume: PENDING - Resume: **DONE** (2026-08-21) — 13 bullets, 6 skills lines, 2 pages, all gates PASS
- Cover letter: NO (SBB waives it) - Cover letter: NO (SBB waives it)
- Critique: PENDING - Critique: PENDING
- Application/outcome: not submitted - Application/outcome: **not submitted — held pending the comp answer**
- Next: user confirmation → optional call to Andri Wienandts → `/make-resume` Phase 1 - Next: call Andri Wienandts (+41 79 364 62 53) on the Anforderungsniveau K band and the seat's design scope → then either `/critique` and submit, or close as NO-GO on comp
@@ -102,7 +102,9 @@ Python, Kafka, AWS (S3 · Glue · Athena · Redshift · Airflow · CloudFormatio
**Institution type:** Industry — tech company, scale-up, or enterprise platform team **Institution type:** Industry — tech company, scale-up, or enterprise platform team
**Opening hook pattern:** **Opening hook pattern:**
> "As a Staff Data Engineer at Swisscom — Switzerland's largest telco — I currently own the business-critical Fulfillment ETL pipelines that feed our data warehouse, while simultaneously leading the migration of our legacy stack to a cloud-native AWS architecture. [Tie to their specific need / JD signal]." > "As a Staff Data Engineer at Swisscom — Switzerland's largest telco — I currently own the business-critical Fulfillment ETL pipelines that feed our data warehouse, and I migrated my own domains' pipelines onto the company's AWS platform as part of its wider cloud migration programme. [Tie to their specific need / JD signal]."
> **Scope warning (corrected 2026-08-21).** This hook previously read "*leading the migration of our legacy stack*", which contradicts both `claims.json` SW-1 (`forbidden`: "led the migration of the legacy warehouse", "sole technical lead") and point 2 of the narrative thread directly below. Never pair a full-ownership verb with a company-scale object. See CLAUDE.md → Scope Discipline.
**Key narrative thread:** **Key narrative thread:**
1. **Ownership at scale** — Component Owner at Swisscom, Application Owner at Bosch: not just building pipelines, but running them in production with SLA accountability 1. **Ownership at scale** — Component Owner at Swisscom, Application Owner at Bosch: not just building pipelines, but running them in production with SLA accountability