Skip to main content

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:

Primeira página do currículo gerado

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 principal
  • docs/examples/resume_full.json: exemplo mais completo
  • docs/schema.json: referência do formato esperado
  • src/softworker/: código da CLI, validação e renderização
  • template/: templates Handlebars, Jsonnet do template context, parciais e estilos CSS

Como funciona

  1. A CLI lê um arquivo JSON com os dados do currículo.
  2. O conteúdo é validado e transformado por Jsonnet para o modelo consumido pelo template.
  3. 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:

  • basics
  • work
  • skills
  • projects
  • certificates
  • awards
  • education
  • languages
  • profiles
  • publications
  • volunteer
  • interests
  • references

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

softworker-1.0.1.tar.gz (27.7 kB view details)

Uploaded Source

Built Distribution

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

softworker-1.0.1-py3-none-any.whl (41.7 kB view details)

Uploaded Python 3

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

Hashes for softworker-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a3d675f036a0bc2cd5653903fcddc32f6930491feb1b1db32b7a783a5ace793b
MD5 b8e72325f7d905b324c2f78b43b09e88
BLAKE2b-256 277f64efaf6681368708682c985ab11c2c23162608ae71bd7aec5ad079a244b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for softworker-1.0.1.tar.gz:

Publisher: publish.yml on nayetdet/softworker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for softworker-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3d1b5646ee55a68947de716dc24e264c3fd1d11e1e123d304ca280c3b0f8c2c9
MD5 c95913a60bc105112316e6d9ea120533
BLAKE2b-256 53c2e893835abcd7d2ff6dea4df5fb14db273c32a6dc700fdfd48a8369329839

See more details on using hashes here.

Provenance

The following attestation bundles were made for softworker-1.0.1-py3-none-any.whl:

Publisher: publish.yml on nayetdet/softworker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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