Modulkatalog/voice-agent
Modul, Kunddialog

Voice-agenten

Telefonsamtal in, svar ut. Realtid-transkribering och tone-validering.

14/14
Tester godkända
7
Block per bundle
Ed25519
Signering
Produktion
Status
Ladda ner exempel-bundleVerifiera bundleBoka demo
Vad modulen gör

Voice-agenten

Modul-id: voice-agent · Version: 1.0.0 · Röst: kapaciti · Modell: claude-haiku-4-5

Vad modulen gör

Voice-agenten är en av sexton compliance-AI-moduler i Kapaciti-sviten. Den tar emot en strukturerad transkribering av ett pågående telefonsamtal, klassificerar ringarens intent, bedömer tonläge bortom orden, identifierar regelefterlevnads-triggers och producerar ett kort svarsutkast på talad svenska som kan spelas direkt via TTS. Hela bedömningen avslutas med ett signerat audit-bundle som kan verifieras separat. Modulen är byggd för att plugga in framför en mänsklig handläggare, inte ersätta den.

När den används

Den primära användningen är inkommande supportsamtal där en realtidstranskribering finns tillgänglig från en STT-pipeline (Whisper, Deepgram eller motsvarande). Modulen körs efter varje nytt ringare-yttrande eller i slutet av samtalet. Output styr två saker. För det första, om bot ska fortsätta hantera samtalet eller om det ska kopplas vidare. För det andra, om något har sagts som kräver omedelbar regelefterlevnads-flagg till Bolagsverket-, IMY- eller säkerhetsteam.

Input-format

Input är ett JSON-objekt med följande nycklar.

{
  call_id: "string",
  caller: { phone: "string", name: "string?", verified: boolean },
  transcript: [
    { speaker: "caller" | "agent", text: "string", timestamp_ms: number, confidence: 0-1 }
  ],
  call_started_at: "ISO timestamp",
  customer_brand: "string?"
}

Transkriberingen ska vara icke-tom och tidssorterad. Varje yttrande har en konfidensnivå från STT-motorn så att modulen kan vikta lågkonfidens-rader mindre. verified: true betyder att numret har matchats mot en känd kund i CRM, vilket gör att modulen kan tillåta vissa GDPR-flöden utan extra identitetskontroll.

Output-format

Output är ren text i fast struktur, parsbar utan JSON-tolkning.

INTENT: <faktura | teknisk-support | sales | klagomal | regulatorisk-fraga | annat>
TONLAGE: <neutral | frustrerad | uppjagad | hotfull | osaker>
ESKALERING: <fortsatt-bot | tier-2 | manager | regelefterlevnad | sakerhet>
REGELEFTERLEVNAD: <ingen | gdpr-radata | lex-uggla | annat>
SVARSUTKAST:
<en till två korta meningar på talad svenska>
INTERNA NOTERINGAR:
<en till tre korta punkter för handläggaren>

Strukturen är medvetet rad-baserad för att vara robust mot små formuleringsavvikelser från modellen. Validatorn i modulen läser block för block och kontrollerar att varje rubrik finns och att varje värde tillhör sin tillåtna mängd.

Tonläge och tolkning

Telefoni är inte chatt. Tonläge bedöms från sammanhanget, inte enskilda ord. Snabba avbrott i ringarens replik, höjd röst i transkriberingen markerad via versaler eller upprepningar, hot om att gå till Polisen eller ARN, eller upprepade frågor utan att modulen besvarat dem, allt detta räknas som signaler. Tonläget hotfull triggar automatisk eskalering, och om modellen ändå skulle skriva fortsatt-bot så fångar validatorn det som en regelbrottsvarning innan output släpps vidare.

Regelefterlevnad

Fyra triggers flaggas separat. gdpr-radata täcker varje begäran om dataexport, radering, rättelse, eller fråga om var data lagras. lex-uggla täcker fall som rör visselblåsning, anonym rapportering eller hänvisning till Lag (2021:890) om skydd för personer som rapporterar om missförhållanden. annat används för PSD2, konsumentköpslagen, eller övriga regulatoriska områden där en jurist bör titta. Modulen gör inte juridiska bedömningar själv. Den markerar för en människa.

Inspelnings-medgivande är ett specialfall. Om ringaren frågar om samtalet spelas in, eller säger att hen inte vill bli inspelad, så ska modulen flagga regelefterlevnad i eskalering oavsett intent. Detta är en hård regel i Kapaciti-policy och täcks av cross-rule-validatorn.

Svarsutkastets form

Utkastet är skrivet för TTS. Det ska vara en till två korta meningar, läsas naturligt högt, och inte innehålla listor, punkter eller siffror som måste tolkas. Modulen lovar aldrig kreditering, juridiska åtgärder eller specifik återbetalning. Den hänvisar till handläggare när situationen kräver det. Voice-profilen kapaciti filtrerar dessutom bort förbjudna ord (ensure, crucial, journey, delve, dive, navigate, samt tankstreck) på det sista steget.

Audit-bundle

Varje körning skapar en kedja av block:

  1. input_received med hela samtalets metadata
  2. context_loaded (här tom, modulen använder inte extern källa)
  3. agent_call med modell, voice och promptlängd
  4. output_generated med modellsvar och duration
  5. voice_validated med kvarvarande röst-violations
  6. output_validated med parsade fält och regelbrott
  7. audit_sealed med slutstatus

Varje block är SHA-256-hashat, kedjat med prev_hash till föregående och signerat med organisationens Ed25519-nyckel. Bundlen kan verifieras fristående via node scripts/verify-all-bundles.mjs eller via verify-skriptet i kapaciti-site.

Tester

Sviten ligger i tests/voice-agent.test.mjs och täcker input-validering, prompt-konstruktion, output-parsning, regelbrott-detektion, end-to-end-körning, bundle-verifiering och tamper-test där ett block i en signerad bundle modifieras och verifikationen då måste säga nej.

Roadmap för v1.1

Tre punkter ligger på efterhand. Först, integration mot en levande STT-pipeline i stället för att ta emot färdig transkribering, så att modulen kan trigga partiellt efter varje ny mening. Andra, per-kund prompttillägg via customer_brand så att svarsutkastet anpassas till kundens specifika tonregister. Tredje, en mätare på tonläge över tid för långa samtal, så att eskalering kan triggas när tonen försämras även om enskilda yttranden ligger under tröskeln.

Prova live

Kör voice-agenten i webbläsaren.

Justera input-objektet eller använd starter-värdena. När du trycker på Kör modulen anropas samma agent som i produktion. Audit-kedjan byggs framför dig och hela sessionen signeras med Ed25519 i samma format som exempel-bundlen ovan.

Input (voice-agent schema)

JSON-payload som matchar modulens validateInput. Starter-värdena kommer från en riktig produktionskörning. Max 12 000 tecken.

Tecken: 1 023 / 12 000
Audit-kedja, live

Audit-kedjan visas här när scenariot körs

● Nyhetsbrev

EU AI Act, sandbox-status och svensk AI-infrastruktur.

En sammanfattning ungefär en gång i månaden. Vad förändrats i regelverket, vilka pilot-cases vi sett och vilka vendor-shifts som påverkar svenska bolag. Skickas av oss, inte av en automation som låtsas vara oss.

Uppgifterna används endast för nyhetsbrevet. Inga utskick utöver det utan separat samtycke. Avregistrera när som helst via länk i mailet.