Configuração

Traga sua própria chave de IA

Conecte Claude, ChatGPT, Gemini, DeepSeek, Groq ou um modelo local do Ollama ao Resume Matcher com sua chave de API, via Configurações ou variáveis de ambiente.

Por que trazer seu próprio modelo

O Resume Matcher não vem com nenhum modelo de IA. Você conecta um por conta própria: um provedor na nuvem do qual já tem uma chave, ou um modelo gratuito rodando no seu próprio hardware. Você escolhe o provedor e o modelo, e com eles o custo e o destino do texto do seu currículo.

Provedores suportados

Provedor Tipo Modelo padrão em Configurações
OpenAI Nuvem gpt-5-nano-2025-08-07
Anthropic (Claude) Nuvem claude-haiku-4-5-20251001
Google Gemini Nuvem gemini-3-flash-preview
DeepSeek Nuvem deepseek-chat
OpenRouter Nuvem deepseek/deepseek-chat
Groq Nuvem llama-3.3-70b-versatile
Azure AI Foundry Nuvem mistral-large-latest
Ollama Local gemma3:4b
Servidor compatível com a API da OpenAI (llama.cpp, vLLM, LM Studio) Local Nenhum, digite o seu

O padrão é um ponto de partida. O campo de modelo é texto livre, então você pode digitar qualquer nome de modelo que o seu provedor ofereça.

Opção A: a página Configurações

  1. Abra http://localhost:3000/settings.
  2. Escolha seu provedor.
  3. Cole sua chave de API. Para Ollama ou um servidor compatível com a API da OpenAI, informe a URL do servidor no lugar da chave.
  4. Mude o nome do modelo se quiser outro.
  5. Clique em Salvar e depois em Testar Conexão.

Testar Conexão envia a única palavra “Hi” ao seu provedor e informa se ele respondeu. As configurações que você salva aqui têm precedência sobre as variáveis de ambiente.

Opção B: variáveis de ambiente

Quatro variáveis configuram o backend:

Variável O que define
LLM_PROVIDER Um entre openai, anthropic, gemini, deepseek, openrouter, groq, azure_foundry, ollama, openai_compatible
LLM_MODEL O nome do modelo
LLM_API_KEY A chave do seu provedor
LLM_API_BASE URL do servidor, para Ollama e servidores compatíveis com a API da OpenAI

Para uma instalação local, coloque-as em apps/backend/.env. Para Docker, passe-as como variáveis de ambiente do contêiner. A imagem Docker também lê Docker secrets: acrescente _FILE a qualquer uma das quatro variáveis para carregar o valor de um arquivo, por exemplo LLM_API_KEY_FILE=/run/secrets/llm_api_key.

Anthropic, instalação local (apps/backend/.env):

LLM_PROVIDER=anthropic
LLM_MODEL=claude-haiku-4-5-20251001
LLM_API_KEY=your-api-key

OpenAI, instalação local (apps/backend/.env):

LLM_PROVIDER=openai
LLM_MODEL=gpt-5-nano-2025-08-07
LLM_API_KEY=your-api-key

Ollama no host, Resume Matcher no Docker:

docker run --name resume-matcher -p 3000:3000 \
  -v resume-data:/app/backend/data \
  -e LLM_PROVIDER=ollama \
  -e LLM_MODEL=gemma3:4b \
  -e LLM_API_BASE=http://host.docker.internal:11434 \
  ghcr.io/srbhr/resume-matcher:latest

Modelos locais

Ollama. Instale a partir de ollama.com, baixe um modelo e depois escolha Ollama em Configurações:

ollama pull gemma3:4b

A URL padrão é http://localhost:11434. De dentro do Docker, use http://host.docker.internal:11434. No Linux, use o endereço IP do host ou inicie o contêiner com --network=host.

Servidores compatíveis com a API da OpenAI. llama.cpp, vLLM, LM Studio e qualquer outro servidor que fale a API Chat Completions da OpenAI funcionam pelo provedor openai_compatible. Defina LLM_API_BASE com a URL do servidor e LLM_MODEL com o modelo que o servidor está servindo.

Modelos lentos. Cada requisição de IA roda com um prazo único, REQUEST_TIMEOUT_SECONDS (padrão 240, intervalo de 30 a 1800). Um modelo grande em hardware modesto pode estourar esse limite. Aumente REQUEST_TIMEOUT_SECONDS no ambiente do backend e NEXT_PUBLIC_REQUEST_TIMEOUT_MS no ambiente do frontend (veja apps/frontend/.env.sample).

Chaves e servidores locais. O backend nunca envia LLM_API_KEY para o Ollama ou para um servidor compatível com a API da OpenAI, então uma chave paga de nuvem no seu .env não vaza para um servidor local.

Modelos pequenos. As notas de design do projeto avisam que modelos menores têm dificuldade com o formato estruturado de edição que a etapa de personalização usa.

Para o passo a passo completo com Docker, veja Docker + Ollama.

Onde sua chave fica guardada

As chaves que você salva em Configurações vão para o banco SQLite local, criptografadas com Fernet. A chave de criptografia fica em .secret_key na pasta de dados (apps/backend/data/ em uma instalação local, o volume do Docker nos demais casos), criada com permissões 0600, de modo que só a sua conta de usuário consegue lê-la. O backend remove as chaves antes de gravar o config.json na mesma pasta, então o arquivo de configurações nunca contém uma.

LOG_LLM=DEBUG grava as chaves no log em texto puro. Não ative em uma máquina compartilhada.

O que é enviado ao seu provedor

O app não envia nada aos autores do Resume Matcher e não contém telemetria. O texto do seu currículo, incluindo nome e dados de contato, e a descrição da vaga vão para o provedor que você escolheu e para mais ninguém. Nenhum dado é mascarado ou removido antes do envio. Com um modelo local, nada sai da sua máquina.

Recurso Enviado ao provedor
Envio do currículo (parsing) Texto completo do currículo, incluindo nome, e-mail, telefone e links
Análise da descrição da vaga, título do currículo A descrição da vaga
Personalização (plano de habilidades, edições em diff) Descrição da vaga mais o JSON completo do currículo
Passagem de palavras-chave após a personalização JSON do currículo personalizado e do principal mais os primeiros 2.000 caracteres da descrição da vaga
Carta de apresentação, mensagem de contato JSON completo do currículo mais a descrição da vaga
Preparação para entrevista JSON do currículo (até 30.000 caracteres) mais a descrição da vaga (até 12.000 caracteres)
Pontuação de bullets Texto do bullet, descrição da vaga e palavras-chave extraídas
Aprimoramento, regenerar, Assistente de currículo O currículo ou item mais suas respostas e instruções
Testar Conexão A palavra “Hi”

Suas outras chaves de API, o arquivo do banco, o quadro de acompanhamento, as configurações e os PDFs ficam locais. A única outra chamada de rede é a biblioteca de IA (LiteLLM) baixando uma lista pública de preços de modelos na inicialização; ela não carrega nenhum dado seu e, offline, usa uma cópia embutida.

Custo

O Resume Matcher é gratuito e open source. Um provedor na nuvem cobra da sua própria conta, nos preços dele, por cada requisição que o app faz. O app não acompanha esse gasto, então confira o painel do seu provedor. Um modelo local não custa nada por requisição.

Solução de problemas

Testar Conexão falha

Confira a chave de API, ou a URL do servidor no caso do Ollama e de servidores compatíveis com a API da OpenAI. Salve e teste de novo.

O Docker não alcança o Ollama

Use http://host.docker.internal:11434 como URL do Ollama, não localhost. No Linux, use o endereço IP do host ou rode o contêiner com --network=host.

Timeouts com um modelo local

Aumente REQUEST_TIMEOUT_SECONDS (até 1800) no backend e NEXT_PUBLIC_REQUEST_TIMEOUT_MS no frontend.

Uma mudança no .env não tem efeito

As configurações salvas na interface têm precedência sobre as variáveis de ambiente. Abra Configurações e mude o valor lá.

Próximos passos