RUAG C5I - AI Engineer C5I (Thun, app ID 18027): SUBMITTED 2026-08-27. Evidence Fit 74/100, fit class Stretch, title-capability hard gate FAIL (R1 build/operate the AI-LLM platform and R2 in-house LLM/retrieval are Adjacent, not Direct) - all knowingly accepted under the user's explicit Phase 0 override. Consumes the cohort's sole Stretch slot: cohort is now 6/10, Stretch 1/1. Critique ran twice. Round 1 scored the documents 85/100 and raised three Tier 1 items; Round 2, after the fixes, scores 93/100 with truth and provenance 24/25 and zero Tier 1 findings. Evidence Fit did not move and was not allowed to: PP-3 is a personal project and cannot convert an Adjacent title-capability into a Direct one. Documents (.tex is the deliverable; PDFs are gitignored): - resume 2pp/13 bullets, letter 1pp/295 words, both validators PASS - headline is now the canonical title "Staff Data, Analytics & AI Engineer", which puts the req's own word above the fold - PP-3 added as a Projekte section - the only current Linux/hardening evidence, since BS-6 ended Dec 2022 - the letter names the AI-platform gap in one sentence, then connects SW-5 to C5I's stated DevSecOps model - "governte" -> "governance-konforme"; JD term coverage 18/22 -> 22/22 claimable, with all six gap terms still correctly absent Two defects found and fixed that the first critique missed: - the resume never loaded babel, so a German document was hyphenated with English patterns (Hal-bleiterfertigung, Tran-skription). Fixed with babel[ngerman] plus a Transkription exception; this also cleared an overfull box. Check this on every future German package - resume_template.tex likely has the same omission. - IBM AI Engineering had no primary-source record. Certificate read directly (IBM via Coursera, 4 Jun 2020, verify 3ZBZFVAL6A34), recorded as entry #8; it also proves PyTorch, now evidence: certification. Also included: the submitted Kdo Cy DevOps Engineer III package, the Capgemini omit rule promoted into config.md, BW-1 canonicalized in experience_bundeswehr.md, and a scout.py comment correcting the telenorgroup slug from "near-empty" to a claimed board serving stale phantom listings that DEMO_TITLES would not catch. Compensation, PSP/project eligibility and role level were never resolved before sending and are now live screening topics. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JMcHCsTKWvVzqyLChF5ckk
Evidence-first resume kit
This repository turns verified career evidence into role-specific LaTeX resumes and, when useful, cover letters. It is designed to prevent a common failure mode of AI-assisted applications: making a document sound closer to the job description by silently overstating skills, scope, titles, or outcomes.
The workflow separates three questions that should never be confused:
- Evidence Fit: does the candidate actually meet the role, including hard gates?
- Document Quality: does the resume communicate the supported evidence clearly?
- Channel Strength: is the application cold, referred, or supported by a warm contact?
A polished resume cannot repair a failed qualification gate. A strong fit can still be hidden by a weak document. The system records both.
Source hierarchy
source documents
-> structured extractions
-> canonical claims registry
-> experience records and role bundles
-> session plan
-> generated resume / optional cover letter
resume_builder/canonical/claims.json is the highest-authority career source. Generated files under output/ are never treated as evidence. historical_outputs.json records whether an older package is safe to consult, must be revalidated, or must not be reused.
Default application strategy
- Target Staff/Senior Data Engineering first.
- Use ML Platform/MLOps, data platform, analytics, and semiconductor profiles only where direct evidence covers the actual requirements.
- Treat direct LLM engineering, formal model evaluation, Terraform-heavy SRE, and similar missing required experience as gates rather than keyword opportunities.
- Build application cohorts with roughly 70% core, 20% adjacent, and 10% deliberate stretch roles.
- Add a warm-channel action for core applications.
The default document is a two-page International Tech resume for US-tech/FAANG-style roles in Europe. A Swiss/DACH policy overlay is available for employers that expect local conventions. Cover letters are conditional, not automatic.
Workflow
Add evidence
- Put employment records, project material, papers, or notes under
knowledge_base/. - Run
setup-extractto create a source-grounded extraction. - Review it, then run
setup-build-kbto update canonical claims, experience files, bundles, and support data.
Apply to a role
- Run
make-resumewith the real JD. - Review the requirement table and fit gate before approving content generation.
- Generate and validate the LaTeX resume.
- Run
make-clonly when the session records a justifiedYESdecision. - Run
critiquefor separate Evidence Fit, Document Quality, and Channel Strength findings. - Run
edit-resumefor approved repairs.
The skills live in .agents/skills/. Each application receives a session file under output/<Role>/ that preserves the JD, fit decision, claim IDs, content plan, validation results, and application status.
Validation
Validate the knowledge system:
python resume_builder/helpers/validate_resume_system.py
Validate a generated document:
python resume_builder/helpers/validate_resume_system.py --document output/Role/resume.tex
Track the active 7/2/1 cohort:
python resume_builder/helpers/cohort_tracker.py summary
Character counts are available only as readability diagnostics. There are no fixed character bands, equal-length bullet rules, or page-fill quotas.
Output and prerequisites
The system writes .tex source only. Compile locally with a LaTeX distribution such as MiKTeX, TeX Live, or MacTeX. Generated resumes should also be checked through PDF rendering and text extraction before submission.
See DOCS.md for the architecture and policy reference.
License
MIT; see LICENSE.