Where Is the Candidate Profile Information Stored in the AI-Job-Search Framework?
The candidate profile information is stored in two synchronized markdown files: CLAUDE.md at the repository root contains the human-readable master record, while .claude/skills/job-application-assistant/01-candidate-profile.md provides the structured, machine-readable source that all runtime commands consume.
The MadsLorentzen/ai-job-search framework implements a thin-pointer design that maintains a single source of truth for candidate data. Rather than scattering profile details across multiple databases or configuration files, the framework centralizes all biographical, educational, and professional information in two specific markdown locations that runtime agents reference exclusively.
The Dual-File Storage Architecture
The framework maintains candidate profile information stored across two distinct files that serve different consumption patterns. This design separates human editing workflows from programmatic access while ensuring consistency through automated synchronization.
CLAUDE.md: The Human-Readable Master
The primary source for candidate profile information stored in the repository is CLAUDE.md, located at the repository root. This file contains the complete, human-readable profile including the candidate's biography, contact details, education history, professional experience, and overarching career goals. It serves as the canonical reference that users edit directly when updating their background information.
01-candidate-profile.md: The Machine-Readable Structured Source
To enable programmatic access by the framework's command suite, the same candidate profile information stored in CLAUDE.md is duplicated in .claude/skills/job-application-assistant/01-candidate-profile.md. This file organizes the data into explicit, parseable sections including Identity, Education, Professional Experience, Projects, Technical Skills, Publications, Awards, and References. Commands such as /apply, /interview, and /setup read directly from this structured location.
How the Setup Command Synchronizes Profile Data
The /setup command, defined in .claude/commands/setup.md, maintains synchronization between the two storage locations. When executed, this command parses raw documents from the documents/ directory, merges new content with existing data, and writes the canonical structured version to 01-candidate-profile.md.
The framework never writes candidate facts to alternative locations. By design, the /setup command preserves existing data unless explicit confirmation is provided, ensuring that programmatic updates do not inadvertently overwrite carefully curated human edits.
Accessing Candidate Profile Information Programmatically
You can interact with the stored profile using both the framework's CLI and custom scripts. The following examples demonstrate how to locate and read the candidate profile information stored in the framework.
To regenerate the structured profile from the human-readable master:
# Run the setup command to (re)populate the structured profile
$ ai-job-search /setup
# The command reads CLAUDE.md and writes/updates:
# .claude/skills/job-application-assistant/01-candidate-profile.md
To read the structured profile in Python:
# Example: a custom script that reads the structured profile
from pathlib import Path
profile_path = Path('.claude/skills/job-application-assistant/01-candidate-profile.md')
with profile_path.open() as f:
profile_md = f.read()
print("Candidate name:", profile_md.splitlines()[0])
To view the raw human-readable profile directly:
# Show the raw candidate profile (human-readable) directly from the repo
$ cat CLAUDE.md
The structured profile follows a machine-friendly markdown format:
# Example snippet from 01-candidate-profile.md (machine-friendly)
---
Identity:
Name: Jane Doe
Email: jane@example.com
Education:
- MSc Computer Science, University X (2020)
Professional Experience:
- Software Engineer, Acme Corp (2020-2022)
Technical Skills:
- Python, Rust, Docker, AWS
...
Summary
- Candidate profile information is stored in two locations:
CLAUDE.md(human-readable) and.claude/skills/job-application-assistant/01-candidate-profile.md(machine-readable). CLAUDE.mdserves as the single source of truth for human editing, containing the complete biography, contact details, and career history.01-candidate-profile.mdprovides the structured interface that all framework commands consume, organized into explicit sections like Identity, Education, and Technical Skills.- The
/setupcommand synchronizes these files by parsingdocuments/andCLAUDE.md, then writing the merged output to the structured profile without overwriting existing data unless confirmed. - Runtime agents never store candidate data elsewhere; all generated outputs (CVs, cover letters) must reference these two files.
Frequently Asked Questions
What is the primary file for candidate profile information?
The primary file is CLAUDE.md at the repository root. This human-readable markdown file contains the complete candidate biography, contact information, education, experience, and career goals. It represents the canonical source that the framework's synchronization tools reference when updating the structured derivative.
How do I update my candidate profile in the framework?
Update the CLAUDE.md file directly with your new information, then run the /setup command. This command parses the updated master file along with any documents in the documents/ directory, merges the changes, and writes the updated structured version to .claude/skills/job-application-assistant/01-candidate-profile.md without overwriting existing data unless you confirm the action.
Why does the framework store the same profile in two different files?
The framework uses a dual-file architecture to separate concerns: CLAUDE.md optimizes for human readability and editing, while 01-candidate-profile.md provides a machine-friendly structure with explicit sections that the /apply, /interview, and other commands can parse reliably. The /setup command ensures these remain synchronized, maintaining a thin-pointer design where runtime agents always reference the same source of truth.
Which commands read from the structured candidate profile?
Commands including /setup, /apply, and /interview read directly from .claude/skills/job-application-assistant/01-candidate-profile.md. According to the MadsLorentzen/ai-job-search source code, these commands consume the structured profile when evaluating job postings, generating application materials, or preparing interview responses, ensuring they reference the most current candidate data.
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 →