Skip to main content

Resume generator from YAML configs

Project description

MTeck Resume Parser

CI Python 3.10+ License: MIT Code style: ruff

A type-safe resume generator that creates LaTeX resumes from YAML data files using Jinja2 templates.

Features

  • Type-Safe: Full Pydantic validation for all resume data
  • Flexible: Support for multiple profiles from the same personal data
  • Self-Contained: Each resume example includes all its own data
  • Template-Based: Use Jinja2 templates for complete layout control
  • CLI: Simple command-line interface

Installation

# Install with uv (recommended)
uv sync

# Or with pip
pip install -e .

Quick Start

Generate a resume by specifying:

  • -d: Data directory containing your YAML files
  • -p: Profile name (from profiles.yml)
  • -t: LaTeX template
  • -o: Output file
# Generate Backend Developer resume  
resumodel -d examples/jane_doe \
  -p DEVBACKEND \
  -t templates/resume.tex.j2 \
  -o output/resume.tex

Directory Structure

Each resume example is self-contained:

examples/jane_doe/
├── personal_info.yml          # Personal contact information
├── profiles.yml               # Profile definitions (DATASCIENTIST, etc.)
├── experiences.yml            # Work experiences
├── projects.yml               # Projects
├── education.yml              # Education history
├── certifications.yml         # Certifications
├── research_papers.yml        # Research papers
├── clubs_and_associations.yml # Clubs & associations
└── hobbies.yml                # Hobbies

YAML File Formats

personal_info.yml

personal_info:
  name: "Your Name"
  phone: "+1 234 567 8900"
  email: "your.email@example.com"
  linkedin: "https://linkedin.com/in/yourprofile"
  github: "https://github.com/yourusername"
  location: "City, Country"

profiles.yml

Define multiple resume profiles:

profiles:
  DATASCIENTIST:
    title: "Data Scientist & ML Engineer"
    summary: "Experienced data scientist..."
    skills:
      - category: "Machine Learning"
        items: ["Python", "TensorFlow", "PyTorch"]
    experiences: ["EXP1", "EXP2"]  # Reference IDs
    projects: ["PROJ1", "PROJ2"]
    education: ["EDU1"]
    certifications: []
    research_papers: []
    clubs_and_associations: []
    hobbies: []

experiences.yml

experiences:
  EXP1:
    title: "Senior Data Scientist"
    company: "Tech Corp"
    date: "Jan 2020 - Present"
    location: "San Francisco, CA"
    bullet_points:
      - "Built ML models for recommendation system"
      - "Improved accuracy by 25%"

projects.yml

projects:
  PROJ1:
    name: "Awesome Project"
    link: "https://github.com/user/project"
    description: "Description of the project"

Development

# Install dev dependencies
uv pip install -e ".[dev]"

# Run tests
uv run pytest tests/ -v

# Type checking
uv run mypy src/resumodel/

# Run formatter
uv run ruff format src/ tests/

Project Structure

mteck-resume-parser/
├── src/resumodel/
│   ├── __init__.py
│   ├── cli.py          # Command-line interface
│   ├── models.py       # Pydantic models
│   ├── loader.py       # YAML loading & validation
│   └── generator.py    # Jinja2 template rendering
├── examples/
│   ├── hermann/        # Example 1 (self-contained)
│   └── jane_backend/   # Example 2 (self-contained)
├── templates/
│   └── resume.tex.j2   # LaTeX template
├── tests/
│   ├── test_models.py
│   ├── test_loader.py
│   └── test_generator.py
└── pyproject.toml

Creating Your Own Resume

  1. Create a directory for your resume (e.g., examples/yourname/)

  2. Add personal_info.yml:

    personal_info:
      name: "Your Name"
      email: "your@email.com"
      # ... other fields
    
  3. Create data files (experiences.yml, projects.yml, etc.)

  4. Define profiles in profiles.yml

  5. Generate:

    resumodel -d examples/yourname -p YOURPROFILE \
      -t templates/resume.tex.j2 -o output/yourname.tex
    

License

This project uses two licenses:

  1. Code is released under the MIT License.
  2. Resume templates and derived text are provided under CC BY 4.0 and require attribution.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

resumodel-0.1.0.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

resumodel-0.1.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file resumodel-0.1.0.tar.gz.

File metadata

  • Download URL: resumodel-0.1.0.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.15

File hashes

Hashes for resumodel-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9625fc82aebdfe4dd51375902ee075954f2fd440a285b1dfa66c9a5b31a5fd2d
MD5 ee40eddd4e893fb142fb737efc3eb684
BLAKE2b-256 06411af7a7b8c885a9ad7c0ac5d35973a89ba6a3e1b9b0eba6748e0c23ffdffa

See more details on using hashes here.

File details

Details for the file resumodel-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: resumodel-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.15

File hashes

Hashes for resumodel-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6e073a2bbc4373a8ae36c2a4686ea76dd6fbb0be28f98d8a57438606991e5a9b
MD5 f5b1560e172e85c627a76fb4b4fd0867
BLAKE2b-256 d3d4a699fb39831f4e306a733fd008f852d7dcd3af91ea005e89cc154c98b747

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page