# 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` and `AGENTS.md` corrections/status. 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 cohort capacity and user intent before full generation. - 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 International Tech, Swiss/DACH or Employer-specific format before writing. International Tech is default. 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//session_.md`; use `session_file_template.md` for new sessions. Derive `` from company and role using lowercase underscores. Related files use the same key: - `session_.md` - `e2e__resume.tex` - optional `e2e__cover_letter.tex` - `critique_.md` To find a session from a `.tex` path, strip `e2e_` and the document suffix, search the same folder, then `output/**/session_**.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//`. 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 `. 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 Active Sessions pointer. If interrupted, add a Resume Point describing completed work and the exact next action.