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.
Metadata
Release files for cv-creator-ats 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cv_creator_ats-1.0.0.tar.gz | 9.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cv_creator_ats-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.0 kB
Release files / cv_creator_ats-1.0.0.tar.gz
| Download URL | cv_creator_ats-1.0.0.tar.gz |
|---|---|
| Size | 9.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ca79fbeefd085b14d90e265afb321401a4afec742dcf02ca367733ee70d3796f
|
|
BLAKE2b-256 checksum How to use checksums |
b7b44a63e5b47e96fb3c076727c3cf17a6023ff865f3ad54d2da3d2240e88aa3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.0
|
Release files / cv_creator_ats-1.0.0-py3-none-any.whl
| Download URL | cv_creator_ats-1.0.0-py3-none-any.whl |
|---|---|
| Size | 8.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d8e29c104e72785f9113c6c84119f08c16f56ffe18111c6cf9e23ba26e01cee5
|
|
BLAKE2b-256 checksum How to use checksums |
989f7c560dfaca3657af4c788c6ad0c54b9ad3fcbac4cb1170f2bc9a66d101e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.0
|