Skip to content

Repository files navigation

CV Automation System - Phase 1

A Python-based system for generating professional, ATS-friendly CV documents from structured YAML data.

Features

  • ATS-Optimized: Generates CVs compatible with Applicant Tracking Systems
  • YAML-Based: Store all your professional information in a structured YAML file
  • Professional Formatting: Clean, readable layout with optimal spacing and standard fonts
  • Comprehensive Sections: Support for experience, education, skills, certifications, projects, and more
  • Customizable: Easy to modify templates and section ordering
  • Logging: Detailed logging for debugging and monitoring
  • Contact Layout: Each contact detail on separate lines for better ATS parsing

Project Structure

JobSearchAutomation/
├── data/
│   └── example_cv.yaml          # Example template (included in git)
├── output/                      # Generated CVs (gitignored)
├── templates/                   # Optional template files
├── venv/                       # Virtual environment (gitignored)
├── generate_cv.py              # Main CV generation script
├── requirements.txt            # Python dependencies
├── .gitignore                 # Git ignore rules
└── README.md                  # This file

Quick Start

1. Quick Setup (Recommended)

# Clone the repository
git clone <repository-url>
cd JobSearchAutomation

# Create virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Run automated setup
python setup.py

2. Manual Setup (Alternative)

# Create virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Copy the example template
cp data/example_cv.yaml data/master_cv.yaml

# Edit with your information
nano data/master_cv.yaml  # or use your preferred editor

3. Generate Your CV

# Generate CV from your data
python generate_cv.py

# Or specify a different YAML file
python generate_cv.py --yaml-file data/my_cv.yaml

4. Test Your Setup

# Test the system with example data
python test_cv.py

The generated CV will be saved in the output/ directory with a timestamp.

YAML Data Structure

The YAML file should contain the following sections:

Personal Information (Environment Variables)

Personal information is now loaded from environment variables for better security and flexibility.

Setup:

  1. Copy personal_info.env.example to personal_info.env
  2. Update the values in personal_info.env with your actual information

Required Environment Variables:

  • CV_NAME: Your full name
  • CV_EMAIL: Your email address

Optional Environment Variables:

  • CV_PHONE: Your phone number
  • CV_LOCATION: Your location (city, state/country)
  • CV_LINKEDIN: Your LinkedIn profile URL
  • CV_WEBSITE: Your personal website
  • CV_GITHUB: Your GitHub profile URL
  • CV_FILENAME_PREFIX: Custom filename prefix for generated CVs

Example personal_info.env:

CV_NAME="John Doe"
CV_EMAIL="john.doe@email.com"
CV_PHONE="+1 (555) 123-4567"
CV_LOCATION="San Francisco, CA"
CV_LINKEDIN="linkedin.com/in/johndoe"
CV_WEBSITE="johndoe.dev"
CV_GITHUB="github.com/johndoe"
CV_FILENAME_PREFIX="John_Doe_CV"

Professional Summary

summary: |
  Your professional summary here. This should be a brief paragraph
  highlighting your key qualifications and career focus.

Work Experience

experience:
  - company: "Company Name"
    role: "Job Title"
    location: "City, State"
    start_date: "2022-01"
    end_date: "Present"
    description: |
      Brief description of your role and responsibilities.
    achievements:
      - "Achievement 1"
      - "Achievement 2"
    technologies: ["Python", "JavaScript", "React"]

Education

education:
  - degree: "Bachelor of Science in Computer Science"
    institution: "University Name"
    location: "City, State"
    graduation_date: "2020-05"
    gpa: "3.7"  # Optional
    relevant_coursework: ["Data Structures", "Algorithms"]

Skills

skills:
  programming_languages:
    - "Python"
    - "JavaScript"
    - "Java"
  frameworks_libraries:
    - "Django"
    - "React"
    - "Node.js"

Certifications

certifications:
  - name: "AWS Certified Solutions Architect"
    issuer: "Amazon Web Services"
    date: "2023-03"
    credential_id: "AWS-SAA-123456"  # Optional

Projects (Optional)

projects:
  - name: "Project Name"
    description: "Brief project description"
    technologies: ["Python", "Django", "PostgreSQL"]
    url: "github.com/username/project"  # Optional
    date: "2023"

Configuration

cv_config:
  font_family: "Arial"  # ATS-friendly fonts: Arial, Calibri, Georgia
  font_size: 11
  section_order:
    - "summary"
    - "experience"
    - "education"
    - "skills"
    - "certifications"
  include_timestamp: true

Command Line Options

python generate_cv.py [options]

Options:
  --yaml-file PATH    Path to YAML file (default: data/master_cv.yaml)
  --output-dir PATH   Output directory (default: output)
  -h, --help         Show help message

ATS Compatibility Features

  • Standard Fonts: Uses Arial, Calibri, or Georgia fonts
  • Simple Formatting: No tables, text boxes, or complex layouts
  • Clear Headers: Standard section headers with proper spacing
  • Bullet Points: Simple bullet points without custom symbols
  • Proper Margins: 1-inch margins on all sides
  • No Graphics: No embedded images or complex formatting
  • Contact Parsing: Each contact detail on separate lines for ATS compatibility

Customization

Section Ordering

Modify the section_order in your YAML file to change the order of sections:

cv_config:
  section_order:
    - "summary"
    - "experience"
    - "skills"  # Move skills before education
    - "education"
    - "certifications"

Hidden Sections

Hide sections you don't want to include:

cv_config:
  hidden_sections:
    - "projects"
    - "languages"

Font Customization

cv_config:
  font_family: "Calibri"  # or "Georgia"
  font_size: 12

Logging

The script generates detailed logs in cv_generation.log and console output:

  • INFO: General progress information
  • DEBUG: Detailed processing steps
  • WARNING: Non-critical issues
  • ERROR: Critical errors that prevent generation

Troubleshooting

Common Issues

  1. YAML file not found

    Error: YAML file not found: data/master_cv.yaml
    

    Solution: Copy data/example_cv.yaml to data/master_cv.yaml and update with your information.

  2. Invalid YAML syntax

    Error parsing YAML file: while parsing...
    

    Solution: Check your YAML syntax. Use a YAML validator online.

  3. Missing personal information

    Missing required personal information from environment: name, email
    

    Solution:

    • Copy personal_info.env.example to personal_info.env
    • Update CV_NAME and CV_EMAIL in personal_info.env
    • Or set environment variables manually: export CV_NAME="Your Name" and export CV_EMAIL="your@email.com"

Debug Mode

Enable debug logging by modifying the script:

logging.basicConfig(level=logging.DEBUG, ...)

Development

Adding New Sections

To add a new section to the CV:

  1. Add the section to your YAML file
  2. Create a method in the CVGenerator class:
    def add_new_section(self):
        """Add your new section."""
        if 'new_section' not in self.data:
            return
        # Implementation here
  3. Add the section to the section_methods dictionary
  4. Update the default section_order in the config

Testing

# Test with example data
python generate_cv.py --yaml-file data/example_cv.yaml

# Run automated tests to verify CV structure
python test_cv.py

# Check the generated CV in output/ directory

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

License

This project is open source. See the LICENSE file for details.

Future Phases

This is Phase 1 of a larger automation system:

  • Phase 2: Job-specific CV generation with n8n automation
  • Phase 3: Automated job search and application

See REQUIREMENTS.md for the complete project roadmap.

Support

For issues and questions:

  1. Check the troubleshooting section above
  2. Review the logs in cv_generation.log
  3. Open an issue on GitHub with your YAML file (remove personal information)
  4. Include the error message and log output

About

Automations related to searching for jobs online.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages