feat(scout): automate Kdo Cy via Prospective API; close SBB and Kdo Cy
Scout - New `prospective` adapter for ohws.prospective.ch, wired up as `kdocy` (jobs.admin.ch, filtered to Kommando Cyber). jobs.admin.ch is an S3-hosted SPA that returns AccessDenied to any direct fetch, headless included, so the site cannot be scraped -- but the SPA reads a public, unauthenticated API. All 463 federal roles in ~2.4s, against RUAG's 35s Playwright scrape. - This board is richer than any other source: Lohnklasse, application deadline, a named contact per posting, and the full Aufgaben/Anforderungen body, so scoring runs against the JD text rather than the title. - Thread `deadline` through normalization, the markdown report and the JSON dump. A board with hard deadlines needs them on the row. - Match `verwaltungseinheit_*` by prefix: the sub-unit key is department specific (VBS 1083398, EFD 1083364) and hardcoding one breaks reuse. - MANUAL_CHECK entry for the Bundeswehr Reserve portal. The data is reachable (SAP E-Recruiting OData, SearchCategory 0022) but the portal actively blocks automation, and getting through needs UA spoofing plus masking navigator.webdriver. Not wired up by choice -- the operator-sanctioned Suchauftrag/job alert is the better channel. Reasoning is in the comment. Applications - SBB Data Engineer 103755: interviewed 2026-09-09, WITHDRAWN by the candidate 2026-09-11. Net downgrade on four axes (41h vs 40h, 25+Brueckentage vs 28+5, 3 vs 2 office days, and Anforderungsniveau K tops out ~145k against ~135k inside a band running to ~160k -- he would enter K at its ceiling merely to break even). The cohort's only interview, and it ended as his no, not theirs. - Kdo Cy DevOps Engineer III: REJECTED 2026-09-10, 14 days, no interview. Form letter with no diagnostic content. Identical on every recorded dimension to SBB (core / 79 / gate pass / DQ 92 / weak channel) and the two went opposite ways -- recorded as worth watching, not as evidence for the channel thesis. - Citadel row cleaned up: it claimed the cohort and decision-log entries were deliberately unwritten while its own status line read SUBMITTED. Both exist. The next-step cell still said "ask BEFORE building the package" two weeks after submission. Decision log - 69 RUAG rows -> 3 undecided. 63 title/family rule-outs, each noting that it is not a JD read, plus three that are: Test Manager C5I, System Engineer C5I, ICT Solution Architect. Guarded against the shared F/A-18 slug so one write could not silently swallow the other. Note: the K->L/Kader rule is SBB-specific and was deliberately narrowed -- Anforderungsniveau is SBB's own system and does not map onto jobs.admin.ch (Lohnklassen), RUAG or PostFinance. Thun-area employers sit outside the Bern salary logic entirely. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qej5SBvhcbGXHwLqNWiskM
This commit is contained in:
1 parent
a0ec2fedb5
commit
0d999ab21b
8 files changed
+1084
-23
No files matched your search
@@ -109,3 +109,297 @@ Not homework for them — homework for you:
|
||||
3. **If RAMSI turns out to be 40% Angular work: is it still a yes?**
|
||||
|
||||
Any one of those can be a no, and it is much better to know your own answer before they say the number than to improvise it on camera at 08:40.
|
||||
|
||||
---
|
||||
---
|
||||
|
||||
# PART II — Added 2026-09-08, the evening before
|
||||
|
||||
Sections 1–7 above are the strategy: what to ask, what to decide, what not to claim.
|
||||
**Sections 8–11 below are the rehearsal:** what the job is, how your record maps to it, and what to
|
||||
say when they ask. Same rules apply throughout — nothing here licenses a claim §4 forbids.
|
||||
|
||||
---
|
||||
|
||||
## 8. The job, in one page
|
||||
|
||||
**Team:** Asset Management Infrastrukturanlagen — the people responsible for SBB's *physical*
|
||||
infrastructure assets (track, switches, power supply, structures). You would be the data engineer
|
||||
serving that asset-management function, not a generic analytics seat.
|
||||
|
||||
**What the role actually does, from the six responsibility lines:**
|
||||
|
||||
1. **Build, operate and evolve data pipelines** on SBB's *Enterprise Analytics Plattform*, which the
|
||||
posting says explicitly **unites batch and streaming**.
|
||||
2. **Integrate heterogeneous sources via APIs and Kafka** — and the stated purpose of that integration
|
||||
is *"Analysen, Dashboards sowie **vorausschauende Wartung**"*. Predictive maintenance is named in
|
||||
the job description, not inferred.
|
||||
3. **Build data products and semantic models** on **Snowflake** and **Power BI**.
|
||||
4. **Evolve RAMSI** — a web application (**Java Spring Boot / Angular**), plus its reports and
|
||||
dashboards, for the Fachspezialist:innen.
|
||||
5. **Work directly with the business** to gather requirements and produce solutions that survive in
|
||||
operation (*"nachhaltige Lösungen im Betrieb"*).
|
||||
6. **Share knowledge and develop other data engineers** — explicitly *"die fachliche Entwicklung
|
||||
anderer Dateningenieur:innen zu fördern"*.
|
||||
|
||||
**What they say they want:** multi-year hands-on experience designing, building **and operating**
|
||||
cloud data platforms on a modern stack (ETL/ELT, DWH, streaming, orchestration — *z. B.* Snowflake,
|
||||
dbt, Helm, Argo Workflows, Kafka); the ability to design scalable, cost-efficient architectures and
|
||||
**judge trade-offs between latency, consistency and cost**; data modelling (star/snowflake), Power BI,
|
||||
advanced SQL and query-performance tuning; and Python software engineering including tests, CI/CD,
|
||||
packaging and deployment.
|
||||
|
||||
**Read the shape, not the tool list.** Four of the six responsibilities and three of the four
|
||||
technical requirements are about *building and running pipelines and data products in production, with
|
||||
the business, under operational accountability*. That is your job today, at a peer Swiss enterprise, in
|
||||
the same city. The named products are the surface. **The `z. B.` in front of the tool list is doing
|
||||
real work — they wrote "for example", not "must have".**
|
||||
|
||||
**Two honest asymmetries to hold in mind:**
|
||||
- **RAMSI (line 4) is the one responsibility on a stack you do not have.** It is one of six. Ask what
|
||||
share it is (§3 Q3) — do not assume it is small, and do not assume it is large.
|
||||
- **You still do not know what RAMSI is.** It is not publicly documented. The RAMS / EN 50126 reading
|
||||
is an *inference* and you must not present it as knowledge. Ask.
|
||||
|
||||
---
|
||||
|
||||
## 9. How your record maps — the honest ledger
|
||||
|
||||
Use this to know which ground is solid, not to recite. **Bold = say this out loud if the topic opens.**
|
||||
|
||||
| What they asked for | Your evidence | Call it |
|
||||
|---|---|---|
|
||||
| Build/operate/evolve pipelines on a cloud analytics platform, batch **and** streaming | **Component Owner for business-critical Fulfillment ETL across Oracle, Kafka, Python, Teradata — including on-call.** Migrated Fulfillment and Product Analysis pipelines onto AWS with Glue, Athena/Iceberg, Redshift, Airflow, CloudFormation. | **Direct — your strongest ground** |
|
||||
| Integrate sources via **APIs / Kafka** | Kafka in production at Swisscom today; ELK/Kafka anomaly-detection PoC at Bosch. | **Direct** |
|
||||
| **Operating**, not just building (*"nachhaltige Lösungen im Betrieb"*, quality, reliability) | Component Ownership: data quality, governance, incident handling, on-call, 2nd/3rd-level RCA. | **Direct — and it is the half most candidates are weak on. Lead with it.** |
|
||||
| Data products + **semantic models** | Build and model governed data products in Swisscom's company-wide Data Mesh; onboard source systems; maintain active metadata and lineage (Atlassian Compass). | **Direct in substance** |
|
||||
| …on **Snowflake** and **Power BI** | Not by name. Teradata, Oracle, Redshift, Athena/Iceberg; Spotfire co-owned with C# extensions. | **Gap on the names — see §10 Q4** |
|
||||
| Trade-offs: **latency / consistency / cost** | Real, but you must bring *one concrete example*. See §10 Q8 — do not improvise this one. | Direct **if prepared** |
|
||||
| Advanced SQL + **query-performance tuning** | Named explicitly in your Bosch bullet: tuned query performance over Oracle and Hadoop/Impala for analysis teams. | **Direct** |
|
||||
| Data modelling (star/snowflake schemas) | Data modelling is canonical and on the resume. Dimensional modelling *by that vocabulary* is thinner — speak to modelling for consumption and reuse, and don't over-claim Kimball fluency you can't back. | Direct, stated plainly |
|
||||
| **Python** SE: tests, CI/CD, packaging, deployment | Python apps on Kubernetes with GitLab CI/CD, automated tests, packaging, deployment through to production. Plus Vizrt test automation as CI quality gates, Generali BDD suite, Fraunhofer Jenkins. | **Direct — deep, and it spans 10 years** |
|
||||
| Orchestration (dbt / Argo / Helm named) | **Airflow** in production. Kubernetes current. **Do not claim Helm or Argo.** | Adjacent — substitute honestly |
|
||||
| Develop **other data engineers**, share knowledge | Application Owner at Bosch (user training, documentation, vendor coordination); trained colleagues in Generali's Java community; Security Champion; Leadership Cohort 2025. Team roles, not line management — say it that way. | **Adjacent, and genuinely evidenced** |
|
||||
| **Vorausschauende Wartung** | Bosch fab sensor/process data — defect records, wafer inspection images, PCM electrical parameters. ML inference containerised into a 24/7 fab. ELK/Kafka anomaly detection. M.Eng. thesis on vibration-based condition monitoring of CNC machine tools. | **Your differentiator. Nobody else on this req likely has all four.** |
|
||||
| **RAMSI** — Java Spring Boot / Angular | Java professional but historical; Spring Boot a PoC contribution ~a decade ago; **Angular absent**. | **Gap — see §10 Q7** |
|
||||
|
||||
**One-line version, if you only remember one thing:** *you already do the operating half of this job,
|
||||
in production, under on-call, in Bern — and you bring industrial condition-monitoring experience the
|
||||
generic data-engineering candidate does not.*
|
||||
|
||||
---
|
||||
|
||||
## 10. The answer bank — ordered by likelihood × damage
|
||||
|
||||
German is scripted **only where the wording itself carries risk.** Everywhere else you have the
|
||||
content and the order; you are a native speaker, so say it in your own words.
|
||||
|
||||
---
|
||||
|
||||
### Q1 · "Was sind deine Lohnvorstellungen?" — asked *of you*, probably early
|
||||
**⚠ The single highest-risk moment in the call.**
|
||||
|
||||
The trap: K is a **capped, collectively-bargained band**. There is no lever at the top of it. Name
|
||||
180k and you look mispriced and the conversation cools. Name a low figure and you have anchored
|
||||
yourself *under* a ceiling that was already fixed. **Both directions lose. So don't name a number —
|
||||
flip it into the band question you were going to ask anyway.**
|
||||
|
||||
> *"Ihr habt die Stelle ja transparent im Anforderungsniveau K mit Regionalzulage Stufe 1
|
||||
> ausgeschrieben — insofern bewerbe ich mich bewusst in ein publiziertes Band hinein. Könnt ihr mir
|
||||
> die Bandbreite nennen und sagen, wo jemand mit meinem Profil typischerweise einsteigt? Dann kann ich
|
||||
> das konkret einordnen."*
|
||||
|
||||
This is not evasive — it is the *correct* answer to a published-band role, and it lands your §3 Q1 for
|
||||
free. If they push for a figure anyway: *"Ich komme aus einer Staff-Rolle in der Privatwirtschaft, das
|
||||
Niveau kennt ihr. Mir ist wichtiger zu verstehen, wo K liegt, bevor ich eine Zahl in den Raum stelle."*
|
||||
|
||||
**Then stop talking.** Let them answer. Write the number down (§ worksheet).
|
||||
|
||||
---
|
||||
|
||||
### Q2 · "Du bist aktuell Staff Engineer und Component Owner — warum diese Stelle?"
|
||||
**The overqualification question. Near-certain, and HR hears "flight risk".**
|
||||
|
||||
They are asking: *will you be bored in a year and leave?* Answer the risk, not the flattery.
|
||||
|
||||
Ground it in the work, in this order:
|
||||
1. **The domain is the pull.** Physical infrastructure assets with condition data and a visible public
|
||||
consequence — that is the subject of your master's thesis and of your Bosch years, and it is not
|
||||
what you work on today. Today the data is telco fulfilment.
|
||||
2. **The operating half is what you're good at and want to keep.** Not a step away from ownership —
|
||||
the posting explicitly wants someone to carry quality and sustainability in Betrieb.
|
||||
3. **Bern.** You live in Thun. This is the cleanest practical fit in your whole search.
|
||||
4. **Then turn it into your Q2 (§3):** *"Deswegen interessiert mich auch, wie viel Design-Verantwortung
|
||||
die Rolle trägt — trägt sie die Architektur für die Pipelines und das semantische Modell, oder wird
|
||||
die an anderer Stelle gesetzt?"*
|
||||
|
||||
That last move is the good one: it converts a defensive question into your most important diligence
|
||||
question, and it signals you are thinking about scope rather than title.
|
||||
|
||||
**Do not say:** that you expect a pay cut, that you are frustrated at Swisscom, or anything that reads
|
||||
as "I'll take anything in Bern."
|
||||
|
||||
---
|
||||
|
||||
### Q3 · The 19-month hole on the CV: Oct 2013 → May 2015
|
||||
**⚠ A Swiss HR first round walks the CV chronologically. This will be asked, and nothing on the page
|
||||
you submitted explains it.** Education ends Oct 2013; Generali starts May 2015. There is no Bundeswehr
|
||||
entry on the resume at all.
|
||||
|
||||
The honest fill is a *strength*, and it is two parts:
|
||||
|
||||
1. **Officer service ran to November 2014.** You were an officer in the Bundeswehr from 2008 until Nov
|
||||
2014 — Second Lieutenant at separation — and the M.Eng. at Universität der Bundeswehr München was
|
||||
taken *during* that service. That explains both the gap and the degree institution in one sentence.
|
||||
2. **Then a first civilian role from Nov 2014 to May 2015**, before Generali.
|
||||
|
||||
> *"Nach dem Master war ich noch bis November 2014 als Offizier bei der Bundeswehr — das Studium an der
|
||||
> Universität der Bundeswehr lief ja innerhalb der Dienstzeit. Danach bin ich in die Privatwirtschaft
|
||||
> gewechselt."*
|
||||
|
||||
**Important boundary:** the standing rule that keeps Capgemini off your documents is a **document**
|
||||
rule. It does not bind a live conversation. If they ask directly what the first civilian role was,
|
||||
**name it plainly** — a six-month first role reads as completely normal; visibly declining to name a
|
||||
former employer reads badly. Do not volunteer it; do not conceal it.
|
||||
|
||||
---
|
||||
|
||||
### Q4 · "Snowflake? dbt? Power BI?" — the named-tool gap
|
||||
Your resume contains none of these three words and they read it anyway and invited you. **Someone made
|
||||
a judgement.** Answer from that position — a tooling difference, not a confession.
|
||||
|
||||
> *"Nicht unter dem Namen. Ich habe dieselbe Art von Arbeit auf Teradata und Oracle gemacht und dann
|
||||
> auf AWS — Glue, Athena mit Iceberg, Redshift — mit Airflow für die Orchestrierung. Die Modellierungs-,
|
||||
> Test- und Lineage-Disziplin ist dieselbe; die Syntax ist das, was ich mir aneigne."*
|
||||
|
||||
- **Power BI:** *"Ich habe eine BI-Plattform mitverantwortet, nicht nur konsumiert"* — TIBCO Spotfire at
|
||||
Bosch, C# extensions and wafer-map visualisations, co-presented at the TIBCO Analytics Forum 2022.
|
||||
- **Argo / Helm:** Airflow is the honest orchestrator substitute; Kubernetes is current and in
|
||||
production. **Do not claim Helm or Argo.**
|
||||
|
||||
**Then stop.** Do not over-explain a gap they have already decided to look past.
|
||||
|
||||
---
|
||||
|
||||
### Q5 · "Erzähl uns etwas über dich" — the opener
|
||||
90 seconds, not five minutes. Content and order (your own words):
|
||||
|
||||
1. **Now:** Staff Data, Analytics & AI Engineer at Swisscom in Bern; Component Owner for
|
||||
business-critical fulfilment pipelines — build *and* run, including on-call.
|
||||
2. **The move that shows range:** migrated his domains' pipelines onto AWS; today builds governed data
|
||||
products in the company-wide Data Mesh. *(Scope discipline: "my domains", "within Swisscom's Data
|
||||
Mesh" — never "I built the Data Mesh".)*
|
||||
3. **Before that:** Bosch semiconductor Dresden — industrial sensor and process data, ML inference into
|
||||
a fab that cannot stop, anomaly detection on streamed logs.
|
||||
4. **The hook to this role:** *"Und der Grund, warum genau diese Stelle: mein Master war
|
||||
schwingungsbasierte Zustandsüberwachung von Werkzeugmaschinen. Zustandsdaten von physischen Anlagen
|
||||
sind der Bereich, aus dem ich komme und in den ich zurück will."*
|
||||
5. **Practical:** German native, lives in Thun, EU citizen with B permit, no relocation needed.
|
||||
|
||||
---
|
||||
|
||||
### Q6 · "Warum SBB? / Warum weg von Swisscom?"
|
||||
**Make it about the work, never the band.**
|
||||
|
||||
Toward SBB: physical infrastructure, asset condition data, a visible public consequence, a Bern seat,
|
||||
and a technical brief that sits on your actual thesis domain. If you want a specific, credible detail:
|
||||
SBB is procuring **up to three new-generation infrastructure diagnostic vehicles** (EU tender
|
||||
235005-2026) — more diagnostic vehicles means more sensor volume, which is exactly what this pipeline
|
||||
seat absorbs. That shows you looked.
|
||||
|
||||
Away from Swisscom: keep it short, forward-looking, and **non-negative**. Telco fulfilment data is not
|
||||
the domain you want to spend the next decade in. Nothing about pay, nothing about people.
|
||||
|
||||
---
|
||||
|
||||
### Q7 · "Wie sieht es mit Java, Spring Boot und Angular aus?" (RAMSI)
|
||||
Do not oversell, do not apologise. Then turn it into your §3 Q3.
|
||||
|
||||
> *"Java ist bei mir professionell, aber historisch — bei Bosch Datenservices in Java, bei Generali die
|
||||
> Java-Community. Spring Boot war ein PoC-Beitrag vor rund zehn Jahren. Angular habe ich nicht. Was ich
|
||||
> gern verstehen würde: Was ist RAMSI genau, und welchen Anteil der Rolle macht die Weiterentwicklung
|
||||
> der Webanwendung aus?"*
|
||||
|
||||
**Do not assert what RAMSI is.** You do not know. Asking is the correct move and also gets you the
|
||||
answer you need for decision 3 in §7.
|
||||
|
||||
---
|
||||
|
||||
### Q8 · "Wie beurteilst du Trade-offs zwischen Latenz, Konsistenz und Kosten?"
|
||||
A named requirement and a genuine strength — **but you must arrive with one concrete story.** Do not
|
||||
improvise this. Pick one before 08:30, from Fulfillment ETL or the AWS migration:
|
||||
|
||||
- Where you chose **batch over streaming** because the consumer's decision cycle didn't justify the
|
||||
operational cost, or
|
||||
- Where you **accepted staleness** to cut cost, or
|
||||
- Where **on-call reality** drove a design choice — the thing you own at 03:00 shapes what you build.
|
||||
|
||||
Structure: *situation → the options → what you chose and the reason → what it cost you.* Naming the
|
||||
downside is what makes it credible.
|
||||
|
||||
**No invented numbers.** Nearly everything in your record is `metrics: unverified`. Describe the
|
||||
decision, not a benchmark.
|
||||
|
||||
---
|
||||
|
||||
### Q9 · "Erfahrung mit Predictive Maintenance?"
|
||||
**Your differentiator — lead with production, close with the thesis.**
|
||||
|
||||
1. Bosch: fab sensor and process data — defect-management records, wafer inspection images, PCM
|
||||
electrical parameters.
|
||||
2. ELK/Kafka anomaly-detection PoC with Grafana/Prometheus/Loki monitoring on continuously operating
|
||||
systems.
|
||||
3. Containerised ML inference into 24/7 production, replacing manual image-based defect classification.
|
||||
*(Integration and operation — **not** model development. Never claim you trained the model.)*
|
||||
4. Thesis: vibration-based condition monitoring of CNC machine tools; rule-based reasoning plus a
|
||||
7-10-3 feed-forward ANN.
|
||||
|
||||
**⚠ Thesis caveat, hold this line:** it is a **methods prototype**, never a validated system. No real
|
||||
operational data. **No accuracy figures exist.** PSO was *surveyed only*, never implemented. The
|
||||
throughput figure is barred. Frame it as genuine method familiarity and motivation — not as a result.
|
||||
If asked how well it worked: *"Das war ein Methodenprototyp, kein validiertes System — belastbare
|
||||
Genauigkeitszahlen gibt es dafür nicht."* That answer makes you look more rigorous, not less.
|
||||
|
||||
---
|
||||
|
||||
### Q10 · "Wie förderst du andere Dateningenieur:innen?"
|
||||
Real, but frame as **team roles, not line management**: Application Owner at Bosch (user training,
|
||||
documentation, vendor coordination); trained colleagues in Generali's Java community; Security Champion
|
||||
for the team at Swisscom (2025/2026); elected to the Swisscom Leadership Cohort 2025. Have **one**
|
||||
concrete example of lifting a specific colleague — that beats the list.
|
||||
|
||||
---
|
||||
|
||||
### Q11 · The routine HR set — decide these tonight, don't improvise
|
||||
**Three facts only you can supply. Write them down before the call:**
|
||||
|
||||
- **Kündigungsfrist at Swisscom:** ______ *(do not guess on the call)*
|
||||
- **Earliest realistic start:** ______ *(posting says "ab sofort oder nach Vereinbarung")*
|
||||
- **Pensum you want:** ______ — the posting says **60–100%** and HR *will* ask. A 90% option changes the
|
||||
CHF/hour maths materially (see worksheet). Have a position.
|
||||
|
||||
Also likely, and low-risk if you don't ramble:
|
||||
- **Stärken:** ownership of things in production; translating between business and engineering; calm
|
||||
in incidents. Give an example, not adjectives.
|
||||
- **Schwächen:** pick a real one with a correction in motion. *Not* "I work too hard." A defensible
|
||||
honest one here: named-product breadth — you go deep on a stack and pick up new tooling on the job
|
||||
rather than collecting tools. That is true and it pre-empts Q4.
|
||||
- **Arbeitsweise / agil:** agile DevOps team, GitLab CI/CD, on-call rotation, requirements straight
|
||||
from business stakeholders.
|
||||
- **Konflikt / Fehler:** have one story where something you owned broke and you carried the RCA. On-call
|
||||
gives you real material — use it.
|
||||
- **"Hast du Fragen an uns?"** → **your §3 Q1–Q4.** Do not let this fall off the end at minute 44.
|
||||
|
||||
---
|
||||
|
||||
## 11. The 45 minutes, budgeted
|
||||
|
||||
Two people, 45 minutes. Roughly: **~5 min intros → ~25 min them asking → ~10 min you asking → ~5 min
|
||||
logistics.** Your four questions in §3 need that 10-minute window; if the conversation is running long,
|
||||
**ask Q1 (the band) and Q2 (scope) first** — those two decide whether this is real, and they are the
|
||||
ones you will not get a cheap second shot at before the in-person round.
|
||||
|
||||
**Final reminders:** match the **du** register from the first sentence (`#einfachDu`). Expect German;
|
||||
don't be thrown if they open in English — your resume was submitted in English. Be on Teams early and
|
||||
test audio tonight. And keep §4's two prohibitions in your head the whole time: **no tool claimed that
|
||||
isn't yours, no number that isn't verified.**
|
||||
Reference in new issue
Block a user