Biblioteca Python para gerar currículos ATS-friendly em PDF a partir de dados estruturados em JSON.
Project description
SoftWorker
Biblioteca Python para gerar currículos ATS-friendly em PDF a partir de dados estruturados em JSON Resume.
Você fornece um arquivo JSON com os dados do currículo, executa a CLI e o projeto renderiza um PDF A4 pronto para uso. O tema foi pensado para ser legível tanto por recrutadores quanto por sistemas de triagem (ATS).
Prévia
Primeira página do PDF gerado com o exemplo principal do projeto:
O que o projeto faz
- Lê currículos no formato JSON Resume.
- Transforma o JSON Resume em um template context reutilizável com Jsonnet.
- Renderiza o conteúdo em HTML usando templates Handlebars.
- Converte o HTML para PDF A4 com WeasyPrint.
- Gera PDF acessível com
pdf/ua-1.
Requisitos
- Python 3.14+
- Dependências nativas do WeasyPrint instaladas no sistema
Uso rápido
Instale a biblioteca via pip:
pip install softworker
Gere o PDF usando o exemplo principal:
uv run python -m softworker docs/examples/resume.json
Por padrão, o arquivo é salvo no diretório atual com o mesmo nome base do JSON:
resume.pdf
Se quiser definir o caminho de saída:
uv run python -m softworker docs/examples/resume.json /tmp/curriculo.pdf
Se quiser renderizar em outro idioma:
uv run python -m softworker docs/examples/resume.json /tmp/resume-en.pdf --resume-language en_US
Estrutura principal
docs/examples/resume.json: exemplo principaldocs/examples/resume_full.json: exemplo mais completodocs/schema.json: referência do formato esperadosrc/softworker/: código da CLI, validação e renderizaçãotemplate/: templates Handlebars, Jsonnet do template context, parciais e estilos CSS
Como funciona
- A CLI lê um arquivo JSON com os dados do currículo.
- O conteúdo é validado e transformado por Jsonnet para o modelo consumido pelo template.
- O HTML final é renderizado com Handlebars e convertido em PDF.
Uso como biblioteca
Também é possível gerar o PDF diretamente em 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("docs/examples/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)
Seções suportadas
O tema atual entende estas seções do JSON Resume:
basicsworkskillsprojectscertificatesawardseducationlanguagesprofilespublicationsvolunteerinterestsreferences
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 softworker-1.0.1.tar.gz.
File metadata
- Download URL: softworker-1.0.1.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3d675f036a0bc2cd5653903fcddc32f6930491feb1b1db32b7a783a5ace793b
|
|
| MD5 |
b8e72325f7d905b324c2f78b43b09e88
|
|
| BLAKE2b-256 |
277f64efaf6681368708682c985ab11c2c23162608ae71bd7aec5ad079a244b1
|
Provenance
The following attestation bundles were made for softworker-1.0.1.tar.gz:
Publisher:
publish.yml on nayetdet/softworker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
softworker-1.0.1.tar.gz -
Subject digest:
a3d675f036a0bc2cd5653903fcddc32f6930491feb1b1db32b7a783a5ace793b - Sigstore transparency entry: 1510372884
- Sigstore integration time:
-
Permalink:
nayetdet/softworker@78d3abbfb5176afb0bfa93b58c071f5db7febbe2 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/nayetdet
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@78d3abbfb5176afb0bfa93b58c071f5db7febbe2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file softworker-1.0.1-py3-none-any.whl.
File metadata
- Download URL: softworker-1.0.1-py3-none-any.whl
- Upload date:
- Size: 41.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d1b5646ee55a68947de716dc24e264c3fd1d11e1e123d304ca280c3b0f8c2c9
|
|
| MD5 |
c95913a60bc105112316e6d9ea120533
|
|
| BLAKE2b-256 |
53c2e893835abcd7d2ff6dea4df5fb14db273c32a6dc700fdfd48a8369329839
|
Provenance
The following attestation bundles were made for softworker-1.0.1-py3-none-any.whl:
Publisher:
publish.yml on nayetdet/softworker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
softworker-1.0.1-py3-none-any.whl -
Subject digest:
3d1b5646ee55a68947de716dc24e264c3fd1d11e1e123d304ca280c3b0f8c2c9 - Sigstore transparency entry: 1510372980
- Sigstore integration time:
-
Permalink:
nayetdet/softworker@78d3abbfb5176afb0bfa93b58c071f5db7febbe2 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/nayetdet
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@78d3abbfb5176afb0bfa93b58c071f5db7febbe2 -
Trigger Event:
push
-
Statement type: