How the Candidate Profile Is Defined and Managed in the AI Job Search Framework
The AI Job Search Framework stores the candidate profile as structured markdown in CLAUDE.md and .claude/skills/job-application-assistant/01-candidate-profile.md, managing it through dedicated commands like /setup, /expand, and /reset to ensure a single source of truth across all AI-driven job search workflows.
The MadsLorentzen/ai-job-search repository treats your professional identity as version-controlled data that powers automated job ranking, application generation, and skill-gap analysis. By centralizing candidate profile information in specific markdown files and manipulating them through slash commands, the framework eliminates redundancy while maintaining strict factual accuracy across all AI interactions.
Where the Candidate Profile Is Stored
The framework implements a dual-file strategy to balance human readability with machine consumption.
CLAUDE.md serves as the human-readable source of truth located in the repository root. This file contains the complete candidate profile starting at line 14, structured with markdown headers for sections such as Identity, Education, Professional Experience, Technical Skills, Behavioral Profile, Certifications, target sectors, and deal-breakers. According to the repository source, this file is automatically populated during initial setup and includes a verification checklist at lines 108-110 to enforce factual accuracy before generating any application materials.
.claude/skills/job-application-assistant/01-candidate-profile.md functions as the machine-readable canonical source. All AI skills—including job ranking, application assistance, and upskilling—reference this file when retrieving candidate facts. Located within the hidden .claude directory, this file mirrors the structured sections found in CLAUDE.md but serves as the definitive programmatic interface for the framework's agents.
Structure of the Candidate Profile
Both storage locations follow an identical section hierarchy to ensure consistency between human editing and AI consumption.
Core Identity and Background
The profile begins with Identity and Education sections that establish your legal name, contact information, degrees, institutions, and graduation dates. These fields provide the foundational data required for CV headers and application forms.
Professional History and Skills
The Professional Experience section chronicles work history with position titles, companies, dates, and quantifiable achievements. Adjacent to this, Technical Skills catalogs programming languages, frameworks, tools, and proficiency levels. The Behavioral Profile subsection captures soft skills, leadership style, and communication preferences essential for culture-fit analysis.
Strategic Preferences
Additional sections document Certifications, Target Sectors for industry focus, and Deal-Breakers that define non-negotiable requirements such as remote work policies or compensation floors. These parameters filter job opportunities during the automated ranking phase.
Managing the Candidate Profile Lifecycle
The framework provides three primary commands to manipulate profile data without risking manual corruption of the structured markdown.
Initial Creation with /setup
The /setup command, documented in .claude/commands/setup.md, initiates an interactive prompt sequence that populates both CLAUDE.md and 01-candidate-profile.md simultaneously. This command writes the complete profile structure with your responses, establishing the foundational data layer required before executing any other workflow steps.
Incremental Enrichment with /expand
The /expand command, implemented in .claude/commands/expand.md, performs additive updates to the candidate profile by ingesting external data sources such as PDF résumés, LinkedIn exports, or project documentation. This operation appends newly discovered competencies to existing sections without overwriting current data, ensuring the profile grows monotonically. For example, running /expand pdf path/to/resume.pdf extracts skills and certifications and merges them into the appropriate markdown sections.
Resetting Profile Data with /reset
When switching context to a different candidate or clearing stale data, the /reset profile sub-command—defined in .claude/commands/reset.md—selectively clears profile-related content from the skill files while preserving other workflow artifacts such as job listings or generated cover letters. This granular reset prevents cross-contamination between candidate identities.
Verification and Accuracy Enforcement
Before any CV or cover letter generation, the framework enforces a verification routine via the checklist embedded at lines 108-110 of CLAUDE.md. This checkpoint requires explicit confirmation that all claims match the stored candidate profile, preventing the AI from hallucinating qualifications or experiences not present in the canonical source files.
Accessing the Candidate Profile Programmatically
Developers and power users can interact with the profile directly through standard filesystem operations or within custom scripts.
Initialize the profile for a new user:
/setup
Add competencies discovered in external documents:
/expand pdf documents/resume.pdf
Clear the current profile to start fresh:
/reset profile
Preview the human-readable profile content:
cat CLAUDE.md | grep -A 20 "## Candidate Profile"
Access the machine-readable version within Python automation:
from pathlib import Path
# Load the canonical profile used by AI skills
profile_path = Path(".claude/skills/job-application-assistant/01-candidate-profile.md")
profile_content = profile_path.read_text(encoding="utf-8")
# Extract specific sections for custom analysis
print(profile_content[:500]) # Display first 500 characters
Reference the profile within skill development, as shown in .claude/skills/upskill/SKILL.md, to eliminate already-known skills when generating learning recommendations.
Summary
- The candidate profile lives in two synchronized locations:
CLAUDE.mdfor human editing and.claude/skills/job-application-assistant/01-candidate-profile.mdfor machine consumption. - Profile structure includes Identity, Education, Professional Experience, Technical Skills, Behavioral Profile, and strategic preferences such as target sectors and deal-breakers.
- Lifecycle management occurs through
/setup(creation),/expand(additive updates), and/reset profile(targeted deletion). - A verification checklist at lines 108-110 of
CLAUDE.mdenforces factual accuracy before generating application materials. - Agents treat the profile as read-only outside designated commands, maintaining a single source of truth across the job search pipeline.
Frequently Asked Questions
What file format stores the candidate profile?
The framework uses Markdown files with structured headers. CLAUDE.md provides the human-readable interface, while .claude/skills/job-application-assistant/01-candidate-profile.md serves as the machine-readable source that AI skills reference directly.
How do I update my profile after adding new work experience?
Use the /expand command with relevant source material. For example, /expand pdf new_role_offer.pdf extracts details from the document and appends them to your existing Professional Experience section without overwriting previous entries, preserving your complete history.
Will resetting my profile delete my saved job applications?
No. The /reset profile command specifically targets only the candidate data within the skill files. According to .claude/commands/reset.md, this operation clears identity and experience sections while preserving other workflow artifacts such as ranked job lists and generated cover letters stored elsewhere in the repository.
Which AI skills depend on the candidate profile?
All major skills reference the profile, including the Job Application Assistant (.claude/skills/job-application-assistant/), the Upskill advisor (.claude/skills/upskill/SKILL.md), and the job ranking system. These tools read from .claude/skills/job-application-assistant/01-candidate-profile.md to personalize outputs and filter opportunities based on your documented skills and deal-breakers.
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 →