Generate ATS-friendly PDF resumes from structured JSON Resume data.
Provide a JSON Resume file, run the CLI, and SoftWorker renders a ready-to-use A4 PDF designed to be readable by both recruiters and applicant tracking systems (ATS).
First page of the PDF generated from the project's main example:
- Accepts resumes in JSON Resume format.
- Produces ready-to-use A4 PDFs.
- Generates accessible PDFs suitable for recruiters and applicant tracking systems (ATS).
- Python 3.14+
- WeasyPrint's native system dependencies
python -m pip install softworkerGenerate a PDF from a JSON Resume file:
python -m softworker resume.jsonBy default, the file is saved in the current directory with the same base name as the JSON file:
resume.pdf
To define an output path:
python -m softworker resume.json /tmp/resume.pdfTo render the resume in another language:
python -m softworker resume.json /tmp/resume-en.pdf --resume-language en_USYou can also generate the PDF directly in Python:
import json
from pathlib import Path
from typing import Any, Dict
from softworker import render_pdf_from_dict
from softworker.enums import ResumeLanguage
resume_path = Path("resume.json")
output_path = Path("resume.pdf")
resume: Dict[str, Any] = json.loads(resume_path.read_text(encoding="utf-8"))
pdf: bytes = render_pdf_from_dict(resume, resume_language=ResumeLanguage.PT_BR)
output_path.write_bytes(pdf)The current theme supports these JSON Resume sections:
basicsworkskillsprojectscertificatesawardseducationlanguagesprofilespublicationsvolunteerinterestsreferences
