Instalación

Usa tu propia clave de IA

Conecta Claude, ChatGPT, Gemini, DeepSeek, Groq o un modelo local con Ollama a Resume Matcher con tu clave de API, en Configuración o con variables de entorno.

Por qué usar tu propio modelo

Resume Matcher no incluye ningún modelo de IA. Lo conectas tú: un proveedor en la nube del que ya tienes una clave, o un modelo gratuito que corre en tu propio hardware. Tú eliges el proveedor y el modelo, y con ellos el costo y adónde va el texto de tu currículum.

Proveedores compatibles

Proveedor Tipo Modelo por defecto en Configuración
OpenAI Nube gpt-5-nano-2025-08-07
Anthropic (Claude) Nube claude-haiku-4-5-20251001
Google Gemini Nube gemini-3-flash-preview
DeepSeek Nube deepseek-chat
OpenRouter Nube deepseek/deepseek-chat
Groq Nube llama-3.3-70b-versatile
Azure AI Foundry Nube mistral-large-latest
Ollama Local gemma3:4b
Servidor compatible con OpenAI (llama.cpp, vLLM, LM Studio) Local Ninguno, escribe el tuyo

El valor por defecto es un punto de partida. El campo del modelo es texto libre, así que puedes escribir cualquier nombre de modelo que ofrezca tu proveedor.

Opción A: la página de Configuración

  1. Abre http://localhost:3000/settings.
  2. Elige tu proveedor.
  3. Pega tu clave de API. Para Ollama o un servidor compatible con OpenAI, escribe en su lugar la URL del servidor.
  4. Cambia el nombre del modelo si quieres otro.
  5. Haz clic en Guardar y después en Probar conexión.

Probar conexión envía la palabra “Hi” a tu proveedor e informa de si respondió. La configuración que guardas aquí tiene prioridad sobre las variables de entorno.

Opción B: variables de entorno

Cuatro variables configuran el backend:

Variable Qué define
LLM_PROVIDER Uno de openai, anthropic, gemini, deepseek, openrouter, groq, azure_foundry, ollama, openai_compatible
LLM_MODEL El nombre del modelo
LLM_API_KEY La clave de tu proveedor
LLM_API_BASE La URL del servidor, para Ollama y servidores compatibles con OpenAI

En una instalación local, ponlas en apps/backend/.env. En Docker, pásalas como entorno del contenedor. La imagen de Docker también lee secretos de Docker: añade _FILE a cualquiera de las cuatro variables para cargar su valor desde un archivo, por ejemplo LLM_API_KEY_FILE=/run/secrets/llm_api_key.

Anthropic, instalación local (apps/backend/.env):

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

OpenAI, instalación local (apps/backend/.env):

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

Ollama en el host, Resume Matcher en 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 locales

Ollama. Instálalo desde ollama.com, descarga un modelo y después elige Ollama en Configuración:

ollama pull gemma3:4b

La URL por defecto es http://localhost:11434. Desde dentro de Docker, usa http://host.docker.internal:11434. En Linux, usa la dirección IP del host o arranca el contenedor con --network=host.

Servidores compatibles con OpenAI. llama.cpp, vLLM, LM Studio y cualquier otro servidor que hable la API Chat Completions de OpenAI funcionan a través del proveedor openai_compatible. Pon en LLM_API_BASE la URL del servidor y en LLM_MODEL el modelo que el servidor está sirviendo.

Modelos lentos. Cada petición de IA corre bajo un único plazo, REQUEST_TIMEOUT_SECONDS (por defecto 240, rango de 30 a 1800). Un modelo grande en hardware modesto puede excederlo. Sube REQUEST_TIMEOUT_SECONDS en el entorno del backend y NEXT_PUBLIC_REQUEST_TIMEOUT_MS en el entorno del frontend (consulta apps/frontend/.env.sample).

Claves y servidores locales. El backend nunca envía LLM_API_KEY a Ollama ni a un servidor compatible con OpenAI, así que una clave de pago de la nube en tu .env no puede filtrarse a uno local.

Modelos pequeños. Las notas de diseño del proyecto advierten de que los modelos más pequeños tienen problemas con el formato estructurado de edición que usa el paso de adaptación.

Para la guía completa con Docker, consulta Docker + Ollama.

Dónde se guarda tu clave

Las claves que guardas en Configuración van a la base de datos SQLite local, cifradas con Fernet. La clave de cifrado vive en .secret_key dentro de la carpeta de datos (apps/backend/data/ en una instalación local, el volumen de Docker en el otro caso), creada con permisos 0600 para que solo tu cuenta de usuario pueda leerla. El backend elimina las claves antes de escribir config.json en esa misma carpeta, así que el archivo de configuración nunca contiene ninguna.

LOG_LLM=DEBUG escribe las claves en el log en texto plano. No lo actives en un equipo compartido.

Qué se envía a tu proveedor

La aplicación no envía nada a los autores de Resume Matcher y no contiene telemetría. El texto de tu currículum, incluidos tu nombre y datos de contacto, y la descripción del puesto van al proveedor que elegiste y a nadie más. No hay ningún paso de anonimización antes del envío. Con un modelo local, nada sale de tu máquina.

Función Se envía al proveedor
Subida del currículum (análisis) El texto completo del currículum, incluidos nombre, correo, teléfono y enlaces
Análisis de la descripción del puesto, título del currículum La descripción del puesto
Adaptación (plan de habilidades, cambios del diff) La descripción del puesto más el JSON completo del currículum
Pasada de palabras clave tras la adaptación El JSON del currículum adaptado y del maestro más los primeros 2.000 caracteres de la descripción del puesto
Carta de presentación, mensaje de contacto El JSON completo del currículum más la descripción del puesto
Preparación para la entrevista El JSON del currículum (hasta 30.000 caracteres) más la descripción del puesto (hasta 12.000 caracteres)
Puntuación de viñetas El texto de la viñeta, la descripción del puesto y las palabras clave extraídas
Enriquecimiento, regeneración, Asistente de currículum El currículum o el elemento más tus respuestas e instrucciones
Probar conexión La palabra “Hi”

Tus otras claves de API, el archivo de base de datos, el tablero de seguimiento, la configuración y los PDF se quedan en local. La única otra llamada de red es la librería de IA (LiteLLM) descargando una lista pública de precios de modelos al arrancar; no lleva ninguno de tus datos y, sin conexión, usa una copia incluida.

Costo

Resume Matcher es gratuito y de código abierto. Un proveedor en la nube factura a tu propia cuenta, a sus precios, cada petición que hace la aplicación. La aplicación no registra ese gasto, así que revisa el panel de tu proveedor. Un modelo local no cuesta nada por petición.

Solución de problemas

Probar conexión falla

Revisa la clave de API, o la URL del servidor en el caso de Ollama y los servidores compatibles con OpenAI. Guarda y vuelve a probar.

Docker no llega a Ollama

Usa http://host.docker.internal:11434 como URL de Ollama, no localhost. En Linux, usa la dirección IP del host o ejecuta el contenedor con --network=host.

Tiempos de espera agotados con un modelo local

Sube REQUEST_TIMEOUT_SECONDS (hasta 1800) en el backend y NEXT_PUBLIC_REQUEST_TIMEOUT_MS en el frontend.

Un cambio en .env no tiene efecto

La configuración guardada en la interfaz tiene prioridad sobre las variables de entorno. Abre Configuración y cambia el valor ahí.

Siguientes pasos