Documentazione

Usa la tua chiave IA

Collega Claude, ChatGPT, Gemini, DeepSeek, Groq o Ollama in locale a Resume Matcher con la tua chiave API, oppure usa il tuo abbonamento ChatGPT o Claude.

Perché portare il tuo modello

Resume Matcher non include alcun modello di IA. Sei tu a collegarne uno: un fornitore cloud di cui hai già una chiave, un modello gratuito che gira sul tuo hardware, o un abbonamento ChatGPT o Claude che paghi già. Scegli il fornitore e il modello, e con loro il costo e la destinazione del testo del tuo CV.

Fornitori supportati

Fornitore Tipo Modello predefinito nelle impostazioni
OpenAI Cloud gpt-5-nano-2025-08-07
Anthropic (Claude) Cloud claude-haiku-4-5-20251001
Google Gemini Cloud gemini-3-flash-preview
DeepSeek Cloud deepseek-chat
OpenRouter Cloud deepseek/deepseek-chat
Groq Cloud llama-3.3-70b-versatile
Azure AI Foundry Cloud mistral-large-latest
Ollama Locale gemma3:4b
Server compatibile con OpenAI (llama.cpp, vLLM, LM Studio) Locale Segnaposto custom-model su http://localhost:8080/v1; sostituisci entrambi con i valori del tuo server
Abbonamento ChatGPT (Sign in with ChatGPT) Il tuo abbonamento ChatGPT Scelto tra i modelli del tuo account dopo l’accesso
Abbonamento Claude (tramite Claude Code) Il tuo abbonamento Claude Il modello predefinito di Claude Code

Il modello predefinito è solo un punto di partenza. Il campo del modello è libero: puoi scrivere qualsiasi nome di modello offerto dal tuo fornitore. Le due opzioni in abbonamento non richiedono una chiave API e hanno alcune avvertenze; vedi l’opzione C.

L’interfaccia dell’app non esiste in italiano: pulsanti e campi sono quindi indicati con il nome inglese, per esempio Save e Test Connection.

Opzione A: la pagina delle impostazioni

  1. Apri http://localhost:3000/settings.
  2. Scegli il tuo fornitore.
  3. Incolla la tua chiave API. Per Ollama o un server compatibile con OpenAI, inserisci invece l’URL del server. Per un abbonamento ChatGPT o Claude, vedi l’opzione C.
  4. Cambia il nome del modello se ne vuoi un altro.
  5. Per passare da un proxy o da un endpoint aggregatore, compila Base URL. Lascialo vuoto per usare quello del fornitore.
  6. Fai clic su Save e poi su Test Connection.

Pagina delle impostazioni di Resume Matcher: un banner per sponsor e Discord, i riquadri sullo stato del sistema, gli undici pulsanti dei fornitori con OpenAI selezionato (tra cui Claude Plan e ChatGPT Plan) e i campi modello, chiave API, base URL e reasoning effort sopra i pulsanti Save e Test Connection

Test Connection invia al tuo fornitore la sola parola «Hi» e indica se ha risposto. Il pannello System Status, in cima alla pagina, mostra se l’LLM funziona e se il database è connesso. Le impostazioni salvate qui hanno la precedenza sulle variabili d’ambiente.

Ogni fornitore conserva la propria chiave salvata, quindi cambiare fornitore non cancella l’altra.

Reasoning effort. Questa impostazione riguarda solo i modelli capaci di ragionamento (famiglia gpt-5, Claude 3.7+, DeepSeek R1, OpenAI o1/o3). Auto non invia nulla ed è la scelta più compatibile.

Opzione B: le variabili d’ambiente

Quattro variabili configurano il backend:

Variabile Cosa imposta
LLM_PROVIDER Uno tra openai, anthropic, gemini, deepseek, openrouter, groq, azure_foundry, ollama, openai_compatible, chatgpt, claude_cli
LLM_MODEL Il nome del modello
LLM_API_KEY La chiave del tuo fornitore
LLM_API_BASE L’URL del server, per Ollama e i server compatibili con OpenAI

Per un’installazione locale, mettile in apps/backend/.env. Con Docker, passale come variabili d’ambiente del container. L’immagine Docker legge anche i Docker secrets: aggiungi _FILE a una delle quattro variabili per caricarne il valore da un file, per esempio LLM_API_KEY_FILE=/run/secrets/llm_api_key.

Anthropic, installazione locale (apps/backend/.env):

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

OpenAI, installazione locale (apps/backend/.env):

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

Ollama sulla macchina host, Resume Matcher in 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

Opzione C: il tuo abbonamento ChatGPT o Claude

Se paghi già ChatGPT o Claude, Resume Matcher può usare quell’abbonamento al posto di una chiave API. Entrambe le opzioni sono sviluppate dalla community e nessuna offre un accesso garantito: se ti serve un accesso garantito, usa una chiave API di OpenAI o di Anthropic.

Abbonamento ChatGPT

ChatGPT Plan selezionato nelle impostazioni: Not connected, un pulsante Continue with ChatGPT, il campo del modello e un avviso Preview su Sign in with ChatGPT, sui limiti dell’abbonamento e sul fatto che l’opzione viene dalla community, sopra un pulsante Save disattivato

Questa opzione usa Sign in with ChatGPT, il meccanismo ufficiale di OpenAI per le app open source. Funziona con ChatGPT Plus e Pro.

  1. Avvia Resume Matcher, poi apri le impostazioni in un browser sulla stessa macchina, all’indirizzo http://localhost:3000.
  2. Scegli ChatGPT plan e fai clic su Continue with ChatGPT.
  3. Accedi a OpenAI e autorizza Resume Matcher a usare il tuo abbonamento.
  4. Tornato nelle impostazioni, scegli uno dei modelli del tuo account e fai clic su Save.

Prima di farci affidamento:

  • È un’anteprima. Sign in with ChatGPT per le app open source è un’anteprima di OpenAI e può cambiare.
  • Le richieste vanno direttamente a OpenAI. Partono dalla tua macchina verso l’API di OpenAI, e i token di accesso sono salvati cifrati sulla tua macchina.
  • Conta nei limiti del tuo abbonamento ChatGPT. Con Plus, il limite sulle cinque ore è condiviso con le altre app che usano il tuo abbonamento. Pro non ha il limite sulle cinque ore.
  • Accedi dalla stessa macchina. OpenAI rimanda il browser solo a 127.0.0.1, quindi l’accesso deve avvenire in un browser sulla macchina che esegue Resume Matcher. Funziona con la configurazione Docker predefinita, aperta su http://localhost:3000, ma non da un altro computer né attraverso il dominio di un reverse proxy.

Disconnect chiude la sessione ed elimina i token; Manage usage apre le impostazioni di utilizzo di ChatGPT. Con le variabili d’ambiente, imposta LLM_PROVIDER=chatgpt e LLM_MODEL su un modello del tuo account; l’accesso va comunque fatto dalle impostazioni.

Abbonamento Claude (tramite Claude Code)

Claude Plan selezionato nelle impostazioni: una nota che indica che esegue la CLI di Claude Code con l’accesso fatto su questa macchina, e un avviso «Not officially supported» sulla policy di Anthropic, sulle credenziali e sui limiti di utilizzo

Questa opzione esegue la tua CLI di Claude Code, installata sulla stessa macchina, a cui accedi tu stesso:

claude auth login

Poi scegli Claude plan nelle impostazioni e fai clic su Save. Con le variabili d’ambiente, imposta LLM_PROVIDER=claude_cli; LLM_MODEL non viene usato.

Prima di farci affidamento:

  • Non è supportato ufficialmente. Anthropic non supporta ufficialmente le app di terze parti che usano gli abbonamenti Claude Pro o Max, quindi potrebbe smettere di funzionare se la policy di Anthropic cambia.
  • Resume Matcher non vede mai le tue credenziali Claude. Esegue la CLI con cui hai fatto l’accesso e non salva nulla del tuo account Claude.
  • I tuoi prompt vanno comunque ad Anthropic. Claude Code li invia tramite il tuo account, con il proprio modello predefinito.
  • Conta nei limiti di utilizzo del tuo abbonamento Claude, e Anthropic può anche scalarlo dai crediti di utilizzo.
  • Richiede un’installazione locale. La CLI di Claude Code non è nell’immagine Docker, quindi questa opzione non funziona con Docker.

Resume Matcher vive di donazioni.

Più di 200.000 persone in cerca di lavoro l'hanno usato, gratis, senza pubblicità e senza paywall. Se ti ha fatto risparmiare tempo o ti ha aiutato a ottenere un colloquio, una sponsorizzazione o un caffè offerto lo mantengono così.

Modelli locali

Ollama. Installalo da ollama.com, scarica un modello, poi scegli Ollama nelle impostazioni:

ollama pull gemma3:4b

L’URL predefinito è http://localhost:11434. Dall’interno di Docker, usa http://host.docker.internal:11434. Su Linux, usa l’indirizzo IP dell’host o avvia il container con --network=host.

Server compatibili con OpenAI. llama.cpp, vLLM, LM Studio e qualsiasi altro server che parli l’API Chat Completions di OpenAI funzionano tramite il fornitore openai_compatible. Imposta LLM_API_BASE sull’URL del server e LLM_MODEL sul modello che il server espone.

Modelli lenti. Ogni richiesta di IA viene eseguita con un’unica scadenza, REQUEST_TIMEOUT_SECONDS (240 per impostazione predefinita, tra 30 e 1800). Un modello grande su hardware modesto può superarla. Aumenta REQUEST_TIMEOUT_SECONDS nell’ambiente del backend e NEXT_PUBLIC_REQUEST_TIMEOUT_MS in quello del frontend (vedi apps/frontend/.env.sample). Il frontend legge il suo valore al momento della build, quindi l’immagine Docker precompilata resta a 240 secondi. Per aumentarlo lì, costruisci tu l’immagine con NEXT_PUBLIC_REQUEST_TIMEOUT_MS impostato.

Chiavi e server locali. Il backend non invia mai LLM_API_KEY a Ollama né a un server compatibile con OpenAI, quindi una chiave cloud a pagamento nel tuo .env non può finire su un server locale.

Modelli piccoli. Le note di progettazione del progetto avvertono che i modelli più piccoli faticano con il formato di modifica strutturato usato nella fase di adattamento.

Per la guida completa con Docker, vedi Docker + Ollama (in inglese).

Dove viene salvata la tua chiave

Le chiavi salvate nelle impostazioni finiscono nel database SQLite locale, cifrate con Fernet. La chiave di cifratura si trova in .secret_key nella cartella dei dati (apps/backend/data/ per un’installazione locale, altrimenti il volume Docker), creata con permessi 0600 in modo che solo il tuo account utente possa leggerla. Il backend rimuove le chiavi prima di scrivere config.json nella stessa cartella, quindi il file delle impostazioni non ne contiene mai.

Per rimuovere tutte le chiavi salvate, usa Clear API keys nella zona pericolosa (danger zone) della pagina delle impostazioni. L’operazione non si può annullare.

I token di accesso dell’abbonamento ChatGPT sono cifrati con la stessa chiave, in chatgpt_credentials.enc nella cartella dei dati. L’abbonamento Claude non salva nulla: le tue credenziali Claude restano a Claude Code.

LOG_LLM=DEBUG scrive le chiavi in chiaro nei log. Non attivarlo su una macchina condivisa.

Cosa viene inviato al tuo fornitore

L’app non invia nulla agli autori di Resume Matcher e non contiene telemetria. Il testo del tuo CV, inclusi nome e contatti, e l’annuncio di lavoro vanno al fornitore che hai scelto e a nessun altro: a OpenAI per l’abbonamento ChatGPT, ad Anthropic tramite Claude Code per l’abbonamento Claude. Prima dell’invio non c’è alcuna anonimizzazione. Con un modello locale, nulla lascia la tua macchina.

Funzione Inviato al fornitore
Caricamento del CV (analisi) Il testo completo del CV, inclusi nome, e-mail, telefono e link
Analisi dell’annuncio, titolo del CV L’annuncio di lavoro
Adattamento (piano delle competenze, modifiche mirate) L’annuncio e il JSON completo del CV
Passaggio sulle parole chiave dopo l’adattamento Il JSON del CV adattato e del CV principale, più i primi 2.000 caratteri dell’annuncio
Lettera di presentazione, messaggio di contatto Il JSON completo del CV e l’annuncio
Preparazione al colloquio Il JSON del CV (fino a 30.000 caratteri) e l’annuncio (fino a 12.000 caratteri)
Valutazione dei punti elenco Il testo dei punti elenco, l’annuncio e le parole chiave estratte
Arricchimento, rigenerazione, Resume Wizard Il CV o la voce, più le tue risposte e istruzioni
Test Connection La parola «Hi»

Le tue altre chiavi API, il file del database, la bacheca del tracker, le impostazioni e i PDF restano in locale. L’unica altra chiamata di rete è quella della libreria di IA (LiteLLM), che all’avvio scarica un listino pubblico dei prezzi dei modelli; non contiene nessun tuo dato e, offline, usa una copia inclusa.

Costi

Resume Matcher è gratuito e open source. Un fornitore cloud addebita sul tuo account, alle sue tariffe, ogni richiesta fatta dall’app. L’app non tiene traccia di questa spesa, quindi controlla la dashboard del tuo fornitore. Con l’abbonamento ChatGPT o Claude, le richieste contano invece nei limiti dell’abbonamento. Un modello locale non costa nulla per richiesta.

Risoluzione dei problemi

Test Connection non riesce

Controlla la chiave API, oppure l’URL del server per Ollama e i server compatibili con OpenAI. Salva e riprova.

«Claude Code CLI not found»

Installa Claude Code sulla macchina che esegue il backend ed esegui claude auth login. Non è disponibile nell’immagine Docker.

«Not signed in with ChatGPT» o «isn’t available for this account»

Scegli ChatGPT plan nelle impostazioni e fai clic su Continue with ChatGPT in un browser sulla stessa macchina. Questa opzione richiede ChatGPT Plus o Pro; altrimenti, usa una chiave API di OpenAI.

Docker non raggiunge Ollama

Usa http://host.docker.internal:11434 come URL di Ollama, non localhost. Su Linux, usa l’indirizzo IP dell’host o esegui il container con --network=host.

Timeout con un modello locale

Aumenta REQUEST_TIMEOUT_SECONDS (fino a 1800) nel backend e NEXT_PUBLIC_REQUEST_TIMEOUT_MS nel frontend. Con l’immagine Docker precompilata, il valore del frontend è fissato al momento della build; vedi Modelli lenti qui sopra.

Una modifica al .env non ha effetto

Le impostazioni salvate nell’interfaccia hanno la precedenza sulle variabili d’ambiente. Apri le impostazioni e modifica il valore lì.

Prossimi passi