How to Provide Feedback to Improve the AI's Generation Quality in AI-Job-Search
You improve the AI's generation quality by editing the structured source files—specifically CLAUDE.md and the skill definitions in .claude/skills/job-application-assistant/—rather than correcting the generated output directly.
The AI-Job-Search repository leverages Claude Code agents to read your candidate profile, evaluate job postings, and draft LaTeX CVs and cover letters. Because all generation is deterministic—templates filled from structured data—providing feedback means updating the input files that the agents consume during the six-phase pipeline.
Understanding the Feedback Architecture
The system processes your application through a rigid pipeline where each phase reads specific files. To provide effective feedback, you must modify the source files before the agents consume them.
Phase 1: Profile Onboarding
During onboarding, the agent reads CLAUDE.md (your master candidate profile) and the modular skill files under .claude/skills/job-application-assistant/. These include:
01-candidate-profile.md(personal data, education, experience)02-behavioral-profile.md(soft skills, work style)03-skill-definitions.md(hard skills and competencies)
Feedback method: Edit CLAUDE.md to correct factual errors or enrich your experience descriptions. Keep information modular by using the separate markdown files to prevent data drift.
Phase 2: Job-Fit Evaluation
The agent evaluates fit by reading 04-job-evaluation.md, which contains the scoring rubric and weighting for five fit dimensions (skill match, experience match, cultural fit, etc.).
Feedback method: Adjust the rubric weights to align with your priorities. For example, increase skill_match_weight if you want the AI to prioritize technical competencies over years of experience.
Phase 3: LaTeX Document Drafting
The drafter agent assembles documents by reading 05-cv-templates.md and 06-cover-letter-templates.md, which define LaTeX assembly rules, page limits, and bullet-point styles.
Feedback method: Modify template rules if outputs appear generic or miss critical details. You can also edit cv/main_example.tex directly to adjust spacing guards like \needspace{5\baselineskip}.
Phase 4: The Reviewer Loop
A reviewer agent critiques the drafted LaTeX against the job posting. This critique lives in temporary memory, not on disk, meaning you cannot edit it directly.
Feedback method: Influence the reviewer by clearing the session and re-running the /apply command after you have improved the underlying profile or templates.
Phase 5: ATS Verification
The pipeline validates output using tools/lint_skills.py, which enforces strict schema compliance on skill files, and extracts text from compiled PDFs using pdftotext to verify contact details.
Feedback method: Run python tools/lint_skills.py locally to catch schema violations early. Ensure PDFs contain literal contact details—otherwise the ATS check will flag the output as malformed.
Phase 6: Continuous Learning
The optional /upskill command generates reports surfacing competency gaps, while tools/convert_salary_excel.py provides benchmarking data.
Feedback method: When the AI repeatedly suggests missing skills, run /upskill https://example.com/job, then feed the generated learning plan back into 02-behavioral-profile.md by adding new competencies.
Practical Steps to Provide Feedback
Follow these specific workflows to inject quality improvements into the system.
Update the Candidate Profile
Open the master profile for editing:
nano CLAUDE.md
Add precise skill entries to reduce hallucinations:
- **Primary:** Python (pandas, scikit-learn), Docker, Git
- **Secondary:** Rust, Go, Terraform
The job-application-assistant skill reads these fields at runtime from 01-candidate-profile.md.
Adjust the Scoring Weights
Edit /.claude/skills/job-application-assistant/04-job-evaluation.md to re-weight fit dimensions:
- skill_match_weight: 0.3
- experience_match_weight: 0.2
+ skill_match_weight: 0.4
+ experience_match_weight: 0.25
Save and re-run the workflow:
claude /apply https://jobindex.dk/job/1234567
Refine CV Templates
To prevent orphaned section titles, insert spacing guards in cv/main_example.tex:
\needspace{5\baselineskip}
\cventry{2020--2022}{Senior Engineer}{Acme Corp}{Copenhagen}{}
Compile locally to verify:
lualatex cv/main_example.tex
Validate with CI Linting
Enforce schema correctness before submitting:
python tools/lint_skills.py
Fix any errors in the offending skill files (e.g., missing description fields) to prevent malformed prompts that degrade output quality.
Use the Upskill Command for Gap Analysis
Generate feedback on missing competencies:
claude /upskill https://jobindex.dk/job/9876543
Add the most relevant suggested skills to 02-behavioral-profile.md, then re-run /apply to see improved matches.
Summary
- Edit source files, not outputs: Modify
CLAUDE.mdand the.claude/skills/definitions to change what the AI generates. - Adjust the rubric: Tweak weights in
04-job-evaluation.mdto prioritize skills or experience based on your target roles. - Template precision: Update
05-cv-templates.mdand06-cover-letter-templates.mdto control LaTeX formatting and prevent generic phrasing. - Enforce schema: Run
tools/lint_skills.pyto ensure skill files pass CI validation and produce valid prompts. - Close the loop: Use
/upskillto identify gaps, update your profile, and re-run/applyto verify improvements in the reviewer loop.
Frequently Asked Questions
Why can't I edit the generated LaTeX directly to provide feedback?
The reviewer agent operates in an isolated loop that critiques drafts without modifying them. Because the system is deterministic, any changes you make to the output would be overwritten on the next run. Instead, update the input files (CLAUDE.md, templates, or rubrics) so the drafter produces better output natively.
How do I know if my skill files are causing quality issues?
Run python tools/lint_skills.py from the repository root. This CI-style validator enforces strict JSON/YAML schema on all files under .claude/skills/. If the linter reports missing required fields or malformed YAML, the agents receive incomplete prompts, leading to hallucinations or generic text.
What is the difference between /apply and /upskill commands?
The /apply command triggers the full pipeline: it reads your profile, evaluates the job posting, drafts LaTeX documents, and runs the reviewer loop. The /upskill command analyzes a specific job posting against your current skills and generates a learning plan without drafting documents. Use /upskill to identify gaps, update your profile, then run /apply to generate improved applications.
Where should I add new technical skills to improve generation accuracy?
Add primary technical skills to 01-candidate-profile.md under the hard skills section, and secondary or emerging skills to 02-behavioral-profile.md. The agents reference these files during the job-fit evaluation phase, and precise categorization ensures the drafter includes relevant competencies in the final LaTeX output.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →