Generate professionally designed, ATS-optimized PDF CVs
Project description
CV Creator
Generate professionally designed, ATS-optimized PDF CVs from structured data.
Features
- ATS-Optimized: Single-column layout that applicant tracking systems can parse
- Professional Design: F-pattern eye-tracking layout with proper typographic hierarchy
- Customizable: Choose accent colors and page size (Letter/A4)
- Pure Python: No system dependencies, works everywhere
Installation
pip install cv-creator-ats
Quick Start
from cv_creator import CVData, ContactInfo, ExperienceEntry, generate_cv
# Create contact information
contact = ContactInfo(
name="Jane Doe",
email="jane.doe@email.com",
phone="+1-555-0123",
city="San Francisco, CA",
linkedin="linkedin.com/in/janedoe",
portfolio="janedoe.com"
)
# Create experience entries
experience = [
ExperienceEntry(
company="Tech Corp",
title="Senior Software Engineer",
start_date="Jan 2020",
end_date="Present",
bullets=[
"Led team of 5 engineers building microservices architecture",
"Reduced API latency by 40% through optimization",
"Mentored 3 junior developers"
]
)
]
# Build CV data
cv_data = CVData(
contact=contact,
summary="Experienced software engineer with 5+ years building scalable systems",
experience=experience,
skills=["Python", "JavaScript", "AWS", "Docker", "React"],
accent_color="#1a2e5a", # Navy blue
page_size="letter" # or "a4"
)
# Generate PDF
pdf_path = generate_cv(cv_data, output_dir="/tmp")
print(f"CV generated: {pdf_path}")
Usage with Claude Web
Claude can install this package and generate CVs directly:
# Claude will do this automatically:
pip install cv-creator-ats
from cv_creator import CVData, ContactInfo, generate_cv
# ... collect CV data from conversation ...
pdf_path = generate_cv(cv_data, output_dir="/mnt/user-data/outputs")
present_files(pdf_path) # Shows PDF as artifact
Data Models
CVData
Main container for all CV information.
Fields:
contact(ContactInfo, required)summary(str, optional)experience(list[ExperienceEntry], optional)skills(list[str], optional)education(list[EducationEntry], optional)certifications(list[CertificationEntry], optional)projects(list[ProjectEntry], optional)languages(list[LanguageEntry], optional)accent_color(str, default: "#1a2e5a") - Hex color codepage_size(str, default: "letter") - "letter" or "a4"
ContactInfo
Fields:
name(str, required)email(str, required)phone(str, required)city(str, required)linkedin(str, optional)portfolio(str, optional)
ExperienceEntry
Fields:
company(str, required)title(str, required)start_date(str, required) - e.g., "Jan 2020"end_date(str, required) - e.g., "Present"bullets(list[str], max 5)
EducationEntry
Fields:
institution(str, required)degree(str, required)field(str, required)end_date(str, required)gpa(str, optional)
Other Models
See models.py for complete model definitions:
LanguageEntryCertificationEntryProjectEntry
Design Principles
The CV follows research-backed design principles:
- F-Pattern Layout: Important information in the top-left "hot zone"
- Single Column: ATS-friendly, no tables or columns that confuse parsers
- Typographic Hierarchy: Clear visual distinction between sections
- Professional Fonts: Inter (if available) with Helvetica fallback
- Optimal Margins: 0.75 inch margins for readability
Font Support
The package works with system fonts (Helvetica) by default. For the best appearance, you can optionally place Inter font files in the assets/ directory:
Inter-Regular.ttfInter-Bold.ttf
Download from: https://fonts.google.com/specimen/Inter
Requirements
- Python >= 3.10
- reportlab >= 4.0.0
License
MIT License - see LICENSE file for details
Author
Alejandro Cuartas
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cv_creator_ats-1.0.0.tar.gz.
File metadata
- Download URL: cv_creator_ats-1.0.0.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca79fbeefd085b14d90e265afb321401a4afec742dcf02ca367733ee70d3796f
|
|
| MD5 |
bbb1686f30ee53232189df7c4b6d0ada
|
|
| BLAKE2b-256 |
b7b44a63e5b47e96fb3c076727c3cf17a6023ff865f3ad54d2da3d2240e88aa3
|
File details
Details for the file cv_creator_ats-1.0.0-py3-none-any.whl.
File metadata
- Download URL: cv_creator_ats-1.0.0-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8e29c104e72785f9113c6c84119f08c16f56ffe18111c6cf9e23ba26e01cee5
|
|
| MD5 |
afc881fe6cae3319c94559729bc3e71d
|
|
| BLAKE2b-256 |
989f7c560dfaca3657af4c788c6ad0c54b9ad3fcbac4cb1170f2bc9a66d101e4
|