SaaS · assistenza clienti
Analisi delle conversazioni di supporto: dalle esportazioni delle chat a problemi, tendenze e lacune della knowledge base
Una pipeline che trasforma le esportazioni della live chat in analisi di prodotto: episodi di contatto, problemi classificati, temi in crescita, possibili incidenti e lacune della knowledge base, con regole fisse che verificano l'IA.
- Settore
- SaaS · assistenza clienti
- Tecnologie
- Python · scikit-learn · rapidfuzz
La sfida
I team di prodotto, supporto e documentazione di un'azienda software volevano che le chat di supporto dicessero loro che cosa non funziona, che cosa sta crescendo, che cosa i clienti non riescono a trovare e dove va il tempo del supporto. Il materiale grezzo lo rendeva difficile. Lo strumento di chat tiene un unico thread per visitatore che dura mesi, quindi un thread non è un ticket. Una sola conversazione contiene spesso più problemi senza legami tra loro. E un modello che etichetta migliaia di conversazioni ha bisogno di un controllo che non provenga dal modello stesso.
La soluzione
Abbiamo costruito una pipeline batch in Python. I thread vengono suddivisi in episodi di contatto a ogni pausa di 12 ore, una soglia ricavata dal punto di minimo nella distribuzione delle pause, e i ruoli di chi parla vengono ricostruiti con una sequenza fissa di regole. Ogni episodio viene scomposto in unità di problema, e ogni unità viene classificata su 21 campi, tra cui il sintomo, la causa principale e se una funzionalità manca o è solo difficile da trovare. Un livello di regex che copre una decina di lingue estrae i fatti indipendentemente dal modello e serve a verificarlo. Clustering, rilevamento della crescita e punteggi d'impatto basati sui percentili producono poi il report.
Come si collega
- 01 Estrazione degli episodi
- 02 Segnali deterministici
- 03 Classificazione LLM
- 04 Clustering
- 05 Punteggi e audit
- 06 Report e passaggio
Cosa abbiamo realizzato
- Segmentazione in episodi e attribuzione di chi parla per thread di chat di lunga durata
- Unità di problema classificate su 21 campi da un modello veloce, con denominazione, sintesi e audit affidati a un modello più potente
- Livello deterministico di segnali in una decina di lingue, usato come riferimento certo rispetto al modello
- Clustering dei temi, rilevamento della crescita e possibili incidenti: molti clienti diversi che segnalano lo stesso problema entro 90 minuti
- Punteggi di impatto e di opportunità costruiti da componenti classificate per percentile
- Imbuto delle lacune della knowledge base con brief di articoli per chi scrive, più segnali di abbandono e di concorrenza
- Coda di revisione della qualità degli operatori, esplicitamente non una classifica delle persone
- Report HTML, pagine di passaggio per tema destinate agli sviluppatori e domande in linguaggio naturale sull'intero corpus
Funzionalità
- Ogni cifra conserva gli ID degli episodi di origine, così da qualsiasi numero si risale alle conversazioni che lo hanno generato
- Un campione riclassificato alla cieca da un modello diverso per misurare la concordanza campo per campo
- Chiamate al modello in cache per hash del prompt, così un'esecuzione interrotta riprende senza pagare due volte
- Rilevamento delle risposte in cui un operatore dice che una funzionalità non esiste, un segnale per i team di prodotto e di documentazione
- Test unitari sul livello deterministico
Integrazioni
- Esportazioni delle conversazioni della live chat
- Modelli Claude di Anthropic: uno veloce per il passaggio di massa, uno più potente per denominazione e audit
Tecnologie
Risultato
Eseguita su un mese intero di conversazioni di supporto reali; il report e le pagine di passaggio per gli sviluppatori sono stati consegnati. Gira su richiesta come job batch, e una dashboard non fa parte di questa fase.
Perché affiancare al modello un livello basato su regole?
Perché un modello che valuta il proprio lavoro non può dirti quando sbaglia. Il livello di regex trova fatti verificabili direttamente, come un codice di errore, una richiesta di rimborso o un operatore che dice che una funzionalità non esiste, in una decina di lingue e indipendentemente dal modello. Quando i due non concordano, il disaccordo viene riportato invece di essere smussato. Così il modello resta utile per la parte che solo lui sa fare, cogliere il significato, mentre i numeri restano tracciabili.
Parliamo del tuo progetto
Raccontaci il tuo progetto