Files
claude-resume-kit/resume_builder/reference/shared_ops.md
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

4.5 KiB

Shared Operations — All Application Skills

Canonical Evidence Preflight

Before generation, editing or critique:

  1. Read resume_builder/canonical/claims.json completely.
  2. Read config.md, AGENTS.md corrections and resume_builder/reference/current_applications.md. Application status is authoritative in job_scout/state/applications.json; the Markdown view and old cohort JSON are generated projections. Historical events are not current instructions.
  3. Run python resume_builder/helpers/validate_resume_system.py.
  4. Treat canonical claims as higher authority than extractions, experience files, bundles, sessions or outputs.
  5. Never use a file under output/ as source content for a new application. Consult resume_builder/canonical/historical_outputs.json.
  6. Omit or ask about anything absent, ambiguous or unverified.

JD Integrity

  • Use the real posting text verbatim.
  • A URL is not a JD; retrieve the visible posting body first.
  • Do not reconstruct, infer or complete a missing posting.
  • If the real JD cannot be obtained, stop and ask the user to paste it.
  • Record source, retrieval method, retrieval date and posting status in the session.
  • Recheck that a live role still exists before investing in a package.

For JavaScript-heavy boards, use the in-app Browser skill or the existing Playwright environment under job_scout. Save the retrieved text in the output folder.

Fit Before Writing

Read resume_builder/reference/application_strategy.md and critique_framework.md. Complete the Evidence Fit and hard-gate assessment before planning bullets.

  • Core: proceed.
  • Adjacent: proceed selectively and state the serious gap.
  • Stretch: confirm user intent before full generation and state the gap plainly. There is no cohort capacity to check -- the slot caps were dropped 2026-09-05 (application_strategy.md).
  • No-go: record the decision; do not generate a package unless the user explicitly overrides after seeing the gate.

Audience and Cover-Letter Decisions

Select the appropriate profile in resume_reference.md before writing, including Denmark/Norway when applicable. International Tech is the default for international tech recruiting; employer requirements take precedence.

Apply cl_reference.md and record Cover Letter Decision: YES/NO. A deliberately omitted letter is a valid complete package.

Session Files

Store each application at output/<Folder>/session_<name>.md; use session_file_template.md for new sessions.

Derive <name> from company and role using lowercase underscores. Related files use the same key:

  • session_<name>.md
  • e2e_<name>_resume.tex
  • optional e2e_<name>_cover_letter.tex
  • critique_<name>.md

To find a session from a .tex path, strip e2e_ and the document suffix, search the same folder, then output/**/session_*<company>*.md.

Re-read the session at the start of each phase and resume from its Status. Do not restart completed work.

Folder Creation

At the start of an approved application:

  1. Create output/<Folder>/.
  2. Copy the verbatim JD into it.
  3. Create the session file.
  4. Copy resume.cls and the selected template only when generation begins.

Do not copy a prior application resume.

Validation and Visual QA

After creating or editing a document:

  1. Run python resume_builder/helpers/validate_resume_system.py --document <file.tex>.
  2. Compile with the local LaTeX distribution.
  3. Inspect the PDF at normal size.
  4. Extract text with pdftotext and verify heading/employer/title/date order.
  5. Check page count, clipping, overlap, page breaks and contact information.

Character counts may diagnose an unwieldy bullet, but there are no target character bands and no page-fill quota.

Finalization

After explicit approval:

  1. Verify the session, resume source/PDF and critique exist.
  2. Verify the cover-letter source/PDF only when the session decision is YES.
  3. Run the canonical validator again on every submitted document.
  4. Copy final PDFs to Dennis_Thiessen_Resume.pdf and, when applicable, Dennis_Thiessen_Cover_Letter.pdf.
  5. Record submission date, fit class, Evidence Fit, hard gate, channel and outcome status.
  6. Add the application to the active cohort with cohort_tracker.py add.

Progress and Recovery

Give short progress updates at major steps. Before ending or clearing context, update session Status and the application registry through the tracker; regenerate its views. Do not duplicate status in AGENTS or CLAUDE. If interrupted, add a Resume Point describing completed work and the exact next action.