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.0.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.0-py3-none-any.whl (41.7 kB view details)

Uploaded Python 3

File details

Details for the file softworker-1.0.0.tar.gz.

File metadata

  • Download URL: softworker-1.0.0.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.0.tar.gz
Algorithm Hash digest
SHA256 52445f442acc04186daa847265330c7ddc8e191c8c7db0208d4ef3b08607c2b9
MD5 c538b93846ccb51f75ebae591861deda
BLAKE2b-256 b913c7552ef571c03ecabac56250ee2bac5677bf9f4ef7d0a5a8b350497bf856

See more details on using hashes here.

Provenance

The following attestation bundles were made for softworker-1.0.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: softworker-1.0.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 05b248ace4d3d81f81e5e8e9504f7fb7320e02639418a0b9f37e4b9edc741027
MD5 10fa0456cd3248105cf4df380aae9449
BLAKE2b-256 e016501225e603ea4af4f078deef6ae46cde1dd3c5a77062568a46a9a94d6a8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for softworker-1.0.0-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