Files
claude-resume-kit/resume_builder/templates/resume_template.tex
T
dennisthiessenandClaude Opus 5 34299bce54 fix: follow-up review corrections, BIS rejection, and a gitignore miss
Second-pass review of this session's work by another agent. It corrected several
real mistakes of mine and finished F06 gaps I had left open. Reviewed, verified
and committed as-is.

THE MISS THAT MATTERS
`job_scout/state/applications.json` — the authoritative application registry
introduced by F02 — was never actually tracked. `job_scout/state/*` in
.gitignore silently excluded it, so my checkpoint commit afdef7e claimed to add
it and did not. Only `application_cohort.json`, the GENERATED projection, was
version-controlled; the source of truth and the migration history backup were
not. .gitignore now carries explicit negations for both.

MY ERRORS, CORRECTED
- "kastellaun" was in CH_LOCATION_KEYWORDS. Kastellaun is in Rhineland-Palatinate.
  I took it from a Bundeswehr reserve listing and filed it under Switzerland -
  precisely the class of bug F12 existed to fix.
- The F12 fix only widened the keyword list; SmartRecruiters still discarded the
  structured country, which was the concrete case the review named
  (city=Baar, country=CH). The adapter now preserves it, and a COUNTRY_NAMES
  mapping gives country precedence over a bare town name.
- F15 was applied to Taleo and Prospective only. Greenhouse still wrote
  `updated_at` into `posted`; it now uses `published_at` and carries provenance.
- My negation guard `\b(no|not|...)\b[^.;]{0,60}$` was too loose - an unrelated
  "not" within 60 characters could mask a real claim. Tightened to require the
  negation to govern the term.
- F18's retirement of the macro-count rule missed "Four to six compact skills
  lines" in the workflow; removed now.

F06 GAPS I LEFT OPEN, NOW CLOSED
Date-format validation on education/employment periods (the 2035-99 case named
in the review), evidence-structure validation, referential integrity on evidence
source files, and the missing-identity KeyError.

F10 TAKEN FURTHER, AND RIGHTLY
I demoted the US-GPA fields to *_orientation_only. They are now removed
entirely, with grade_output_rule saying what to do instead: use the German grade
and scale, and if a recipient requires a US GPA, use THEIR method and record it.
Keeping a number derived by a non-recognised method invites its use.

Also: the Capgemini omit-preference now sits in experience_capgemini.md itself,
alongside the instruction not to fill or explain the intentional gap.

BIS BASEL - REJECTED 2026-09-11
jr100429, applied 2026-07-10, no interview, no reason given. Recorded in the
registry with a dated event and in the decision log; the "prep interview brief
when screening lands" next action is cleared. This also settles the 2026-09-04
observation that the req had vanished from the BIS board - it was a real
rejection, not just a closed posting.

VERIFICATION I RAN MYSELF BEFORE COMMITTING
49/49 tests. Validator PASS with 0 advisory warnings. Package manifest and
registry views current. All 12 F12 location cases still correct, including
Kastellaun now rejecting. The F05 counter-proof still catches all 9 violations.
SBB, NVIDIA, RUAG and Kdo Cy resumes still scan clean. Diffs are net-additive
across every reference file - the deletions are replacements, not losses.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qej5SBvhcbGXHwLqNWiskM
2026-09-11 23:57:06 +02:00

98 lines
6.2 KiB
TeX

% Default profile: International Tech resume for US-tech/FAANG-style roles in Europe.
% Copy this file and resume.cls into a new output folder. Generate only from
% resume_builder/canonical/claims.json plus normalized experience files.
\documentclass{resume}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
% LANGUAGE — this template is English and relies on TeX's default (English) hyphenation.
% For a GERMAN package you MUST add babel, or words break with English patterns
% (`Hal-bleiterfertigung`, `automa-tisierte`) — a native reader notices, and no overfull
% box warns you. See the 2026-08-27 KB Corrections Log entry.
% \usepackage[ngerman]{babel}
% \hyphenation{Trans-krip-ti-on} % ngerman still breaks this one wrongly
% Then check the breaks in the compiled PDF — a clean box count proves nothing here.
\usepackage[a4paper,left=0.65in,right=0.65in,top=0.55in,bottom=0.55in]{geometry}
\usepackage{xcolor}
\usepackage{hyperref}
\hypersetup{hidelinks}
\usepackage[version=4]{mhchem}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[R]{\small \thepage/\pageref{LastPage}}
\name{Dennis Thiessen, M.Eng.}
% Tailor this professional identity only within verified evidence.
\headline{Staff Data Engineer $\vert$ AWS Data Platforms $\vert$ Production ML Delivery}
% Optional when relevant: Swiss B permit; no employer sponsorship required.
\contactline{Bern, Switzerland $\vert$ \href{mailto:dennis@thiessen.io}{dennis@thiessen.io} $\vert$ +41 795 955 585 $\vert$ \href{https://linkedin.com/in/dennis-thiessen}{LinkedIn}}
\begin{document}
\begin{rSection}{Summary}
Staff data engineer with over ten years of production software experience across telecom, semiconductor manufacturing, broadcast technology and insurance. Owns business-critical pipeline components at Swisscom and previously integrated containerized ML inference into a continuously operating Bosch semiconductor fab.
\end{rSection}
\begin{rSection}{Technical Skills}
\skillline{Languages}{Python, SQL; Java and C\# (professional, historical); C++ and JavaScript (limited historical use)}
\skillline{Data}{Apache Kafka, Airflow, PySpark, Oracle, Teradata, Hadoop/Impala, data products, metadata and governance}
\skillline{Cloud and platform}{AWS (S3, Glue, Athena/Iceberg, Redshift), CloudFormation, Kubernetes, Docker, GitLab CI/CD, Ansible}
\skillline{Certifications}{AWS Solutions Architect -- Associate; Data Engineering with AWS; iSAQB CPSA-F; ITIL Foundation}
\end{rSection}
\begin{rSection}{Professional Experience}
\begin{rSubsection}{Swisscom (Schweiz) AG}{Oct 2023 -- Present}{Staff Data, Analytics \& AI Engineer (promoted from Senior, Apr 2025)}{Bern, Switzerland}
\item Own Fulfillment ETL pipeline components as Component Owner, covering production operation, data quality, governance, incidents and on-call obligations across Oracle, Kafka, Python and Teradata processing.
\item Migrated pipelines in the Fulfillment and Product Analysis domains onto Swisscom's AWS platform using Glue, Athena/Iceberg, Redshift, Airflow and CloudFormation while contributing to the wider migration programme.
\item Build governed data products and active metadata within Swisscom's company-wide Data Mesh, supporting discoverable data access for analytics and AI use cases.
\item Build and operate Python data applications on Kubernetes with GitLab CI/CD, covering containerized delivery from test through production operation.
\end{rSubsection}
\end{rSection}
% Default two-page balance: keep the most recent role on page 1 and start the
% second major evidence block on page 2. Recheck this break after tailoring.
\newpage
\begin{rSection}{Professional Experience (continued)}
\begin{rSubsection}{Robert Bosch Semiconductor Manufacturing Dresden GmbH}{Feb 2020 -- Dec 2022}{Senior Engineer, Data Analysis (Data \& ML Engineering)}{Dresden, Germany}
\item Integrated containerized ML inference with Docker, Kubernetes and Ansible into a continuously operating semiconductor-fab environment for automated image-based defect classification.
\item Served as Application Owner for analytics applications and upstream pipelines, defining SLOs and transition scope while coordinating vendors, user training and documentation.
\item Developed Python, Java and C\# data services over Oracle and Hadoop/Impala for defect-management and process-analysis teams.
\item Co-owned the TIBCO Spotfire environment, built C\# extensions and wafer-map visualizations, and co-presented the work at TIBCO Analytics Forum 2022.
\end{rSubsection}
\begin{rSubsection}{Fraunhofer CML}{Sep 2018 -- Oct 2019}{Research Software Engineer}{Hamburg, Germany}
\item Set up Jenkins CI/CD with quality gates, developed C\#/.NET software and built containerized microservices for maritime research platforms.
\end{rSubsection}
\begin{rSubsection}{Vizrt}{Jul 2017 -- May 2018}{Test Automation / DevOps Engineer}{Bergen, Norway}
\item Contributed Python and C++ engineering to a distributed video-transcoding backend and developed automated audio/video integration tests connected to CI/CD quality gates.
\end{rSubsection}
\begin{rSubsection}{Generali Deutschland Informatik Services GmbH}{May 2015 -- Jun 2017}{IT Consultant}{Hamburg, Germany}
\item Introduced BDD test automation through a proof of concept, held technical responsibility for the suite and Jenkins jobs, and trained colleagues in the Java community.
\end{rSubsection}
\end{rSection}
% EDUCATION LAYOUT (review finding F19, 2026-09-11)
% Keep the degree on the entry line and the institution on the line below. Cramming
% degree + focus + institution into one cell with a right-aligned date produces visible
% word spacing and mid-word breaks - seen in the SBB, NVIDIA and Aker BP packages.
% Grades and thesis only where they carry concrete relevance; see claims.json
% grade_output_rule, which keeps grades off by default.
\begin{rSection}{Education}
\compactentry{M.Eng. Computer Aided Engineering}{Apr 2012 -- Oct 2013}
Universität der Bundeswehr München; Software Design \& Engineering.
% Add thesis or grade only when relevant to this application, using the canonical facts.
\compactentry{B.Eng. Information and Telecommunication Technologies}{Oct 2009 -- Oct 2012}
Universität der Bundeswehr München.
\end{rSection}
\end{document}