--- name: cv-generate description: Generates tailored CVs from knowledge base data, matched against a specific job posting. activation: manual --- # cv-generate Generates tailored CVs from knowledge base data, matched against a specific job posting. Supports individual CVs and combined tandem CVs for job sharing applications. Outputs Markdown files to `output/cvs/`. ## Activation Activated by user request with a job posting as input. Example triggers: - "generate a CV for this job posting" - "create a CV for [job title]" - "apply to this position" - "generate tandem CV for this role" ## Inputs - **Job posting** (required): The job posting text or a file path to the posting. Used to determine which skills, experiences, and qualifications to emphasize. - **Person ID** (optional): Which profile to generate a CV for. Defaults to the primary profile if only one exists. - **Tandem ID** (optional): If provided, generates a full tandem application set (combined tandem CV + individual CVs for each partner). - **Output filename prefix** (optional): Custom prefix for output files. Defaults to `-`. ## Workflow ### 1. Parse job posting - Extract key requirements from the job posting: required skills, desired experience areas, qualifications, responsibilities, and keywords - Identify the role title, organization, and domain for context ### 2. Load knowledge base data - Read the target person profile from `kb/profiles/.yaml` - Read `kb/graph-index.yaml` to discover related entities - Load all referenced experiences from `kb/experiences/` - Load all referenced skills from `kb/skills/` - Load all referenced projects from `kb/projects/` - Load all referenced certifications from `kb/certifications/` - Load referenced organizations from `kb/organizations/` ### 3. Select relevant content - Use relevance selection logic (`src/cv/relevance-selection.ts`) to score and rank experiences, skills, and projects against the job posting requirements - Select entries with non-empty intersection with posting requirements - Order selected items by relevance: matching items appear before non-matching items - Retain a minimal set of non-matching items for completeness where appropriate ### 4. Generate individual CV - Apply the individual CV template (`templates/cv-individual.md`) - Structure the CV with sections ordered by relevance to the posting - Emphasize matching skills and experiences in descriptions - Include only information present in the knowledge base — never fabricate content - Write output to `output/cvs/-individual.md` ### 5. Generate tandem CV (if tandem application) - Load tandem entity from `kb/tandems/.yaml` - Load both partner profiles and their related entities - Use tandem generation logic (`src/cv/tandem-generator.ts`) to produce the combined CV - Show complementary qualifications, shared vision, and collaboration model - Apply the tandem CV template (`templates/cv-tandem.md`) - Write combined tandem CV to `output/cvs/-tandem.md` - Generate individual CVs for each partner tailored to the same posting - Write partner CVs to `output/cvs/--individual.md` ### 6. Review and present output - List all generated files with a brief summary of what each contains - Highlight which skills and experiences were emphasized - Note any gaps where the knowledge base lacked information relevant to the posting ## Output - Individual CV: `output/cvs/-individual.md` - Tandem CV (if applicable): `output/cvs/-tandem.md` - Partner individual CVs (if tandem): `output/cvs/--individual.md` ## Rules and Constraints 1. **No fabrication** — only include information present in the knowledge base; never invent skills, experiences, or qualifications 2. **Relevance-driven ordering** — matching items always appear before non-matching items 3. **Tandem produces 3 documents** — a tandem application always generates exactly one combined tandem CV and one individual CV per partner 4. **Markdown output** — all CVs are output as Markdown suitable for conversion to PDF or DOCX 5. **Template-based** — use templates from `templates/` for consistent formatting 6. **Schema-validated sources** — only read from validated entity files in `kb/` 7. **Kebab-case output naming** — output file names use kebab-case ## Shared Modules This skill depends on the following shared validation and utility modules: - `src/schemas/validate.ts` — Entity validation (validate sources before generation) - `src/schemas/types.ts` — TypeScript type definitions for all entity types - `src/io/yaml-utils.ts` — YAML serialization/deserialization - `src/io/entity-files.ts` — Entity file read management ## References - `references/cv-formatting-guide.md` — formatting conventions for CV output