# 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:

1. **Evidence Fit:** does the candidate actually meet the role, including hard gates?
2. **Document Quality:** does the resume communicate the supported evidence clearly?
3. **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

```text
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

1. Put employment records, project material, papers, or notes under `knowledge_base/`.
2. Run `setup-extract` to create a source-grounded extraction.
3. Review it, then run `setup-build-kb` to update canonical claims, experience files, bundles, and support data.

### Apply to a role

1. Run `make-resume` with the real JD.
2. Review the requirement table and fit gate before approving content generation.
3. Generate and validate the LaTeX resume.
4. Run `make-cl` only when the session records a justified `YES` decision.
5. Run `critique` for separate Evidence Fit, Document Quality, and Channel Strength findings.
6. Run `edit-resume` for 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:

```powershell
python resume_builder/helpers/validate_resume_system.py
```

Validate a generated document:

```powershell
python resume_builder/helpers/validate_resume_system.py --document output/Role/resume.tex
```

Track the active 7/2/1 cohort:

```powershell
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](DOCS.md) for the architecture and policy reference.

## License

MIT; see [LICENSE](LICENSE).
