Files
claude-resume-kit/output/SBB_DataEngineer_AssetMgmt/resume.cls
T
dennisthiessenandClaude Opus 5 a64661e42a feat(sbb): 2-page English resume for SBB Data Engineer, Bern
13 bullets, 6 skills lines, International Tech profile in English with an
explicit Languages line naming German as mother tongue (user instruction).
Framing leads on operate-and-own — Component Ownership with on-call and
governance answers the JD's "Betrieb" and "Verantwortung für Qualität und
Nachhaltigkeit" — and carries the Bosch industrial sensor-data thread
(defect records, wafer inspection images, PCM parameters) against the
role's vorausschauende-Wartung purpose. GenAI/LLM material dropped.

Two deviations from the approved 11-bullet plan, both deliberate:
Fraunhofer keeps one combined bullet rather than zero, because dropping the
role opens an unexplained 21-month gap between Vizrt and Bosch; and BS-1 is
added as a fifth Bosch bullet, HIGH priority in the bundle and directly
relevant to an employer running a 24/7 network.

Kept the guarded page break after testing the natural flow: without it page 1
fills, but two Bosch bullets land on page 2 with no visible employer header.
Hierarchy beats page-fill, and page-fill quotas were removed on 2026-07-27.

Gates: canonical validator PASS (0 warnings), forbidden-token scan PASS (none
of the seven non-canonical JD tools present), scope-discipline scan PASS,
compile PASS at exactly 2 pages, both pages visually inspected. SW-1 and SW-7
bullets also read by eye against their claims.json forbidden lists.

Not submitted — held pending the Anforderungsniveau K comp answer.

Also fixes a KB defect found during generation: bundle_data_engineer.md §S5's
cover-letter hook read "leading the migration of our legacy stack", a
full-ownership verb on a company-scale object that contradicts claims.json
SW-1 and its own narrative thread. Rewritten, warned inline, and recorded in
the CLAUDE.md corrections log. The other four bundles are unchecked.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WpMtWFtYkGkjSMShuTgXiB
2026-08-21 16:56:48 +02:00

60 lines
1.4 KiB
OpenEdge ABL

\ProvidesClass{resume}[2026/07/27 Evidence-first professional resume]
\LoadClass[11pt,a4paper]{article}
\RequirePackage{enumitem}
\RequirePackage{ifthen}
\RequirePackage{lastpage}
\RequirePackage{parskip}
\RequirePackage{needspace}
\pagestyle{empty}
\setlength{\parindent}{0pt}
\def\@resumename{}
\def\@resumeheadline{}
\def\@resumecontact{}
\newcommand{\name}[1]{\def\@resumename{#1}}
\newcommand{\headline}[1]{\def\@resumeheadline{#1}}
\newcommand{\contactline}[1]{\def\@resumecontact{#1}}
\newcommand{\printresumeheader}{%
{\LARGE\bfseries \@resumename}\par
\vspace{0.15em}
\ifthenelse{\equal{\@resumeheadline}{}}{}{\@resumeheadline\par}
\vspace{0.1em}
{\small \@resumecontact}\par
\vspace{0.45em}
}
\AtBeginDocument{\printresumeheader}
\newenvironment{rSection}[1]{%
\vspace{0.35em}
{\bfseries #1}\par
\vspace{0.1em}\hrule\vspace{0.35em}
}{%
\vspace{0.2em}
}
% Arguments: employer, dates, formal title, location.
\newenvironment{rSubsection}[4]{%
\Needspace{6\baselineskip}%
{\bfseries #1}\hfill{\small #2}\par
{\itshape #3}\hfill{\itshape #4}\par
\vspace{0.1em}
\begin{itemize}[leftmargin=1.25em,label=\textbullet,itemsep=0.18em,topsep=0.15em,parsep=0pt,partopsep=0pt]
}{%
\end{itemize}
\vspace{0.25em}
}
\newcommand{\skillline}[2]{%
\textbf{#1:} #2\par
\vspace{0.08em}
}
\newcommand{\compactentry}[2]{%
\textbf{#1}\hfill #2\par
}