How Candidate Profiles Are Structured in 01-candidate-profile.md for Application Generation

The candidate profile in 01-candidate-profile.md follows a strict section-based Markdown layout that enables automated parsing for CV generation, cover-letter drafting, and interview preparation.

The ai-job-search repository by MadsLorentzen uses a structured Markdown file located at .claude/skills/job-application-assistant/01-candidate-profile.md to store all personal data required for job applications. When you run the /setup command, this file populates with your information, serving as the single source of truth that downstream agents grep and parse to generate LaTeX-based application artifacts.

Overview of the Profile Structure

The candidate profile structure is designed for deterministic parsing. Each section uses a specific Markdown pattern that the automation expects, ensuring reproducible extraction of data for templates. The file is additive only—the system never overwrites existing content unless you explicitly invoke the /reset profile command.

Agents access this profile to populate cv/main_<company>.tex templates, insert personalized paragraphs into cover_letters/cover_<company>_<role>.tex, and generate STAR-method interview examples by re-using bullets from your work history.

Section-by-Section Format Requirements

Identity

The Identity section contains core contact information and personal attributes. It uses a bullet list with bolded field names followed by values.


## Identity

- **Name:** Jane Doe
- **Location:** Copenhagen, Denmark
- **Phone:** +45 1234 5678
- **Email:** jane.doe@example.com
- **LinkedIn:** https://linkedin.com/in/janedoe
- **GitHub:** https://github.com/janedoe
- **Languages:** English (Fluent), Danish (Native)
- **Status:** Open to new opportunities
- **Constraints:** Willing to relocate within Scandinavia

Education

The Education section requires a Markdown table with four columns: Degree, Period, Institution, and Key Topics.


## Education

| Degree               | Period      | Institution          | Key Topics                     |
|----------------------|-------------|----------------------|--------------------------------|
| MSc Computer Science | 2018-2020   | University of Copenhagen | Distributed Systems, ML        |

Professional Experience

Each role in the Professional Experience section uses a level-3 heading followed by a location line and bullet points describing achievements.


## Professional Experience

### Data Scientist - TechCorp (2020-2023)

Copenhagen, Denmark
- Designed a recommendation engine that increased user engagement by 12%.
- Built automated data pipelines with Apache Airflow.
- Presented findings to senior leadership monthly.

### Software Engineer Intern - StartUpX (Summer 2019)

Copenhagen, Denmark
- Developed a micro-service in Go that handled 10k req/s.
- Refactored legacy codebase to improve test coverage from 45% to 80%.

Independent Projects

The Independent Projects section lists side-projects and open-source contributions using a simple bullet list with the project name in bold.


## Independent Projects

- **MyApp**: A personal finance tracker built with Python and React
- **OpenSourceLib**: Contributed CI/CD automation and documentation

Technical Skills

Technical Skills uses categorized sub-headings (### Programming & ML, ### Domain Expertise, ### Software & Tools) containing bullet lists with proficiency levels.


## Technical Skills

### Programming & ML

- **Python** (Advanced): pandas, NumPy, PyTorch
- **SQL** (Intermediate): PostgreSQL, query optimization

### Software & Tools

- **Git**: Advanced branching strategies and rebasing
- **Docker**: Containerization and multi-stage builds

Publications, Awards, and References

These sections follow simpler formats:

  • Publications: Ordered list with full academic citations
  • Awards: Bullet list with honor details and dates
  • References: Bullet list with name, title, company, email, and phone

## Publications

1. Doe, J. (2022). Advanced Machine Learning Techniques. Journal of AI Research.

## Awards

- Best Paper – XYZ Conference (2021)
- Dean's List 2019-2020

## References

- Jane Smith, Senior Manager, Acme Corp (jane@acme.com, +1-555-1234)

Parsing the Profile Programmatically

The automation accesses specific sections using pattern matching on the Markdown headers. Below is the Python-style logic used by the CLI to extract section content:

import re, pathlib

def read_section(file_path: str, heading: str) -> str:
    txt = pathlib.Path(file_path).read_text()
    # Grab content until next top-level heading

    pattern = rf"## {heading}\n(.*?)(?:\n## |\Z)"

    return re.search(pattern, txt, re.S).group(1).strip()
    
identity = read_section(".../01-candidate-profile.md", "Identity")
print(identity.splitlines()[:3])   # shows first three bullets

This parsing strategy allows the system to safely extract data without complex Markdown parsers, enabling quick population of LaTeX templates defined in 05-cv-templates.md.

Integration with the Application Workflow

The candidate profile connects to several key files in the workflow:

  • CLAUDE.md: The human-readable master profile where you initially document your experience; the /setup command extracts data from here into the structured 01-candidate-profile.md
  • 04-job-evaluation.md: Defines how your profile scores against specific job postings
  • 05-cv-templates.md: Provides LaTeX templates that consume the structured profile data to generate company-specific CVs

Because the profile is pure Markdown, agents can deterministically locate sections using simple regex patterns, ensuring that updates to your experience automatically propagate to all generated application materials.

Summary

  • The candidate profile structure in 01-candidate-profile.md uses strict Markdown conventions to enable automated parsing for job applications.
  • Eight required sections (Identity, Education, Professional Experience, Independent Projects, Technical Skills, Publications, Awards, References) each follow specific formatting rules for bullets, tables, or headings.
  • The file is additive only and persists across sessions unless explicitly reset with /reset profile.
  • Downstream agents grep section headers to populate LaTeX CV templates and cover letters stored in .claude/skills/job-application-assistant/.
  • Pattern-based extraction allows the /setup command to reliably convert human-readable input into structured data for the application generation pipeline.

Frequently Asked Questions

What happens if I modify the formatting in 01-candidate-profile.md?

The automation relies on specific Markdown patterns (bullet lists with bold prefixes, tables with explicit headers, level-3 headings for jobs). If you alter these structures—for example, removing bold markers from field names or changing table column counts—the parsing regex in the CLI will fail to extract your data, resulting in empty sections in generated CVs or cover letters.

How does the system handle updates to my experience?

The profile file follows an additive-only policy. When you run /setup again, the system appends new information or updates placeholders without removing existing content. If you need to completely rebuild your profile from scratch, you must explicitly use the /reset profile command, which clears the file and re-initializes it from CLAUDE.md or interactive input.

Can I use this profile structure for non-technical roles?

Yes. While the example content emphasizes software engineering and data science fields, the candidate profile structure is agnostic to industry. Simply adapt the Technical Skills section to reflect relevant competencies (e.g., "Project Management", "Salesforce", "Legal Research") and use the Professional Experience section to highlight achievements in your specific domain using the same bullet-point format.

Where does the initial data come from when setting up the repository?

The /setup command extracts initial data from the documents/ folder in your repository or prompts you interactively. This information populates the placeholders in 01-candidate-profile.md, which then serves as the canonical source for all subsequent application generation, as defined in the workflow configuration and CLAUDE.md.

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →