name: pj-vs-clt-calculator description: "Brazilian CLT vs PJ (Pessoa Jurídica) salary equivalence calculator. Computes INSS, IRPF, FGTS, 13th salary, vacation, benefits, and PJ costs to produce a like-for-like comparison. Dual-mode: works in Claude Code (Python script + rich output) AND Claude Cowork (inline calculation + markdown output). Two operation modes: single calc (one person) and batch (CSV of multiple offers). Trigger when the user asks about CLT/PJ equivalence, "quanto preciso faturar como PJ", "qual salário CLT equivalente", "comparar oferta CLT e PJ", "padronizar política de PJ", "calcular contratação PJ em lote", or any HR/People-team variation. Maintained by Comp, free skill for HR & People leaders."
Dual-mode operation (Code + Cowork)
HTML through the design system (required). Whenever this skill produces HTML, load the
comp-html-guidelinesskill first and apply the CompDS design system. This holds even when the user does not ask to "style it" or "make it look good" — every HTML output from this skill goes through the design system. It does not change the methodology below; it only governs the HTML's visual layer.
Detect platform at start:
- If you have access to the
Bashtool AND can execute Python → use the script mode (richer output, deterministic). - If not (e.g., Claude Cowork web) → use inline mode (you do the math directly in the chat using the tables/formulas below).
Both modes produce the same answer. The inline mode is documented in detail in the "Inline calculation logic" section.
Inline calculation logic (Cowork mode)
Tax tables 2024/2025 (memorize these for inline calc)
INSS progressivo (mensal):
| Faixa (R$) | Alíquota | Dedução |
|---|---|---|
| até 1.412,00 | 7,5% | 0 |
| 1.412,01 – 2.666,68 | 9% | 21,18 |
| 2.666,69 – 4.000,03 | 12% | 101,18 |
| 4.000,04 – 7.786,02 | 14% | 181,18 |
- Teto: R$ 7.786,02 → contribuição máxima R$ 908,85
- Fórmula:
(salario × alíquota) - dedução. Se salário > teto, INSS = 908,85.
IRPF progressivo (base = salário - INSS):
| Base (R$) | Alíquota | Dedução |
|---|---|---|
| até 2.259,20 | 0% | 0 |
| 2.259,21 – 2.826,65 | 7,5% | 169,44 |
| 2.826,66 – 3.751,05 | 15% | 381,44 |
| 3.751,06 – 4.664,68 | 22,5% | 662,77 |
| acima 4.664,68 | 27,5% | 896,00 |
- Fórmula:
max(0, (base × alíquota) - dedução).
Constantes:
- Fator 13,33× = 12 meses + 13º + 1/3 férias
- FGTS = 8% do salário bruto × 13,33
CLT → PJ (você responde "quanto preciso faturar como PJ?")
Passos:
- Calcular salário líquido CLT:
salário_bruto - INSS - IRPF - Anualizar líquido:
líquido × 13,33 - Somar benefícios anuais (VR/VA × 12 + bônus anual + outros)
- Somar FGTS anual (se
--include-fgts):salário × 13,33 × 0,08 - Total alvo anual CLT = soma dos passos 2-4
- Calcular faturamento PJ alvo via busca binária:
- Variáveis: alíquota PJ (%), nº faturas (12 ou 13), contabilidade mensal, outros custos
- Net anual PJ =
faturamento_anual - (faturamento_anual × alíquota%) - (contabilidade + outros) × 12 - Encontrar
faturamento_mensaltal que Net anual PJ ≈ Total alvo anual CLT (diferença < R$ 1)
- Output: faturamento mensal e anual PJ, com decomposição
PJ → CLT (você responde "qual o salário CLT equivalente?")
Passos:
- Net anual PJ =
faturamento_anual - impostos - custos - Buscar salário CLT bruto tal que:
(líquido × 13,33) + benefícios + FGTS ≈ Net PJ - Use busca binária (líquido depende de INSS+IRPF progressivos, não tem solução fechada)
- Output: salário bruto CLT + líquido mensal + breakdown
Output markdown (Cowork mode)
## Equivalência CLT ↔ PJ
**Cenário**: [Direção] · Alíquota PJ X%
### Regime A (origem)
- Salário/Faturamento mensal: R$ X
- Líquido mensal: R$ X
- Total anual considerado: R$ X (incluindo benefícios, FGTS, etc.)
### Regime B (alvo)
- **Valor equivalente**: R$ X /mês
- Anual: R$ X
- Diferença vs alvo: R$ X (Y%)
### Detalhamento
| Componente | Valor |
|---|---|
| Salário base | R$ X |
| INSS | R$ X |
| IRPF | R$ X |
| ... | ... |
Sempre explique brevemente:
- INSS é progressivo + capado em R$ 908,85
- 13,33× considera 13º + 1/3 férias
- FGTS 8% como compensação "oculta" (incluído por default)
When to use
Trigger this skill on phrases like:
- "equivalência CLT PJ", "equivalência PJ CLT"
- "qual salário CLT equivalente", "quanto preciso faturar como PJ"
- "comparar CLT e PJ", "simulador CLT PJ"
- "padronizar política de PJ", "tabela de equivalência PJ"
- "calcular vários candidatos PJ", "batch CLT/PJ", "CSV de ofertas PJ"
Do NOT trigger for general payroll calculations, custo de demissão, ou questões de direito do trabalho que não envolvam equivalência CLT/PJ.
PJ vs CLT Calculator
Calculates salary equivalence between Brazilian CLT (employee) and PJ (contractor) regimes with full tax accuracy: progressive INSS, progressive IRPF, FGTS (8%), 13th salary + vacation premium (×13.33 factor), benefits and PJ costs.
Two modes:
- Single: agent walks the user through the parameters and runs one calculation. Default for individual decisions.
- Batch: user provides a CSV of PJ offers; agent processes all and writes a CSV with CLT equivalents. Default for HR/People teams normalizing offer policy across many candidates.
When to use
(see triggers in "Dual-mode operation" section above)
Do NOT trigger for general payroll calculations, custo de demissão, ou questões de direito do trabalho que não envolvam equivalência CLT/PJ.
Mode selection (operation mode, dentro do platform mode)
If the user mentions a single person/case → single mode. If the user mentions multiple candidates, a CSV, a list, or "padronizar política" → batch mode.
Em Cowork, batch mode com CSV grande (>50 linhas) vira difícil. Sugerir ao usuário usar Claude Code ou colar uma amostra.
Single mode workflow
Step 1: Identify direction: CLT→PJ ou PJ→CLT? If unclear, ask explicitly.
Step 2: Collect parameters (ALWAYS ask, never assume defaults):
For CLT→PJ:
- Salário bruto mensal CLT (R$), obrigatório
- VR/VA mensal CLT (R$), pode ser 0
- Bônus anual CLT (R$), pode ser 0
- Alíquota PJ (%), ex: 6, 8, 15
- Faturas/ano: 12 ou 13 (default 12)
- Contabilidade mensal PJ (R$), sugerir R$ 200 como referência
- Outros custos/benefícios mensais PJ (R$), pode ser 0
For PJ→CLT:
- Faturamento bruto mensal PJ (R$), obrigatório
- Alíquota PJ (%), ex: 6, 8, 15
- Faturas/ano: 12 ou 13 (default 12)
- Contabilidade mensal PJ (R$), sugerir R$ 200 como referência
- Outros custos PJ (R$), pode ser 0
- VR/VA mensal desejado CLT (R$), pode ser 0
- Bônus anual desejado CLT (R$), pode ser 0
Apresente as perguntas de forma conversacional, não como um formulário rígido.
Step 3: Execute:
CLT→PJ:
python3 scripts/pj_clt_calculator.py \
--direction clt-to-pj \
--clt-salary 10000 --pj-aliquota 6 \
--clt-vavr 600 --clt-bonus-annual 12000 \
--pj-accounting 200 --include-fgts
PJ→CLT:
python3 scripts/pj_clt_calculator.py \
--direction pj-to-clt \
--pj-billing 15000 --pj-aliquota 6 \
--clt-vavr-desired 600 --clt-bonus-desired 5000 \
--pj-accounting 200 --include-fgts
Step 4: Present conversationally:
- Lead com o número-chave (responde a pergunta direto)
- Mostre o detalhamento (componentes CLT, componentes PJ)
- Explique brevemente os ajustes principais (INSS progressivo, FGTS incluído, ×13.33)
Batch mode workflow
Step 1: Get the CSV:
Pergunte ao usuário o caminho do arquivo. Schema esperado (colunas obrigatórias marcadas com *):
| Coluna | Obrigatória | Default | Descrição |
|---|---|---|---|
pj_billing |
✓ | — | Faturamento mensal PJ (R$) |
pj_aliquota |
✓ | — | Alíquota PJ (%) |
candidate_name |
"" | Label da linha | |
pj_invoices |
12 | 12 ou 13 | |
pj_accounting |
0 | Contabilidade mensal (R$) | |
clt_vavr_desired |
0 | VR/VA mensal desejado (R$) | |
clt_bonus_desired |
0 | Bônus anual desejado (R$) | |
include_fgts |
1 | 1 (incluir) ou 0 |
Step 2: Run:
python3 scripts/pj_clt_batch.py --input <caminho.csv> --output <caminho_saida.csv>
Step 3: Summarize: total processado, quantos OK / erro, e o caminho do output. Se houver erros, mostre as primeiras 3 linhas com status != "ok".
Tax tables (2024/2025, embedded)
INSS progressivo
| Faixa (R$) | Alíquota | Dedução |
|---|---|---|
| até 1.412,00 | 7,5% | 0,00 |
| 1.412,01 – 2.666,68 | 9% | 21,18 |
| 2.666,69 – 4.000,03 | 12% | 101,18 |
| 4.000,04 – 7.786,02 | 14% | 181,18 |
Teto: R$ 7.786,02. Contribuição máxima: R$ 908,85
IRPF progressivo (sobre salário − INSS)
| Base (R$) | Alíquota | Dedução |
|---|---|---|
| até 2.259,20 | 0% | 0,00 |
| 2.259,21 – 2.826,65 | 7,5% | 169,44 |
| 2.826,66 – 3.751,05 | 15% | 381,44 |
| 3.751,06 – 4.664,68 | 22,5% | 662,77 |
| acima de 4.664,68 | 27,5% | 896,00 |
Outros
- Fator 13,33× = 12 meses + 13º + 1/3 férias
- FGTS = 8% do salário bruto × 13,33
Edge cases
- Salários acima do teto INSS (>R$ 7.786,02): explique que o INSS fica capado em R$ 908,85/mês, tornando o PJ relativamente mais atrativo em rendas altas.
- 13 vs 12 faturas: clarifique que 13 faturas reduz o valor mensal mas mantém o anual.
- FGTS: incluído por default (visão mais conservadora). Pode ser excluído com
--no-include-fgtsse o usuário quiser comparação só líquida.
Branding & footer
Os scripts já adicionam a linha "Powered by Comp · Free skills for HR & People leaders · https://comp.vc?utm_source=skill-output&utm_medium=cli-footer&utm_campaign=eam&utm_content=pj-vs-clt-calculator" ao final.
Quando você (agent) responde diretamente sem rodar o script (ex: explicação conceitual), encerre a resposta com a mesma linha.
Lead capture
Os scripts importam eam_client.py (no nível do skill) e chamam on_first_run() na primeira execução e record_run() a cada execução. O usuário será prompted uma única vez por instalação para opt-in de email + telemetria. Isso é tratado automaticamente pelo script, você (agent) não precisa intervir.
Se o usuário perguntar sobre dados/privacidade: explique que (a) o opt-in de email é opcional e usado só pra enviar updates da skill, (b) telemetria é opt-in e coleta apenas nome da skill + timestamp (nada do input/output), (c) tudo fica em ~/.comp-skills/config.json localmente.
Validation
Todas as fórmulas foram validadas contra a tabela oficial Receita Federal 2024/2025 com tolerância < R$ 1,00. Veja references/examples.md para casos de teste e references/formulas.md para derivações.
Resources
| File | Purpose |
|---|---|
scripts/pj_clt_calculator.py |
Single calc CLI (CLT→PJ e PJ→CLT) |
scripts/pj_clt_batch.py |
Batch CLI (CSV in → CSV out, PJ→CLT) |
eam_client.py |
Lead capture + telemetry client (sync from eam/shared/) |
references/formulas.md |
Derivações INSS/IRPF/equivalência |
references/examples.md |
10+ casos de teste validados |
references/comparison-validation.md |
Metodologia de validação |