bmc_hub/fremtidige planer/kundestemning-ai.md

202 lines
6.0 KiB
Markdown

# Kundestemning på indgående sager og mails
## Status
Fremtidig udviklingsplan. Ikke implementeret.
## Formål
BMC Hub skal bruge AI til semantisk analyse af kundens stemning i indgående mails og sager. Løsningen skal give medarbejderen et rådgivende signal om stemning, hast, kunderisiko og udvikling gennem en mailtråd.
Analysen må ikke baseres på simpel matching af bestemte ord, og den må i første version ikke automatisk ændre prioritet, SLA eller ansvarlig medarbejder.
## Analysemodel
AI-resultatet gemmes pr. indgående mail i den eksisterende `email_analysis`-tabel med `analysis_type = 'customer_sentiment'`.
Foreslået JSON-resultat:
```json
{
"sentiment": "frustrated",
"sentiment_score": -0.65,
"urgency": "high",
"customer_risk": "medium",
"requires_attention": true,
"confidence": 0.88,
"reason": "Kunden har rykket flere gange og oplever fortsat driftsstop.",
"signals": [
"gentagen henvendelse",
"driftspåvirkning",
"manglende løsning"
],
"text_scope": "latest_customer_message",
"model": "qwen3.5:9b",
"prompt_version": 1
}
```
Kontrollerede værdier:
- `sentiment`: `positive`, `neutral`, `concerned`, `frustrated`, `angry`
- `urgency`: `normal`, `high`, `critical`
- `customer_risk`: `low`, `medium`, `high`
- `sentiment_score`: tal fra `-1.0` til `1.0`
## Tekstforberedelse
Før teksten sendes til AI, skal systemet så vidt muligt fjerne:
- Medarbejdernes tidligere svar
- Citerede mails
- Standardsignaturer
- Fortrolighedstekster og disclaimere
- Autosvar
- HTML, tracking-links og anden teknisk støj
AI'en skal som udgangspunkt analysere kundens seneste indgående tekst. Emnefeltet kan medtages som kontekst. Tekstrensningen må gerne være regelbaseret, men selve vurderingen skal foretages semantisk af AI.
## Promptkrav
Prompten skal holde følgende dimensioner adskilt:
1. Kundens følelsesmæssige stemning
2. Henvendelsens praktiske hast
3. Kommerciel risiko eller risiko for eskalation
Eksempel: En kunde kan være venlig eller neutral, selvom et teknisk problem er kritisk.
Modellen skal instrueres i at:
- Forstå indirekte og høfligt formuleret utilfredshed
- Undgå at overfortolke almindelig høflighed
- Skelne kundens nye tekst fra citeret historik
- Undgå vurderinger eller diagnoser af personen
- Give en kort begrundelse, der er understøttet af teksten
- Bruge lav `confidence`, når teksten er tvetydig
- Returnere ren og validerbar JSON
## Afvikling
Første version skal:
- Køre asynkront ved modtagelse af en ekstern mail
- Kun analysere indgående kundekommunikation
- Springe spam, nyhedsbreve, fakturaer og automatiske systemmails over
- Genbruge den eksisterende mailklassifikation til frasortering
- Cache resultatet, så samme mail ikke analyseres flere gange
- Understøtte manuel genanalyse
- Lade mailimporten fortsætte, hvis AI er utilgængelig
## Samlet stemning på en sag
Sagens aktuelle stemning bør bygge på den seneste relevante indgående kundemail og ikke den værste historiske vurdering.
Sagen kan vise:
- Aktuel stemning fra seneste indgående mail
- Trend baseret på de seneste 2-3 indgående mails
- Aktuel kunderisiko ved tilstrækkelig høj sikkerhed
- `forværret`, hvis scoren falder mærkbart gennem tråden
- `forbedret`, hvis scoren stiger efter dialog med kunden
## GUI
### Mailoversigt
Vis en diskret badge:
- Positiv
- Neutral
- Bekymret
- Frustreret
- Vred/kritisk
Ved klik eller hover vises hast, kunderisiko, AI-begrundelse, sikkerhed, model og analysetidspunkt.
### Sagsvisning
Vis et mindre panel med:
- Aktuel kundestemning
- Trend
- Seneste begrundelse
- Link til den mail, vurderingen kommer fra
### Senere dashboardfunktioner
- Filteret `Kræver opmærksomhed`
- Filter efter stemning, hast og kunderisiko
- Oversigt over forværret kundestemning
- Visning af kritiske henvendelser
## Manuel korrektion
Medarbejderen skal kunne:
- Markere vurderingen som korrekt eller forkert
- Vælge en anden stemning
- Tilføje en kort kommentar
Den manuelle vurdering skal gemmes separat fra det oprindelige AI-resultat. Det giver sporbarhed og et evalueringsdatasæt til senere forbedring af prompt og model.
## Automatik og sikkerhed
I første version er `requires_attention` kun et visuelt signal.
Mulige senere funktioner:
- Intern notifikation ved høj risiko
- Fremhævelse på dashboardet
- Besked til ansvarlig medarbejder
- Eskalation af kritiske beskeder uden for normal arbejdstid
Systemet må ikke automatisk sende svar til kunden eller ændre sagsprioritet uden menneskelig godkendelse.
## Test og evaluering
Opret et anonymiseret testsæt på cirka 50-100 realistiske mails, herunder:
- Positive og neutrale mails
- Direkte og indirekte utilfredshed
- Vrede mails
- Kritisk drift uden vred tone
- Ironi og tvetydige formuleringer
- Meget korte beskeder
- Lange tråde med citeret historik
- Autosvar og systemmails
- Danske og engelske henvendelser
Mål især:
- Hvor ofte kritiske mails overses
- Hvor ofte neutrale mails fejlmarkeres
- Om hast og stemning adskilles korrekt
- Om begrundelsen kan dokumenteres ud fra teksten
- Svartid og stabilitet
- Forskelle mellem de installerede modeller
## Leveringsrækkefølge
1. AI-analyse og lagring pr. indgående mail
2. Admin-testside med råt AI-resultat
3. Evaluering mod menneskeligt mærkede testmails
4. Badge i mailoversigten
5. Detaljepanel på mails og sager
6. Manuel korrektion og feedback
7. Trendberegning på mailtråde
8. Dashboard og filtre
9. Eventuelle notifikationer
## Anbefalet lancering
Start med en stille pilot, hvor nye mails analyseres og gemmes, men resultaterne kun vises på en admin-testside. Aktivér først badges og alarmer bredt, når AI-vurderingerne er sammenlignet med menneskelige vurderinger.
## Beslutninger før implementering
- Vælg den endelige AI-model ud fra modeltesten
- Fastlæg grænser for `requires_attention`
- Beslut hvem der kan se og korrigere vurderinger
- Beslut hvor længe analyser og manuelle rettelser skal gemmes
- Aftal om engelsk og andre sprog skal understøttes fra første version