Rezumat
Un client continua să primească aceleași întrebări, chiar dacă răspunsurile existau deja pe website și implementasem inclusiv o pagină de întrebări frecvente.
Am construit un asistent virtual - chatbot care:
- răspunde automat la întrebările repetitive;
- folosește răspunsuri controlate de business, nu generate liber de un AI;
- înțelege formulări diferite, typo-uri și întrebări scrise fără diacritice;
- preferă să spună „nu știu” decât să ofere o informație greșită;
- păstrează suficient context pentru întrebări de follow-up;
- poate direcționa conversațiile complexe către un om;
- colectează întrebările reale ale utilizatorilor pentru customer research;
- poate scoate la suprafață idei de servicii, pachete, conținut și probleme ale website-ului;
- este complet customizabil vizual și administrabil din Sanity.
Ipoteza noastră: un chatbot poate avea mai multă valoare pentru un business prin întrebările pe care le colectează decât prin răspunsurile pe care le oferă.
Ideea principală
Nu încercăm să automatizăm relația cu clientul. Încercăm să automatizăm conversațiile în care un om nu adaugă valoare și să înțelegem mai bine conversațiile care rămân.
Problema de la care am pornit
Un client cu care lucrăm avea o problemă aparent banală. Primea constant aceleași întrebări:
„Care este prețul?”
„Aveți disponibilitate și sâmbăta?”
„Faceți și serviciul X?”
„Pot veni fără programare?”
„Lucrați și în zona mea?”
Partea interesantă era că majoritatea răspunsurilor existau deja pe website.
Problema nu era lipsa informației.
Problema era cât de repede putea utilizatorul să ajungă la ea.
Am încercat mai întâi soluția evidentă: o pagină de întrebări frecvente. Am făcut-o ușor accesibilă și am inclus-o inclusiv în navigația principală.
Oamenii au început să o viziteze.
Numărul întrebărilor repetitive însă nu s-a schimbat suficient.
Asta ne-a dus la o altă ipoteză:
Dacă utilizatorii nu vor să caute informația, poate ar trebui să îi lăsăm pur și simplu să întrebe.
Așa a început experimentul nostru cu un asistent virtual.
Ce încercăm de fapt să automatizăm
Nu vrem să înlocuim conversațiile dintre oameni. Există întrebări pentru care un specialist este necesar. Dar există și multe conversații precum:
„Care este programul?”
„Aveți parcare?”
„Care este prețul?”
„Se poate face programarea online?”
Un angajat poate răspunde perfect la toate. Dar valoarea adăugată de un om în aceste situații este foarte mică. Dacă însă punem un simplu chat pe website și în spatele lui trebuie să stea tot un angajat, nu am automatizat nimic.
Am mutat telefonul într-o fereastră de chat.
Asistentul trebuia, așadar, să poată răspunde singur la întrebările repetitive și să lase conversațiile complexe oamenilor.
De ce nu am conectat pur și simplu ChatGPT
Prima variantă evidentă astăzi este un chatbot bazat pe un model generativ. Îi oferi informațiile companiei și îl lași să formuleze răspunsurile. Pentru anumite produse, este o soluție foarte bună. Pentru problema noastră însă, aveam alte priorități.
1. Răspunsul trebuia să fie predictibil
Să presupunem că un business lucrează exclusiv pe bază de programare. Clientul întreabă:
„Pot veni fără programare?”
Răspunsul oficial este:
„Nu. Lucrăm doar pe bază de programare.”
Nu vrem ca asistentul să interpreteze informația și să genereze:
„Este recomandată o programare, dar puteți încerca să veniți.”
Poate suna natural. Poate suna chiar util. Dar este greșit.
Pentru informații precum prețuri, politici, program sau condițiile unui serviciu, preferăm:
„Nu știu.”
în locul unui răspuns convingător, dar inventat.
2. Nu orice problemă are nevoie de un model generativ
Majoritatea businessurilor nu au un număr infinit de întrebări repetitive.
De multe ori există 15, 20 sau 30 de teme care reprezintă o parte considerabilă din conversațiile simple cu clienții. În situația asta ne-am întrebat:
Avem nevoie de un model AI complet pentru a decide că „cât costă consultația?” și „ce tarif aveți pentru consult?” înseamnă aproximativ același lucru?
Am decis să experimentăm cu o abordare mai restrânsă.
3. Mai puține dependențe
Un sistem generativ aduce inevitabil alte componente:
cost de utilizare, API-uri externe, protecție împotriva abuzului, prompt injection, limite de consum și noi situații care trebuie securizate.
Toate pot fi gestionate.
Dar unul dintre obiectivele acestui experiment a fost să vedem cât de mult putem rezolva fără să introducem complexitate de care problema nu are nevoie.
În loc de „gândește răspunsul”, căutăm intenția
Abordarea noastră este diferită. Businessul definește răspunsurile.
Asistentul încearcă doar să înțeleagă ce intenție are utilizatorul.
Să luăm o clinică veterinară drept exemplu.
Putem avea o intenție:
Preț consultație
Cu termeni precum:
preț, cost, tarif, consultație
și formulări precum:
„Cât costă o consultație?”
„Care este prețul unui consult?”
„Ce tarif aveți pentru consultație?”
Răspunsul este stabilit de business.
Chatbotul nu îl generează.
Rolul lui este să determine dacă întrebarea utilizatorului aparține acestei intenții.
Oamenii nu scriu ca într-o bază de date
Aici experimentul a devenit mai interesant. Același lucru poate fi întrebat astfel:
„Cât costă consultația?”
„pret consult”
„cat costa consulatia”
sau:
„Salut, am un câine și aș vrea să știu cam cât mă costă să vin cu el la un consult.”
Din perspectiva unui om, este evident că toate întrebările sunt legate. Pentru software, nu este la fel de simplu. De aceea matcher-ul nostru combină mai multe semnale.
Folosește potriviri de expresii, keywords și fuzzy matching. Foarte simplificat, fuzzy matching înseamnă că nu verificăm doar:
„Este textul identic?”
ci și:
„Cât de asemănător este cu lucrurile pe care le cunoaștem?”
Am adăugat separat toleranță pentru typo-uri și normalizare pentru lucruri precum diacriticele. Astfel:
consultație
consultatie
consulatie
pot ajunge la același concept.
Mai important decât să găsească un răspuns este să știe când să se oprească
Fuzzy matching-ul introduce însă o altă problemă. Să presupunem că utilizatorul scrie doar:
„preț”
Putem avea simultan:
- preț consultație;
- preț vaccin;
- preț abonament;
- preț analiză.
Nu vrem ca primul rezultat găsit să devină automat răspunsul oficial.
De aceea comparăm mai multe semnale și calculăm câtă încredere avem într-o potrivire. Dacă rezultatul este suficient de clar, răspundem.
Dacă două intenții sunt prea apropiate sau scorul este prea slab:
asistentul nu ghicește.
Poate cere mai multe informații sau poate direcționa conversația către echipă.
Principiu de produs
Un „nu știu” controlat este mai valoros pentru un business decât un răspuns greșit spus cu încredere.
Conversația are nevoie și de context
Mai apare o situație. Utilizatorul întreabă:
„Cât costă consultația?”
Primește răspunsul. Apoi scrie:
„Și ce este inclus?”
Analizată separat, a doua întrebare este ambiguă.
- Inclus în ce?
- Consultație?
- Abonament?
- Tratament?
Am adăugat de aceea un sistem simplu de context conversațional.
Nu încercăm să construim o memorie complexă și nici nu trimitem întreaga conversație unui model AI.
Păstrăm doar suficient context pentru ca anumite follow-up-uri să aibă sens.
Apoi am descoperit ceva mai interesant decât chatbotul
Inițial, proiectul avea un obiectiv simplu:
să reducă întrebările repetitive.
Dar odată ce începi să vezi conversațiile, apare o altă sursă de valoare. Să presupunem că într-o lună observăm că:
- 30 de persoane întreabă dacă există serviciu de urgență;
- 20 întreabă dacă se poate plăti lunar;
- 15 întreabă dacă există un pachet pentru companii;
- 10 întreabă dacă businessul lucrează în weekend.
Acestea nu mai sunt doar patru răspunsuri care trebuie adăugate chatbotului.
Sunt semnale din piață.
Întrebările clienților pot deveni marketing
Să presupunem că apare în mod repetat:
„Care este diferența dintre serviciul A și serviciul B?”
Acea întrebare poate deveni:
- un articol;
- un videoclip YouTube;
- un newsletter;
- un Reel;
- un carousel;
- o pagină dedicată;
- chiar și un unghi pentru o campanie publicitară.
În loc să ghicim permanent ce conținut ar putea interesa piața, putem observa ce încearcă oamenii să afle înainte să cumpere.
Chatbotul începe ca instrument de suport. Dar poate deveni și un instrument de customer research.
Uneori chatbotul ne spune că chatbotul nu este problema
Un exemplu:
50 de persoane întreabă într-o lună:
„Unde vă găsim?”
Putem adăuga un răspuns mai bun în chatbot. Dar există o întrebare mai importantă:
De ce 50 de persoane nu au găsit adresa pe website?
Poate informația nu este suficient de vizibilă. Poate pagina Contact trebuie reorganizată. Poate trebuie schimbată navigația.
La fel, dacă foarte mulți oameni întreabă „ce este inclus?”, deși avem o secțiune întreagă care explică pachetul, problema poate fi chiar acea secțiune. În acest caz:
Soluția nu este să facem chatbotul mai bun. Soluția este să facem website-ul mai bun.
Sistemul nu trebuie să știe totul din prima zi
Pentru un business putem începe cu cele mai importante 15-20 de intenții.
Le putem identifica din:
- conținutul existent al site-ului;
- întrebările pe care echipa deja le primește;
- serviciile și politicile companiei.
Apoi îl lăsăm să fie folosit. Și vedem ce am ratat.
În timp, noi putem face chatbotul mai bun pentru că înțelegem mai bine utilizatorii.
Nu presupunem că sistemul se „antrenează singur”. Îmbunătățirea vine din observarea conversațiilor reale.
Paradoxal, aici AI-ul devine foarte interesant
Faptul că am ales să nu folosim un LLM pentru răspunsurile oficiale nu înseamnă că AI-ul nu are un rol.
Imaginează-ți că avem 500 de întrebări la care chatbotul nu a reușit să răspundă.
Un model AI ar putea fi foarte util pentru analiză. Ar putea identifica:
„Aceste 40 de formulări reprezintă practic aceeași întrebare.”
sau:
„Utilizatorii folosesc termenul X, în timp ce compania folosește termenul Y.”
AI-ul ne poate ajuta să găsim pattern-uri.
Răspunsurile oficiale rămân însă controlate de business.
Pentru noi, această separare este mult mai interesantă decât simplul „AI sau fără AI”:
AI pentru analiză. Sistem determinist pentru informațiile oficiale.
Nu am vrut un widget generic lipit peste website
Mai exista o problemă cu multe soluții gata făcute. Construiești un website custom. Ai propriile culori, fonturi, butoane, animații și reguli de brand. Apoi instalezi un chatbot care arată ca și cum aparține altui website.
Noi am vrut ca asistentul să fie parte din experiența digitală a businessului.
Pe website-ul nostru, versiunea se numește Empry.
Dar tehnologia nu impune această identitate. Pentru alt proiect poate avea:
- alt nume;
- alt avatar;
- alte culori;
- alt ton;
- alte butoane;
- una sau mai multe limbi;
- sau poate fi pur și simplu „Asistent virtual”, fără mascotă.
Tehnologia poate fi aceeași. Experiența trebuie să aparțină businessului.
Conținutul trebuie să fie editabil, nu hardcodat
Răspunsurile chatbotului sunt administrate din Sanity.
Am construit partea de administrare ca un modul separat în Studio, astfel încât cineva din business să poată modifica:
- răspunsurile;
- expresiile relevante;
- keywords;
- opțiunile afișate utilizatorului;
- mesajele inițiale;
- anumite reguli de conversație.
Dacă se schimbă programul sau prețul unui serviciu, nu vrem ca modificarea să necesite intervenția unui developer.
Din perspectiva clientului:
este conținut, nu cod.
Statusul experimentului
Stadiu: Implementat / testare în utilizare reală
Tehnologii: Astro, Sanity, TypeScript
Direcție: Customer support automation + customer research
AI generativ pentru răspunsuri: Nu
AI pentru analiză: În explorare
Următorul pas: analizarea conversațiilor reale și măsurarea impactului asupra întrebărilor repetitive și lead-urilor