Checkpoint for the 2026-09-11 project review remediation. Work by a previous agent that ran out of context; committed unchanged as a rollback point before the remaining findings land on top of it. F01 — the two agent directories had drifted into different processes - Six shared workflows under `resume_builder/reference/workflows/`; both `.agents/skills/` and `.claude/skills/` are now thin entrypoints that route to the same file instead of carrying full copies. - The `.claude` copies were the stale side: fixed bullet line variants and character budgets that the newer process had already dropped. Removing them is the point of the change, not collateral. - Parity/link regression test added; corrected the top-level file map, which pointed at a directory that does not exist. F02 — application status was stored in four places and disagreed - New registry `job_scout/state/applications.json` (26 records) with `application_records.py` (schema, validation, transactional write) and `application_tracker.py` (add/update, no quota). - AGENTS.md and CLAUDE.md no longer keep their own status tables; both point at `current_applications.md`, generated from the registry. - Interview-reached is now independent of outcome, so a withdrawal after an interview can record both facts. The old tables are preserved verbatim in `job_scout/state/history/application_status_before_2026-09-11.json`. Verification: `python -m unittest discover -s tests -v` — 18/18 pass. Spot-checked that the detailed SBB and Kdo Cy notes survived the migration into the registry rather than being flattened. Known unresolved, deliberately not invented (see FIX_PROGRESS.md): Aker BP's application date and its Adjacent-despite-79 classification. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qej5SBvhcbGXHwLqNWiskM
92 lines
4.4 KiB
Markdown
92 lines
4.4 KiB
Markdown
# 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 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/<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.
|