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:
dennisthiessenandClaude Opus 5 committed 2026-09-11 17:30:46 +02:00
1 parent a0ec2fedb5
commit 0d999ab21b
8 files changed
+1084 -23

No files matched your search

@@ -1,8 +1,45 @@
# Total-Comp Worksheet — SBB vs Swisscom
**Purpose:** compute the break-even *before* the call on 2026-09-09, so that when they name a figure you know immediately whether it clears — instead of working it out afterwards.
**Honesty note on this file:** I could not retrieve the Anforderungsniveau K figures — they are not public, which is exactly why Q1 exists. Anything below marked ⚠️ is an estimate or a recollection you should verify yourself rather than trust. The Swisscom column is mostly blank because I only hold the ~140k all-in headline; you know the split.
> ## ✅ ABGESCHLOSSEN 2026-09-11 — Bewerbung zurückgezogen
>
> **Gespräch 09.09.** (HR + Scrum Master). **Bewerbung am 11.09. vom Kandidaten zurückgezogen**, nachdem
> SBB bestätigt hat, dass bei der Einstufung kein Spielraum besteht.
>
> ### Die Zahlen, für die §5 dieses Dokuments angelegt wurde — jetzt hart, nicht geschätzt
>
> | | Swisscom heute | SBB |
> |---|---|---|
> | Wochenarbeitszeit | 40 h | 41 h |
> | Ferien | 28 Tage + 5 (Zeitautonomie) | 25 Tage + Brückentage |
> | Büropräsenz | 2 Tage/Woche | 3 Tage/Woche |
> | Position im Band | ~135k in einem Band **bis ~160k** | **Niveau K endet bei ~145k** |
>
> **Der entscheidende Punkt war nicht die absolute Zahl, sondern die Luft nach oben.** Er hätte bei K am
> Anschlag einsteigen müssen, nur um auf null herauszukommen — und hätte dann keinen Spielraum mehr gehabt.
> In seinem aktuellen Band liegen noch ~25k über ihm.
>
> ⚠ **Qualitative Red Flag, nicht durch Geld heilbar:** Er sprach nur mit HR und dem Scrum Master und hat
> dabei **Schwierigkeiten im Team** wahrgenommen.
>
> ### 🎯 Was übertragbar ist — und was ausdrücklich nicht
>
> **Nur für SBB:** Anforderungsniveau K ist zu niedrig; bei SBB auf **Niveau L und/oder Kader** zielen.
> **K endet bei ~145k — eine SBB-Zahl, kein Tier-Anker.**
> Das SBB-Lohnsystem ist öffentlich: <https://company.sbb.ch/de/jobs-karriere/arbeitgeberin/lohn.html>
>
> ⚠ **Nicht verallgemeinern** (Nutzer, 11.09.2026). *Anforderungsniveau* ist **SBBs eigenes** System und lässt
> sich nicht auf andere Arbeitgeber übertragen: **jobs.admin.ch / Schweizer Armee nutzt Lohnklassen**, RUAG ein
> eigenes Schema, PostFinance publiziert Bänder pro Inserat.
>
> ⚠ **Thun und Umgebung (RUAG, Kdo Cy) fallen ausdrücklich NICHT unter diese Logik.** Der Arbeitsweg ist
> praktisch null, und die Benefits können deutlich besser sein, als ein Lohnband zeigt — er nennt namentlich
> die **Übernahme von Kinderbetreuungskosten bei der Schweizer Armee / Kdo Cy als möglicherweise weit
> grosszügiger** (unbestätigt — **nachfragen, nicht annehmen**). **Eine Stelle im Raum Thun nie allein am
> Band ablehnen, bevor die Benefits beziffert sind.**
>
> **Was arbeitgeberübergreifend gilt:**
> 1. **Nach der Luft nach oben im Band beurteilen**, nicht nach der Einstiegszahl.
> 2. **Das Gesamtpaket beziffern** — Arbeitszeit, Ferien, Bürotage können den Lohn überstimmen.
---