Extrair dados de currículo
Serviço para extrair dados de currículo: o arquivo que o candidato mandou — cada um num modelo diferente — vira um perfil estruturado com nome, contato, experiências, formação e habilidades. Para RHs, recrutadores e agências que recebem centenas de currículos por vaga e perdem a triagem inteira copiando dado para planilha.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
Trezentos currículos, trezentos formatos
Uma vaga publicada no Brasil rende currículo em todo formato imaginável: o modelo clássico de duas colunas, o template colorido de site de design, o documento de texto corrido, o PDF exportado do celular. O conteúdo é o mesmo — quem é, onde trabalhou, o que estudou —, mas cada arquivo esconde essas respostas num lugar. A extração resolve a padronização: todos os currículos saem na mesma estrutura de campos, e a triagem passa a comparar informação com informação, não arquivo com arquivo.
A estrutura que sai de cada currículo
Dados de contato (nome, e-mail, telefone, cidade), objetivo quando declarado, histórico profissional com empresas, cargos e períodos, formação acadêmica com instituições e datas, idiomas, habilidades e certificações. Cada experiência vem como um item separado, com começo e fim identificados — o que permite calcular tempo de casa e detectar períodos sem registro automaticamente no seu sistema. O motor lê o documento inteiro, inclusive currículos com diagramação em colunas ou seções fora da ordem tradicional, e devolve tudo no mesmo esqueleto de campos.
O que a ferramenta deliberadamente não faz
Ela extrai; ela não julga. Não existe nota de candidato, ranking automático nem filtro embutido — e isso é decisão de projeto, não limitação. Sistemas que pontuam currículo às cegas carregam vieses difíceis de auditar, e a legislação de proteção de dados trata decisão automatizada sobre pessoas como assunto sério. O desenho aqui é outro: a máquina faz o trabalho braçal de estruturar, e o critério de seleção continua explícito, auditável e humano — implementado por você, no seu sistema, com as suas regras visíveis.
Menos de dois centavos de dólar por candidato
US$ 0,003 por chamada mais US$ 0,0135 por currículo: cada candidato processado custa US$ 0,0165 — a vaga com 500 inscritos sai por US$ 8,25, em dólares americanos, pagos apenas quando há processamento. Sem plano por usuário, sem licença anual de ATS, sem mínimo mensal: agência que contrata em janeiro e para em fevereiro paga exatamente o que usou. O limite técnico por chamada é 25 MB e 10 páginas — folga suficiente até para os currículos mais entusiasmados.
Casos de uso
Agência de recrutamento montando shortlist no prazo
Uma agência em Belo Horizonte recebeu 420 currículos para uma vaga de analista. A extração estruturou todos em minutos, e a consultora filtrou por formação e tempo de experiência ainda no primeiro dia, em vez de gastar a semana lendo PDF.
Banco de talentos que não morre na pasta
O RH da Distribuidora Horizonte Verde S.A. processa os currículos recebidos espontaneamente e mantém um banco de talentos pesquisável por cargo e cidade. Quando abre vaga, a primeira busca é interna — sobre dados, não sobre uma pasta de arquivos.
E-mail de vagas entupido virando planilha
Uma pequena empresa publica vaga com candidatura por e-mail e recebe 200 anexos. Os currículos passam pela extração e viram uma planilha comparável — nome, formação, última experiência — antes da primeira entrevista ser marcada.
Perguntas frequentes
Só aceita PDF ou currículo em Word também entra?
Os formatos comuns de documento entram — o corriqueiro no Brasil é PDF e Word, e ambos são processados. O limite é de 25 MB e 10 páginas por arquivo, o que acomoda qualquer currículo do mundo real.
A ferramenta dá nota ou ordena os candidatos?
Não, por decisão de projeto: ela estrutura os dados e para aí. Ranquear pessoas automaticamente sem critério auditável é receita para viés — preferimos entregar a informação organizada e deixar a régua de seleção explícita, no seu processo.
Currículos com design diferente (duas colunas, infográfico) confundem a leitura?
Diagramação em colunas e seções fora de ordem são lidas normalmente — o motor entende o documento visualmente, não linha a linha. O caso limite são currículos-imagem com pouquíssimo texto e muita arte; neles, o que estiver escrito é o que sai.
Como tratamos os dados dos candidatos perante a LGPD?
O currículo enviado é usado somente para gerar a extração devolvida a você — não é retido para outros fins nem reaproveitado. Sua empresa é a controladora dos dados dos candidatos; base legal, prazo de guarda e descarte do processo seletivo são definições suas.
Currículo em inglês para vaga internacional funciona?
Sim: a estrutura extraída é a mesma independentemente do idioma do documento, o que ajuda justamente em processos bilíngues onde metade dos candidatos manda a versão em inglês.
Quanto custa e existe pacote mínimo?
US$ 0,003 pela chamada mais US$ 0,0135 por currículo — menos de US$ 0,02 por candidato, em dólares americanos, sem pacote mínimo nem assinatura. Pagamento direto via PayPal; para dúvidas antes de usar, tem gente de verdade no WhatsApp e no e-mail.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/ocr/resume \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/ocr/resume", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ocr/resume",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ocr/resume", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ocr/resume", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"input": "…"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.resume",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 25 |
max_pages | 10 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
422 | task_failed | A tarefa falhou do nosso lado. Você não paga nada por ela. |