feat(app): Swisscom Data Engineer - Geo Platform (internal, R-0006447), submitted

Internal application, submitted 2026-09-15. Evidence Fit 78, hard gate FAIL
(ArcGIS and FME required, never used), overridden by the user. Document
Quality 89, no Tier 1 findings. Channel Moderate: hiring manager Marianne
Temerowski was contacted first and encouraged the application - the first
time a named contact was used before applying. 2-page English resume, no
cover letter (internal).

KB CORRECTIONS FOUND ON THE WAY
- BS-8: geospatial work at Bosch (Oracle SDO_GEOMETRY; normalizing and
  transforming wafer data across coordinate reference systems; performance
  tuning) was missing from claims.json. The first assessment also wrongly
  assumed wafer data carries no CRS; the user corrected it. ArcGIS, FME, QGIS,
  PostGIS, GeoServer and GDAL are registered as forbidden.
- Swisscom was recorded as one undifferentiated current role. It is two
  units: ART B2B (past - Teradata DWH component ownership, Kubernetes, GitLab
  CI/CD, Kafka) and ART DPT, Team Offering (current - AWS data products with
  ODP-Flow, PySpark/Python, Glue, Iceberg, Athena, Airflow). The first build
  wrote the B2B ownership in present tense. Kafka and Kubernetes are now
  production-historical. Official internal title recorded (Engineer IV, III
  before Apr 2025); the unit switch date deliberately not.
- Confirmed: SW-1 migration in Python Glue jobs with ODP-Flow; SW-3
  multi-environment deployments; SW-7 relational data models. SW-3 narrowed:
  he worked with automated GitLab CI/CD and did not build it.
- Skills added: Apache Iceberg, relational data modelling, ODP-Flow, Oracle
  SDO_GEOMETRY, coordinate system transformation.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
dennisthiessenandClaude Opus 5 committed 2026-09-15 15:00:06 +02:00
1 parent 34299bce54
commit 881d904e68
12 files changed
+749 -23

No files matched your search

+2
View File
@@ -183,6 +183,8 @@ _See `config.md` for user-specific corrections. Add verified errors here as you
| Date | Correction | Files fixed |
|------|-----------|-------------|
| 2026-09-15 | **Swisscom was recorded as one undifferentiated current role, so past work read as present.** The first Geo Platform build said *"Own the ETL pipeline components"* and *"Owns ... Teradata"* in the summary - wrong. User-supplied: the tenure has two phases. **ART B2B** (first part, PAST): the legacy Teradata DWH - Fulfillment ETL component ownership (SW-2), Python on Kubernetes with GitLab CI/CD (SW-3), dashboards and analyses (SW-4), Kafka. **ART DPT, Team Offering** (CURRENT): migration and implementation of AWS data products on AWS, ODP-Flow, PySpark/Python, Glue, Iceberg, Athena, Airflow (SW-1, SW-6, SW-7). **Kafka and Kubernetes downgraded to `production-historical`**; SW-2/SW-3/SW-4 allowed verbs are now past tense; Apache Iceberg added as a canonical skill. Official internal title recorded: `Data, Analytics & AI Engineer IV` (III before Apr 2025), per the Oct 2025 Zwischenzeugnis. **The switch date is deliberately not recorded (user: not relevant) - never date the two units.** Any already-submitted package that presents Swisscom Kubernetes, Kafka or Teradata ownership as current stays as submitted history, but expect the question in interviews. **Lesson: the Zwischenzeugnis gives the whole tenure as one duty list, and a duty list says nothing about which duties are current - ask which phase each belongs to.** Same session, same shape: the Zeugnis's *"automation of CI/CD processes in GitLab"* overstated his part - the user clarified he **worked with** automated GitLab CI/CD rather than building it, and SW-3 now forbids claiming the automation. | `claims.json` (SWISSCOM org/title history; SW-1/2/3/4/6/7; Kafka, Kubernetes, Apache Iceberg; SW-3 CI/CD scope); `experience_swisscom.md` SW-3; Geo Platform resume |
| 2026-09-15 | **Geospatial evidence was missing from `claims.json` - the fifth canonical gap of the Ansible/Linux/Bash/Kotlin shape - and the first assessment compounded it with a wrong assumption about the domain.** Surfaced by the internal Swisscom posting *Data Engineer - Geo Platform* (R-0006447), which requires *"Fundierte Praxis mit ArcGIS und FME"*. User-confirmed: at Bosch he worked extensively with geospatial data in Oracle (**`SDO_GEOMETRY`**) and TIBCO Spotfire to visualize, locate and analyze wafer data, across **multiple coordinate reference systems** - normalizing and transforming between them was the main difficulty of the work, performance tuning the other. Recorded as **BS-8** plus two `allowed-with-context` skills. **The assessment first asserted that wafer coordinates carry no CRS and scored the geo lines on that basis; it was wrong and the user corrected it.** Boundary kept, not re-litigated: geographic/geodetic specifics (datums, map projections, EPSG, LV95) are not established. **ArcGIS, FME, QGIS, PostGIS, GeoServer and GDAL are user-confirmed never used** and are now registered `forbidden` so the scanner catches them. **Lesson: do not discount a domain bridge on an assumption about the domain - ask the discriminating question before scoring.** | `claims.json` (BS-8; 2 new skills; 6 forbidden skills) |
| 2026-09-05 | **The ten-application cohort's slot caps (7 Core / 2 Adjacent / 1 Stretch) were DROPPED by user decision.** Two reasons, both evidenced. **(a) The numbers were arbitrary and non-binding:** no derivation existed anywhere, and they were routed around whenever they bound - RUAG AI Engineer went in at Evidence Fit 74 with a hard-gate FAIL, and Citadel was recorded Adjacent when the strict reading said Stretch. **(b) The cohort was a confounded experiment:** it was built to test *fit class*, but the variable it silently held constant was *channel* - `cohort_tracker.py` reports **channel weak: 6, moderate: 0, strong: 0**. It therefore could not separate "Stretch does not convert" from "cold does not convert", and the evidence points away from fit class regardless: the highest-scoring package in the log (Snowflake, ~86) drew no reply in 80 days, while the single interview (SBB) came from a **cold Core submit whose resume was missing the three ATS literals** the session had flagged. **What was kept is the recording, not the rationing** - fit class, hard gate, channel, date, stage and outcome are still logged on every application, because that record is what makes patterns visible rather than re-derived. **Channel replaces the slot budget as the rationed variable: no application goes out cold when a named contact is published and reachable** - Marco Heinzen (RUAG), Andri Wienandts (SBB) and Per Olav Marthinsen (Aker BP) were all published, reachable and never used. **Fit class is now a preparation signal, not a spend limit:** 64/100 means know which two questions are coming, not do not apply. Hard gates and NO-GO triggers are unchanged. **Three real constraints survive independently and must not be dropped with the caps:** Google's 3-applications-per-rolling-30-days and 90-day same-role wait; not stacking a second cold application on one org while the first is pending; and the hours each package actually costs. Propagated to `application_strategy.md`, `shared_ops.md`, `session_file_template.md`, `cohort_tracker.py` (now prints counts, never counts-against-a-target) and `application_cohort.json`. | `application_strategy.md`; `shared_ops.md`; `session_file_template.md`; `cohort_tracker.py`; `application_cohort.json`; `CLAUDE.md` |
| 2026-09-05 | **`Bash` / shell scripting was missing from `claims.json` entirely - the third canonical gap of exactly this shape, after Ansible and Linux administration (both 2026-08-27).** It surfaced while building the NVIDIA Senior DevOps package: the JD names *"proficient scripting skills in Bash, Python, or Groovy"*, and ten years of Debian administration plus intensive Ansible work at Bosch plainly involve shell scripting - but the canonical file was silent, so under the evidence-first rule the skill was **unwritable** and was deliberately left off the resume. User-confirmed 2026-09-05 and added as `production-historical-and-personal-current`, `output: allowed`, with the same evidence basis as Linux administration (`BS-6` professional 2020-2022; `PP-3` personal and current). The note records two hard limits: it does **not** license **Groovy**, which stays unverified and forbidden, and it does **not** license systems-programming or kernel-level claims. **Systemic lesson, now three times over: the KB is data-engineering shaped and under-records ordinary infrastructure and operations skills. Before scoring any DevOps/platform/SRE JD, ask about ops evidence explicitly rather than trusting `claims.json` to be complete.** Edit note confirmed again: the file is compact inline JSON with CRLF - patch it as text; this change was 6 insertions with no reformatting. | `claims.json` (new skill); NVIDIA resume Languages line |
| 2026-09-04 | **This file asserted a shortlist that the JD does not support, and the 2026-08-31 scout triage had already caught it — but nothing was written here, so it survived into the next session exactly as that triage predicted.** The RUAG session block called **Senior DevOps Engineer C5I** *and* **Data Lakehouse / Senior Data Platform Engineer** "both already shortlisted and materially better fits… where his evidence is Direct rather than Adjacent." Only the first half held. The Data Lakehouse claim was a **title-match prior**: the live JD is **on-prem, MSSQL, Talend, SAP S/4HANA**, and `claims.json` has **0** for all three. RUAG then settled it itself — between the 08-31 and 09-04 scrapes the req was pulled and reposted as **"Senior Data Engineer (MSSQL) mit Data Lakehouse Perspektive"**, with the disqualifier moved into the title; its sibling *Senior Data Analyst & Data Scientist* was likewise reposted as *Senior BI Specialist (Qlik Sense)*. Required line reads *"mehrjährige Erfahrung im Aufbau und Betrieb von **on premise** Data Warehouse Lösungen"* — his stack is AWS cloud-native. Senior DevOps C5I re-verified live on the board 2026-09-04 and stays rank 1. **Systemic lesson: a triage finding that is not written into this log does not exist. Close the loop in the same session that finds it.** | `CLAUDE.md` (RUAG session block); `reports/2026-09-04.triage.md` |