feat(kb): extract Bosch, Swisscom and Vizrt evidence; record 6 discrepancies

All three read as primary documents. Uncontested facts are written in; six
conflicts between the documents and the KB are RECORDED AND LEFT OPEN, because
several are the user's call and one contradicts a memory entry that shaped
targeting.

New evidence
- Swisscom Zwischenzeugnis (Okt 2025) is unusually specific and now backs SW-1,
  SW-2 and SW-3 verbatim: component ownership for the ETL pipelines feeding the
  TERADATA DATA WAREHOUSE, Python on Kubernetes with GitLab CI/CD, AWS migration
  (S3, Glue, Athena, Redshift, Airflow), 2nd/3rd-level support and on-call.
- Bosch Zeugnis corroborates BS-1 directly: "Erarbeitung und Durchfuehrung von
  Integrationsstrategien fuer den Einsatz von Machine Learning Modellen in der
  24/7 Fertigungsumgebung". It also confirms the BS-4 PoC framing as the
  document's own wording rather than a policy hedge.
- NEW claim BS-7: "Fachliche Betreuung von Studierenden, auch im Rahmen von
  Abschlussarbeiten". Documented mentoring evidence, recorded NOWHERE before
  today, although "developing other engineers" is a recurring JD requirement -
  SBB asked for it explicitly and the answer had to lean on team roles instead.
- Vizrt's letter is thin: testing responsibilities only. It does NOT mention the
  transcoding backend, Python or C++, so VZ-1 is marked as resting on the user's
  statement rather than on the document.

Six open discrepancies (claims.json: open_discrepancies_2026_09_11)
- D1 HIGH: the Bosch Zeugnis says "Ingenieur" in "Fertigungstechnologie" 1/2/3.
  The words "Senior" and "Data Analysis" do not appear in it, yet the KB note
  claims official_title is "the formal combined string on the Zeugnis".
- D2: KB has a promotion at 2021-01; the Zeugnis shows department moves at
  2021-06 and 2022-03 and names no promotion.
- D3 HIGH: "Seit dem 01. September 2021 arbeitete Herr Thiessen in Teilzeit."
  Bosch was PART-TIME for its final ~16 months. Recorded nowhere. Tenure wording
  including "over ten years" was written without knowing this.
- D4 HIGH: the Swisscom Zeugnis says he uses ENGLISH, FRENCH and ITALIAN
  professionally on a regular basis. Memory user_international_mobility says
  "DE/EN only (no French)" - and that entry screened out French-speaking roles.
- D5 HIGH: Swisscom component ownership feeding a Teradata DWH, plus Fraunhofer
  MSSQL, undercut two premises of the RUAG "Senior Data Engineer (MSSQL)"
  rule-out. Talend and SAP S/4HANA are still 0 and may still carry it.
- D6 LOW: Vizrt letter says 01.07.2017-01.07.2018; KB has end 2018-05.

None of the six is resolved here. Do not quietly pick a side when writing a
document - ask.

Validator PASS, 37/37 tests.

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 21:33:32 +02:00
1 parent 2687d652de
commit d702c4bc0c
1 file changed
+95 -28
+95 -28
View File
@@ -174,10 +174,10 @@
{ {
"id": "SW-1", "id": "SW-1",
"evidence": { "evidence": {
"source": "unrecorded", "source": "Swisscom Zwischenzeugnis, Oktober 2025 (primary document, read 2026-09-11)",
"ownership": "unrecorded" "ownership": "individual within his domains; contributor company-wide"
}, },
"scope": "Primary engineer for pipelines in owned Fulfillment and Product Analysis domains; contributor to the wider company migration.", "scope": "Migration of legacy ETL pipelines and build-and-operate of cloud-native applications on AMAZON AWS (S3, Glue, Athena, Redshift, Apache Airflow) - verbatim from the Zwischenzeugnis. Primary engineer for pipelines in his owned Fulfillment and Product Analysis domains; contributor to the wider company migration.",
"allowed_verbs": [ "allowed_verbs": [
"migrated", "migrated",
"implemented", "implemented",
@@ -194,10 +194,10 @@
{ {
"id": "SW-2", "id": "SW-2",
"evidence": { "evidence": {
"source": "unrecorded", "source": "Swisscom Zwischenzeugnis, Oktober 2025 (primary document, read 2026-09-11)",
"ownership": "unrecorded" "ownership": "component - Komponentenverantwortung, documented"
}, },
"scope": "Component Owner for business-critical Fulfillment ETL pipelines, including operation, data quality, governance, incidents and on-call obligations.", "scope": "Komponentenverantwortung (component ownership) for the ETL pipelines that move business-critical Fulfillment data out of Oracle databases into the TERADATA DATA WAREHOUSE (DWH) and make it available for analysis - verbatim from the Zwischenzeugnis. Includes quality, security, data protection and compliance per Security and Data Governance, root-cause analysis on application problems, and 2nd/3rd-level support plus on-call (Rufbereitschaft).",
"allowed_verbs": [ "allowed_verbs": [
"own", "own",
"operate", "operate",
@@ -209,10 +209,10 @@
{ {
"id": "SW-3", "id": "SW-3",
"evidence": { "evidence": {
"source": "unrecorded", "source": "Swisscom Zwischenzeugnis, Oktober 2025 (primary document, read 2026-09-11)",
"ownership": "unrecorded" "ownership": "individual - implementation and operation"
}, },
"scope": "Build and operate Python data applications on Kubernetes with GitLab CI/CD within the team environment.", "scope": "Implementation, administration and operation of Python applications on KUBERNETES CLUSTERS, and automation of CI/CD processes in GITLAB - verbatim from the Zwischenzeugnis. Also drives automation of technical processes and workflows, and shapes and prioritises backlog items with the Product Owner.",
"allowed_verbs": [ "allowed_verbs": [
"build", "build",
"deploy", "deploy",
@@ -223,8 +223,8 @@
{ {
"id": "SW-4", "id": "SW-4",
"evidence": { "evidence": {
"source": "unrecorded", "source": "Swisscom Zwischenzeugnis, Oktober 2025 (primary document, read 2026-09-11)",
"ownership": "unrecorded" "ownership": "individual"
}, },
"scope": "Deliver data products, dashboards and analyses with internal B2B stakeholders and product owners; not external consulting or strategic-account delivery.", "scope": "Deliver data products, dashboards and analyses with internal B2B stakeholders and product owners; not external consulting or strategic-account delivery.",
"allowed_verbs": [ "allowed_verbs": [
@@ -324,10 +324,10 @@
{ {
"id": "BS-1", "id": "BS-1",
"evidence": { "evidence": {
"source": "user clarification 2026-09-11 on the 24/7 operating constraint; Ansible scope user-confirmed 2026-08-27", "source": "Bosch Arbeitszeugnis, Dresden 31.12.2022 (primary document, read 2026-09-11); operating constraint user-clarified 2026-09-11",
"ownership": "individual - integration and operation; model development is NOT his" "ownership": "individual - integration and operation; model development is NOT his"
}, },
"scope": "Designed and executed integration of containerized ML inference into a 24/7 semiconductor production environment; model-development ownership is not established. Toolchain includes Docker, Kubernetes and Ansible - Ansible use at Bosch was intensive (user-confirmed 2026-08-27) and extended to configuration management and infrastructure automation beyond this single integration, making it standalone Infrastructure-as-Code evidence. OPERATING CONSTRAINT, user-clarified 2026-09-11: the fab runs continuously, and a defect in the software could in the worst case halt production - an outcome that must never occur. That is a FAILURE-CONSEQUENCE constraint (blast radius of a bug), NOT a deployment-window constraint. Write it as 'a defect could have stopped production' or 'software whose failure would have halted a continuously operating fab'.", "scope": "Designed and executed integration of containerized ML inference into a 24/7 semiconductor production environment; model-development ownership is not established. Toolchain includes Docker, Kubernetes and Ansible - Ansible use at Bosch was intensive (user-confirmed 2026-08-27) and extended to configuration management and infrastructure automation beyond this single integration, making it standalone Infrastructure-as-Code evidence. OPERATING CONSTRAINT, user-clarified 2026-09-11: the fab runs continuously, and a defect in the software could in the worst case halt production - an outcome that must never occur. That is a FAILURE-CONSEQUENCE constraint (blast radius of a bug), NOT a deployment-window constraint. Write it as 'a defect could have stopped production' or 'software whose failure would have halted a continuously operating fab'. ZEUGNIS WORDING (primary, 2026-09-11): 'Erarbeitung und Durchfuehrung von Integrationsstrategien fuer den Einsatz von Machine Learning Modellen in der 24/7 Fertigungsumgebung' - devising AND executing integration strategies for ML models in the 24/7 manufacturing environment. This corroborates the integration-and-operation framing and the 24/7 context directly.",
"allowed_verbs": [ "allowed_verbs": [
"integrated", "integrated",
"containerized", "containerized",
@@ -345,10 +345,10 @@
{ {
"id": "BS-2", "id": "BS-2",
"evidence": { "evidence": {
"source": "unrecorded", "source": "Bosch Arbeitszeugnis, Dresden 31.12.2022 (primary document, read 2026-09-11)",
"ownership": "unrecorded" "ownership": "individual - development"
}, },
"scope": "Developed data services in Python, Java and C# over Oracle and Hadoop/Impala for internal analysis teams. Data types worked on (user-confirmed 2026-08-02): semiconductor fab sensor and process data -- defect management records, wafer inspection images, and electrical parameters from Process Control Monitoring (PCM). Relevant as genuine industrial sensor/asset-data experience. Bosch development was PRIMARILY PYTHON, with some Java and KOTLIN (backend, Ansible plugins, extensions) and C# for Spotfire plugins (user-confirmed 2026-09-11).", "scope": "Developed data services in Python, Java and C# over Oracle and Hadoop/Impala for internal analysis teams. Data types worked on (user-confirmed 2026-08-02): semiconductor fab sensor and process data -- defect management records, wafer inspection images, and electrical parameters from Process Control Monitoring (PCM). Relevant as genuine industrial sensor/asset-data experience. Bosch development was PRIMARILY PYTHON, with some Java and KOTLIN (backend, Ansible plugins, extensions) and C# for Spotfire plugins (user-confirmed 2026-09-11). ZEUGNIS WORDING (primary): 'Entwicklung von Applikationen zur Datenanalyse in C#, Python und Java' and 'Integration von Software-Komponenten in die IT-Architektur der Halbleiterproduktion'. NOTE: the Zeugnis names C#, Python and Java only - KOTLIN rests on the user's statement of 2026-09-11 and is not corroborated by this document. Record it as user-confirmed, not Zeugnis-confirmed.",
"allowed_verbs": [ "allowed_verbs": [
"developed", "developed",
"built" "built"
@@ -358,10 +358,10 @@
{ {
"id": "BS-3", "id": "BS-3",
"evidence": { "evidence": {
"source": "unrecorded", "source": "Bosch Arbeitszeugnis, Dresden 31.12.2022 (primary document, read 2026-09-11)",
"ownership": "unrecorded" "ownership": "application owner - documented"
}, },
"scope": "Confirmed Application Owner responsibilities for analytics applications and upstream pipelines, including SLOs, vendors, training and documentation. Named systems (user-confirmed 2026-09-11): TECHNICAL Application Owner for the KLA Defect Management System (DMS) and for TIBCO Spotfire - see BS-5.", "scope": "Confirmed Application Owner responsibilities for analytics applications and upstream pipelines, including SLOs, vendors, training and documentation. Named systems (user-confirmed 2026-09-11): TECHNICAL Application Owner for the KLA Defect Management System (DMS) and for TIBCO Spotfire - see BS-5. ZEUGNIS WORDING (primary): 'Application Owner fuer Softwaresysteme zur Datenanalyse in der Halbleiterfertigung' plus 'Kommunikation mit den Anbietern der Softwaresysteme sowie den internen Kunden'.",
"allowed_verbs": [ "allowed_verbs": [
"served", "served",
"owned", "owned",
@@ -373,10 +373,10 @@
{ {
"id": "BS-4", "id": "BS-4",
"evidence": { "evidence": {
"source": "unrecorded", "source": "Bosch Arbeitszeugnis, Dresden 31.12.2022 (primary document, read 2026-09-11)",
"ownership": "unrecorded" "ownership": "individual - proof of concept"
}, },
"scope": "Built an ELK/Kafka anomaly-detection proof of concept and monitoring; not a company-wide observability platform.", "scope": "Built an ELK/Kafka anomaly-detection proof of concept and monitoring; not a company-wide observability platform. ZEUGNIS WORDING (primary): 'Durchfuehrung eines POCs fuer das Logfile-Management mit ELK-Stack' - the PoC framing is confirmed by the document itself, not just by policy.",
"allowed_verbs": [ "allowed_verbs": [
"built", "built",
"implemented", "implemented",
@@ -474,8 +474,8 @@
{ {
"id": "VZ-1", "id": "VZ-1",
"evidence": { "evidence": {
"source": "unrecorded", "source": "user statement 2026-09-11 for the language split. NOT corroborated by the Vizrt Reference Letter, which describes testing responsibilities only and never mentions the transcoding backend, Python or C++.",
"ownership": "unrecorded" "ownership": "contributor"
}, },
"scope": "Contributed Python and C++ engineering to a distributed video-transcoding backend. Named broadcasters are product context, not direct delivery claims. Language split (user-confirmed 2026-09-11): PYTHON for the wrapper, C++ for the transcoding engine (FFmpeg). See feedback_cpp_emphasis - do not oversell C++; Python and Java are the stronger languages.", "scope": "Contributed Python and C++ engineering to a distributed video-transcoding backend. Named broadcasters are product context, not direct delivery claims. Language split (user-confirmed 2026-09-11): PYTHON for the wrapper, C++ for the transcoding engine (FFmpeg). See feedback_cpp_emphasis - do not oversell C++; Python and Java are the stronger languages.",
"allowed_verbs": [ "allowed_verbs": [
@@ -493,10 +493,10 @@
{ {
"id": "VZ-2", "id": "VZ-2",
"evidence": { "evidence": {
"source": "unrecorded", "source": "Vizrt Reference Letter, Bergen 09.05.2018 (primary document, read 2026-09-11)",
"ownership": "unrecorded" "ownership": "individual - test automation"
}, },
"scope": "Developed automated audio/video integration tests and connected quality gates to CI/CD.", "scope": "Developed automated test suites and connected them as quality gates in the CI/CD pipeline. ZEUGNIS WORDING (primary): took part in planning new features and code changes with a focus on testing, worked on shortening the feedback loop and time to market while meeting quality expectations, and developed automated test suites to improve quality and long-term maintainability. Part of the Coder team.",
"allowed_verbs": [ "allowed_verbs": [
"developed", "developed",
"automated", "automated",
@@ -630,6 +630,26 @@
"using it as evidence of datacenter or physical-infrastructure experience" "using it as evidence of datacenter or physical-infrastructure experience"
], ],
"metrics": "none; ~10 years of continuous operation is the only quantity, and it is self-reported" "metrics": "none; ~10 years of continuous operation is the only quantity, and it is self-reported"
},
{
"id": "BS-7",
"evidence": {
"source": "Bosch Arbeitszeugnis, Dresden 31.12.2022 (primary document, read 2026-09-11)",
"ownership": "individual - technical supervision, not line management"
},
"scope": "Fachliche Betreuung von Studierenden, auch im Rahmen von Abschlussarbeiten - technical supervision of students at Bosch, including their theses. Verbatim from the Arbeitszeugnis. This is DOCUMENTED mentoring evidence and was recorded nowhere before 2026-09-11, although 'developing other engineers' is a recurring JD requirement (SBB asked for it explicitly). It is technical supervision, NOT people management - do not present it as line management or as formal coaching.",
"allowed_verbs": [
"supervised",
"mentored",
"guided",
"supported"
],
"forbidden": [
"managed a team",
"line management",
"led engineers"
],
"metrics": "unverified - the number of students is not recorded"
} }
], ],
"skills": [ "skills": [
@@ -941,5 +961,52 @@
"note": "This is a DOCUMENT rule, not a conversation rule. If an interviewer asks directly what the first civilian role was, naming it plainly is correct - declining to name a former employer reads worse than a six-month stay.", "note": "This is a DOCUMENT rule, not a conversation rule. If an interviewer asks directly what the first civilian role was, naming it plainly is correct - declining to name a former employer reads worse than a six-month stay.",
"source": "User-confirmed 2026-08-27 after it regressed into the RUAG C5I draft; given a canonical home 2026-09-11 (review finding F05), having previously lived only in memory and config.md." "source": "User-confirmed 2026-08-27 after it regressed into the RUAG C5I draft; given a canonical home 2026-09-11 (review finding F05), having previously lived only in memory and config.md."
} }
] ],
"open_discrepancies_2026_09_11": {
"note": "Found by reading the primary Arbeitszeugnisse on 2026-09-11. NONE of these are resolved here: each needs the user's decision or a second document. Do not quietly pick a side when writing a document - ask.",
"items": [
{
"id": "D1-bosch-title",
"severity": "high",
"kb_says": "employment.BOSCH official_title 'Engineer / Senior Engineer, Data Analysis', with a note claiming this is 'the formal combined string on the Zeugnis'.",
"document_says": "The Bosch Arbeitszeugnis says 'Ingenieur' in the department 'Fertigungstechnologie', then 'Fertigungstechnologie 2' from 2021-06-01, then 'Fertigungstechnologie 3' from 2022-03-01. The words 'Senior' and 'Data Analysis' do NOT appear anywhere in it.",
"why_it_matters": "The KB note asserts a provenance the document does not support. The title may still be correct from a contract, org chart or LinkedIn - but not from this Zeugnis."
},
{
"id": "D2-bosch-promotion-date",
"severity": "medium",
"kb_says": "title_history: Data Engineer 2020-02 to 2021-01, Senior Data Engineer 2021-01 to 2022-12 (LinkedIn-confirmed, user-confirmed 2026-08-27).",
"document_says": "Department changes on 2021-06-01 and 2022-03-01, with no promotion named.",
"why_it_matters": "A 'Befoerderung <date>' line on a CV should match a document."
},
{
"id": "D3-bosch-part-time",
"severity": "high",
"kb_says": "nothing - part-time work is not recorded anywhere.",
"document_says": "'Seit dem 01. September 2021 arbeitete Herr Thiessen in Teilzeit.'",
"why_it_matters": "Bosch was PART-TIME for its final ~16 months. Any tenure or full-time-equivalent statement, including the 'over ten years' summary wording, was written without this. It does not necessarily change that phrasing, but it must be a conscious decision rather than an oversight."
},
{
"id": "D4-swisscom-languages",
"severity": "high",
"kb_says": "memory user_international_mobility: 'DE/EN only (no French/Mandarin)'.",
"document_says": "'Besonders hervorzuheben sind zudem seine sehr guten Sprachkenntnisse in Englisch, FRANZOESISCH und ITALIENISCH, welche er beruflich regelmaessig anwendet.'",
"why_it_matters": "This shaped targeting - French-speaking roles were screened out on the memory entry. Either the Zeugnis is generous or the memory is wrong. ASK before relying on either."
},
{
"id": "D5-swisscom-dwh",
"severity": "high",
"kb_says": "The RUAG 'Senior Data Engineer (MSSQL)' rule-out of 2026-09-04 treated on-premise data-warehouse work as absent.",
"document_says": "Swisscom: component ownership for ETL pipelines moving business-critical data into the TERADATA DATA WAREHOUSE (DWH). Fraunhofer: Microsoft SQL Server.",
"why_it_matters": "Two of that rule-out's premises are shakier than recorded. Talend and SAP S/4HANA remain genuinely 0 and may still carry it, but the DWH and MSSQL reasoning must not be repeated as written."
},
{
"id": "D6-vizrt-end-date",
"severity": "low",
"kb_says": "employment.VIZRT end 2018-05.",
"document_says": "'employed as a Test Automation Engineer in Vizrt from 01.07.2017 - 01.07.2018', in a letter dated 09.05.2018.",
"why_it_matters": "The letter may state a planned end date. Two months of tenure; low stakes, but a CV date should match a document."
}
]
}
} }