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
6.8 KiB
Total-Comp Worksheet — SBB vs Swisscom
✅ 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:
- Nach der Luft nach oben im Band beurteilen, nicht nach der Einstiegszahl.
- Das Gesamtpaket beziffern — Arbeitszeit, Ferien, Bürotage können den Lohn überstimmen.
1. The Swisscom baseline (fill from your Lohnausweis / total-rewards statement)
| Component | Amount CHF/yr | Notes |
|---|---|---|
| Base salary (12×) | ||
| 13th month | in-band or on top? | |
| Bonus / variable (actual, not target) | use a 3-year average, not the good year | |
| Employer pension contribution | from the Lohnausweis / PK statement, not the deduction you see on the payslip | |
| Other (allowances, RSU, phone, insurance) | ||
| Total all-in | ~140 000 | the figure of record in config.md |
| Weekly hours | ||
| Vacation days | ||
| Commute cost Thun↔Bern (what you actually pay today) | this becomes a saving on the SBB side |
2. The SBB side (fill live, on the call)
| Component | Amount CHF/yr | How to get it |
|---|---|---|
| Base, Anforderungsniveau K | Q1. Ask for the band and the likely entry point for your profile | |
| Regionalzulage Stufe 1 | stated on the posting; ask for the franken amount | |
| 13th month | ask explicitly whether it is inside or on top of the band figure | |
| Employer pension contribution (PK SBB) | ask for the employer %, and which plan/Sparplan | |
| Free GA | ⚠️ ~4 000 (2nd cl.) / ~6 500 (1st cl.) | verify the current list price yourself. Ask which class, and how it is taxed — a staff GA is declared on the Lohnausweis, so the net benefit is below list |
| Family international travel discount (FVP) | worth something real if you travel; hard to price — estimate honestly or score it qualitatively | |
| Kidz Care childcare subsidy | Q4. Scales on gross household income; bracket table is intranet-only. Assume well below the headline 90% | |
| Commute saving (from §1) | the GA makes Thun↔Bern free — count it once, here or in the GA line, not both | |
| Total all-in | ||
| Weekly hours | ||
| Vacation days | ||
| Pensum offered (60–100%) | a 90% option changes the CHF/hour maths materially |
3. Break-even
Compute this before the call and write the number here:
Minimum acceptable SBB base = ______ CHF
derived so that: base + 13th + Regionalzulage + employer pension + GA (net of tax) + commute saving ≥ Swisscom all-in
Then on the call you are comparing one number to one number.
Three traps that make this comparison lie:
- Base-to-base is meaningless here. The GA, the Regionalzulage and the pension employer share are all real money that never appears in a base-salary comparison. Conversely a Swisscom bonus is real money SBB will not match.
- Count the commute once. Free GA and "commute saving" are the same franken. Double-counting flatters SBB by four figures.
- The GA is taxed. It goes on the Lohnausweis, so the net value is below list price. Don't book the sticker number.
4. What this is really deciding
The band is capped and collectively bargained — there is no negotiation lever at the top of K the way there is on a private offer. So this is a yes/no against a fixed number, not an opening position.
Set your own line before the call:
- Clears break-even → the level question (Q2) becomes the deciding one, not the money.
- Below break-even but within ~10% → this is the Bern/Thun WLB-exception trade you already defined: below-bar comp accepted for a local seat with a real mission. Worth it only if Q2 comes back with genuine design scope. It has never been worth it for a below-level seat — that is why BKW was declined.
- Well below → decline cleanly, but still finish the call and ask everything. See §5.
5. Why the call is worth doing even if the number fails
- It is the first real data point on what the entire Bern/Thun local tier pays. RUAG, Swissgrid, BKW and BFH all sit in comparable Swiss public-sector/parapublic band structures. Whatever K turns out to be, it calibrates that whole lane — which is otherwise pure guesswork.
- It is interview practice with nothing at stake. NATO JWC (final interviews 2nd half of October), BIS Basel and Microsoft Principal FDE are all still live. You do not want one of those to be your first interview in years.
- Not wanting it makes you better at it. You can ask the blunt questions — band, scope, RAMSI share — without hedging, which is exactly how they should be asked anyway.
Record the K figure in this file afterwards regardless of outcome. It is reusable intelligence for the whole local tier.