Files
claude-resume-kit/output/CitadelSecurities_PlatformEngineer/resume.cls
T
dennisthiessenandClaude Opus 5 89f9af5d89 feat(citadel): 2-page resume for Citadel Securities Platform Engineer
13 bullets, validator PASS, compiles to exactly 2 pages, rendered PDF
inspected clean - no clipping, orphans, header wrapping or bad breaks.

Built at the user's direction with the working-model question still
open. That block stands: if the Zurich seat is 5-day onsite, this
package does not get submitted. Recorded in the session file rather than
quietly dropped.

Three Phase 2 decisions the user left open, taken and marked reversible.
VZ-1 is in - it is the only canonical evidence pairing C++ with a
distributed backend and this JD names both, hedged verb preserved. A
Personal Project section carries PP-1, labelled three separate ways and
with no performance figure of any kind; PP-2 appears as supporting
coursework, never as a credential. Generali is kept against the Phase 1
"omit" recommendation, because dropping it opened an unexplained
May 2015 to Jun 2017 employment gap that costs more than the weak bullet.

Cadence sits at 7/12 (58%), above the section 7a guide of ~50%, down
from 75% after reshaping two bullets. The rest are legitimate technology
enumerations - "Oracle, Kafka, Python and Teradata", "Elasticsearch,
Logstash, Kibana and Kafka". The checker added yesterday cannot tell a
rhetorical rule-of-three from a list of tools actually used, which is a
real limitation of the pattern rather than a defect in this document.
Cutting them would delete accurate ATS-relevant names, which section 7a
itself forbids. Left deliberately.

Also walked into the trap the SBB .tex header warns about: the first
draft named the excluded non-canonical tools in a comment explaining why
they were excluded, and the validator errored on all three because it
scans raw file text. Comment rewritten without naming them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MHtzyTKBcg6BWhD5qFegtK
2026-08-26 08:42:46 +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
}