Risorse umane: selezione dei CV automatizzato
Per classificare i CV localmente, estrai il testo con PyMuPDF, nascondi l'identità, fai estrarre i fatti da un modello come Qwen 3.5 9B imponendo uno schema JSON, calcola l'esperienza e il punteggio tramite codice a partire da una griglia di criteri e lascia che sia una persona a decidere. La selezione assistita non è vietata; la decisione esclusivamente automatizzata lo è (RGPD, art. 22), e l'allegato III del regolamento sull'IA classifica questi strumenti come ad alto rischio.
Passare al vaglio 200 CV per contattare dieci candidati è un lavoro ripetitivo in cui un aiuto può davvero far risparmiare tempo, a condizione di non trasformare un modello linguistico in un decisore opaco. Questa guida costruisce una pipeline locale in cui ogni risultato è spiegato e verificabile, chiarisce ciò che dice davvero la legge e propone test per individuare i bias prima che penalizzino i candidati.
#Cosa costruiamo: un aiuto alla selezione, non un decisore
Una pipeline locale di analisi dei CV legge una cartella di PDF e una descrizione della posizione lavorativa, estrae per ogni candidato fatti verificabili (posizioni ricoperte, date, competenze citate, formazione), li confronta con criteri scritti dal recruiter, poi produce una graduatoria motivata. La differenza rispetto a un semplice «punteggio IA» sta in due scelte: i calcoli vengono eseguiti nel codice, non nel modello, e ogni criterio è supportato da un passaggio del CV che il recruiter può rileggere. Il risultato è un elenco ordinato di candidati da esaminare, mai un elenco di candidati da respingere.
L'esecuzione in locale chiude una porta, quella dell'invio dei dati dei candidati a un fornitore terzo. Non chiude le altre: il modello può riprodurre bias, leggere male un CV impaginato a colonne o inventare una competenza. Questa guida dedica quindi pari attenzione al funzionamento della pipeline e alle misure di tutela che ne rendono l'uso difendibile.
#Il quadro giuridico: ciò che è assodato, ciò che viene spesso esagerato
Agenti che agiscono sulla tua macchina: Cline agentico, MCP, n8n + Ollama, automazioni locali.
- Spazio online a vita
- PDF + file
- Aggiornamenti a vita
A volte si legge che inviare CV a un servizio di IA ospitato sarebbe vietato in Francia dal 2024. Nessuna legge stabilisce un simile divieto generale. Gli aspetti da considerare sono più sfumati e valgono anche quando l'IA viene eseguita in locale. Il primo è l'articolo 22 del RGPD: l'interessato ha il diritto di non essere sottoposto a una decisione basata esclusivamente su un trattamento automatizzato, compresa la profilazione, che produca effetti giuridici o incida significativamente sulla sua persona. Il rifiuto di un'assunzione rientra in questo ambito se nessun essere umano prende realmente la decisione.
Il secondo è il regolamento europeo sull'IA. Il suo allegato III classifica tra i sistemi ad alto rischio quelli destinati al reclutamento o alla selezione di persone, in particolare per analizzare e filtrare le candidature e valutare i candidati. Il calendario è cambiato: secondo l'analisi dello studio legale Bird & Bird, l'accordo provvisorio del 7 maggio 2026 sul pacchetto denominato Digital Omnibus rinvia al 2 dicembre 2027 gli obblighi relativi ai sistemi ad alto rischio dell'allegato III. Verifica nella Gazzetta ufficiale dell'Unione il testo definitivamente adottato prima di fissare il tuo calendario di conformità: questa guida non è un parere legale.
| Argomento | Ciò che serve | Applicazione pratica |
|---|---|---|
| Decisione automatizzata (RGPD, art. 22) | Una persona decide davvero | L'output è una lista da esaminare, senza rifiuto automatico |
| Alto rischio (regolamento IA, allegato III) | Gestione dei rischi, sorveglianza umana, documentazione, tracciabilità | Registro degli input e degli output, procedura di revisione |
| Informazioni ai candidati | Informarli del trattamento | Menzione nell'offerta di lavoro e nella politica di assunzione |
| Minimizzazione | Trattare solo i dati pertinenti alla posizione lavorativa | Mascheramento dei recapiti e dei dati anagrafici prima dell'invio al modello |
| Non-discrimination | Nessun criterio proibito | Descrizione della posizione riletta, test regolari sui bias |
#Lo stack: lettore PDF, modello locale, formato imposto
Un lettore PDF come PyMuPDF estrae il testo. Ollama serve il modello: Qwen 3.5 con 9 miliardi di parametri pesa 6,6 GB, accetta 256.000 token di contesto e può essere eseguito su una scheda da 8 GB; Mistral Small 24B (14 GB) richiede più memoria. Ollama permette anche di vincolare la risposta a uno schema JSON: secondo la sua documentazione, si inserisce lo schema nel campo format. È più affidabile della semplice modalità JSON, perché le chiavi e i tipi sono imposti.
Un CV è un documento breve: due pagine rappresentano qualche migliaio di token. Il problema non è quindi la finestra di contesto, a meno che tu non alleghi anche lettere di motivazione. La difficoltà sta nell'impaginazione, trattata nel passaggio successivo.
#Estrarre il testo e nascondere ciò che non è necessario
Molti CV sono a due colonne, con una barra laterale per le competenze e le lingue. La lettura di un PDF dipende quindi dall'ordine dei blocchi nel file. PyMuPDF offre un'opzione di ordinamento che organizza il testo per coordinate verticali e poi orizzontali: su un CV a colonne, può mescolare le righe delle due colonne. Il comportamento predefinito, che segue l'ordine del file, legge spesso meglio i CV a colonne. Prova le due opzioni sui tuoi CV più complessi e conserva quella che produce un testo coerente.
Il mascheramento dei dati non necessari per la posizione lavorativa rientra nella minimizzazione: indirizzo email, telefono, indirizzo postale, link ai profili, data di nascita. Le espressioni regolari individuano i formati regolari; non riconoscono un nome o un cognome all'interno di un testo. Un approccio affidabile consiste nell'elaborare la prima riga del CV, dove compare quasi sempre l'identità, e nel sostituire i dati anagrafici con un identificativo della pratica.
#Estrarre fatti, calcolare tramite codice
Il modello deve estrarre ciò che è scritto, non calcolare. Un'istruzione del tipo « annees_experience = somma delle esperienze » produce totali errati: i modelli sommano male durate che si sovrappongono o che sono espresse in mesi e anni. Si chiedono quindi al modello i ruoli con le rispettive date di inizio e fine, e il totale viene calcolato in Python, unendo i periodi che si sovrappongono.
#Confrontare con i criteri: una griglia anziché un punteggio inventato
Chiedere al modello «un punteggio tra 0 e 100» dà un numero che sembra preciso ma non lo è: due esecuzioni possono divergere e nessuno sa cosa misuri. Una griglia è più robusta. Il recruiter scrive i propri criteri una volta per tutte, distinguendo quelli obbligatori da quelli desiderabili. Per ogni criterio, il modello risponde con uno di soli tre stati: soddisfatto, non soddisfatto, non documentato, riportando la frase del CV che lo giustifica. Il punteggio viene poi calcolato tramite codice, con una regola che puoi spiegare a un candidato.
Questo setup ha tre vantaggi. La prova viene verificata dal programma: una frase che il modello afferma di citare e che non compare nel CV non conta. La graduatoria è riproducibile, poiché il punteggio è una formula. E un criterio obbligatorio non trovato non esclude il candidato: viene segnalato al recruiter, che legge il CV, perché l'informazione può semplicemente essere formulata in altro modo.
#Produrre la lista e conservarne una traccia
L'elenco finale ordina i candidati per punteggio, ma mostra anche in cima quelli per cui un criterio obbligatorio è «da esaminare». Conserva per ogni CV una registrazione datata: identificativo, versione del modello, criteri utilizzati, output grezzi. Questa traccia serve a rispondere a un candidato che chiede come è stato valutato e a dimostrare una reale supervisione umana, richiesta per un sistema di selezione del personale classificato ad alto rischio.
#Misurare i bias piuttosto che supporli assenti
Il bias dei modelli linguistici sui CV è documentato. Uno studio dell'Università di Washington, presentato nell'ottobre 2024, ha variato i nomi propri associati a persone bianche e nere, uomini e donne, su più di 550 CV reali: i modelli testati hanno favorito i nomi associati a persone bianche nell'85% dei casi e quelli associati a donne solo nell'11% dei casi, e non hanno mai preferito un nome associato a un uomo nero a un nome associato a un uomo bianco. Questi modelli erano sistemi di ordinamento, non quelli che eseguirai; ciò che se ne ricava è che un bias può esistere senza che nessuno lo veda.
Sono necessarie due misure. La prima è un test di permutazione: si prendono alcune decine di CV, si sostituisce il nome di battesimo con nomi associati ad altre origini o al genere opposto e si confrontano i risultati. Senza mascheramento, lo scarto deve essere nullo; se non lo è, la pipeline non è utilizzabile. La seconda è il monitoraggio dei risultati: se puoi ricostruire delle categorie dopo la selezione, confronta i tassi di preselezione. Uno scarto inspiegato va affrontato rivedendo la descrizione della posizione e la griglia di valutazione.
#Verificare che lo strumento faccia risparmiare tempo
Confronta la graduatoria dello strumento con quella di un selezionatore su una trentina di CV per una posizione già coperta. Conta quanti dei candidati selezionati dal selezionatore figurano nella parte alta della lista e quali candidati validi lo strumento ha collocato troppo in basso. Se troppi profili validi vengono esclusi, correggi la griglia prima di estendere l'uso. Un criterio mal formulato è la causa più frequente.
#Cosa fallisce in pratica
- CV creativi e scansioni
- I CV grafici o scansionati restituiscono un testo scarno. Lo script rifiuta un file senza testo e lo segnala invece di valutarlo alla cieca.
- Competenze implicite
- Un candidato può padroneggiare uno strumento senza menzionarlo. Lo stato non documentato esiste proprio per questo: richiede una lettura da parte di una persona, non un rifiuto.
- Lingue e percorsi stranieri
- La qualità diminuisce con CV in più lingue o con equivalenze dei titoli di studio. Testali esplicitamente.
- Distorsioni nella descrizione del ruolo
- Criteri vaghi o obsoleti (« junior dinamico ») introducono pregiudizi legati all'età. Rileggili prima di inserirli.
- Eccessiva fiducia
- Una classifica rassicura e induce a non rileggere. Misura la percentuale di CV effettivamente riletti dal selezionatore.
- IA locale in azienda: RGPD e sovranità
- AI Act e modelli open-weights
- Checklist sulla riservatezza
- Output JSON strutturati con Ollama
- Limitare le allucinazioni di un LLM locale
- Estrazione delle fatture: lo stesso schema di controllo
- Fonte: allegato III del regolamento sull'IA
- Fonte: articolo 22 del RGPD
- Fonte: Bird & Bird sull'accordo Digital Omnibus
- Fonte: Università di Washington sui bias nella selezione dei CV
- Fonte: output strutturati di Ollama
È possibile selezionare i CV con un'IA in Francia?+
È illegale inviare CV a ChatGPT?+
Quale modello locale per analizzare i CV?+
Perché non chiedere un voto su 100 al modello?+
Come verificare che il modello non sia discriminatorio?+
Quanto tempo fa risparmiare lo screening dei CV?+
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.