← Blog

Voice agents

Twilio, Vapi of LiveKit: voice-agent stack voor thuiszorg

Maastricht, 3.100 aanmeldingen per week, KPN dwingt TLS 1.3 af op Hemelvaartsdag. Welke voice-agent stack overleeft de prijs per minuut én de on-call?

Jacob Molkenboer· Oprichter · A Brand New Company· 21 dec 2025· 9 min
Crème Bakelieten telefoonhoorn op ivoorleren vloeiblad, groen zijden lint, rode lakzegel op gevouwen briefje.

Het is Hemelvaartsdag, 10:42. De intake-coördinator bij een thuiszorgorganisatie van 29 mensen in Maastricht heeft veertien gemiste oproepen op haar werktelefoon. De PBX heeft sinds 09:00 elke handshake van de KPN SIP-trunk laten vallen. KPN heeft TLS 1.3 's nachts verplicht gemaakt, en de cipher-list op de gateway is sinds 2020 niet meer aangepast.

Er is geen engineer in het gebouw. Er is geen engineer in het land.

Dit is de vraag achter elke voice-agent-aanschaf. Niet hoe goed de stem is. Niet of hij Nederlands spreekt. De vraag is: wie krijgt op een feestdag om 10:42 een pager-melding, en wat is de rekening per minuut terwijl de lijn stil ligt?

We hebben deze vergelijking dit voorjaar drie keer gedaan voor zorgklanten van vergelijkbare omvang. Twilio Voice met ConversationRelay, Vapi als managed orchestration, en een zelfgebouwde stack op LiveKit Agents met Deepgram en Cartesia, elk met een eigen SIP-trunk-verhaal. Dezelfde workload-spec, dezelfde compliance-lat. Drie zeer verschillende rekeningen en drie zeer verschillende on-call-rotaties.

De workload, in cijfers

De referentieklant verwerkt 3.100 cliënt-aanmeldingen per week: een mix van nieuwe intakes, terugbelverzoeken uit de wijkverpleegkundige-inbox, en routing naar het oncall-team op dezelfde dag. Gemiddelde gespreksduur 2 minuten 50, p95 dichter bij 6 minuten. Pieken op maandag 08:30 en woensdag 14:00.

Dat komt gemiddeld neer op zo'n 8.800 minuten per week, ongeveer 38.200 minuten per maand. Een bursty workload, vooral van NL-mobiel naar NL-vast, met een harde eis om het gesprek door te zetten naar een mens zodra de stem van de cliënt paniek, verwarring of het woord spoed bevat.

De agent doet vier dingen:

  • Begroeten, de cliënt identificeren tegen het AFAS-record (BSN nooit telefonisch uitvragen; postcode + huisnummer + geboortedatum is het toegestane pad).
  • Het verzoek categoriseren (intake nieuw, herhaal, klacht, spoed).
  • Inplannen in de Beaufort- of Nedap-planning, of een terugbelmoment vastleggen.
  • Een gestructureerde notitie wegschrijven in het cliëntdossier onder Wkkgz §7-bewaartermijn.

Dat is de vorm. Nu de drie stacks.

Twilio Voice met ConversationRelay

De weg van de minste architecturale weerstand. ConversationRelay draait op je eigen LLM en je eigen TTS, en laat Twilio media, transcriptie, barge-in en de SIP/PSTN-edge afhandelen. Studio doet de fallback-flows, Flex de console voor de overdracht naar een mens.

Indicatieve kosten per minuut bij ons gebruiksprofiel, eind Q1 2026:

  • Inkomend PSTN naar een NL-nummer: ~$0,0085/min.
  • ConversationRelay-sessievergoeding: ~$0,04/min.
  • STT (eigen Deepgram of die van Twilio): $0,005–0,008/min.
  • LLM (gpt-4o-mini bij onze tokenvolumes): ~$0,012/min.
  • TTS (eigen Cartesia): ~$0,02/min.

Conservatief all-in: $0,09–0,12 per minuut. Bij 38.200 minuten per maand komt dat op ruwweg $3.400–$4.600 per maand, exclusief opslag van gespreksopnames en premium-rate routing.

Het interessante deel is niet de rekening. Toen KPN TLS 1.3 op Hemelvaartsdag omzette, merkten onze klanten met Twilio aan de voorkant er niets van. De SIP-edge van Twilio doet de onderhandeling. De on-call-rotatie voor de carrier-handshake is contractueel die van hen. Je wordt wakker van een melding op de status-page, niet van een gepagede engineer.

De prijs van die rust is vendor lock en een prijsbodem die je niet onder controle hebt. De prijzen van Twilio zijn de afgelopen 18 maanden twee keer verschoven. Het contract dat je in maart tekent, is niet het contract dat je in maart verlengt.

Vapi

Vapi is de managed-orchestration-keuze. Je definieert de assistent in hun console of via de API, koppelt 'm aan je tools, en Vapi zit tussen het transport (Twilio of LiveKit, je keus) en je LLM/STT/TTS-providers. Het transport kun je later vervangen. Vapi vervangen lukt niet eenvoudig.

Indicatief per minuut, zelfde profiel:

  • Vapi-orchestration: ~$0,05/min.
  • Transport (Twilio SIP doorgezet): ~$0,013/min.
  • STT (Deepgram Nova-3 streaming, eigen key): ~$0,006/min.
  • LLM (gpt-4o-mini, eigen key): ~$0,012/min.
  • TTS (Cartesia, eigen key): ~$0,02/min.

Conservatief all-in: $0,10–0,13 per minuut. Bij onze volumes: $3.800–$5.000 per maand.

De aantrekkingskracht van Vapi is het dashboard. De intake-coördinator kan een transcript lezen met sentiment, latency en tool-call-traces, zonder een developer erbij. Voor een organisatie van 29 mensen zonder eigen IT is dat reële waarde.

De trade-off heeft dezelfde vorm als bij Twilio: zodra de integratie afdrijft, loopt diagnose via iemand anders zijn support-wachtrij. We hebben gaten van 36 uur gezien op Vapi-tickets die niet aan ons waren om te escaleren, en de cliënt heeft geen boodschap aan wiens logo de schuld krijgt.

LiveKit Agents, Deepgram, Cartesia, op onze eigen SIP

Dit is de stack die we leveren als de klant iemand heeft, of inhuurt, die een pager kan dragen. LiveKit Agents doet de realtime media-laag. Deepgram doet streaming STT. Cartesia doet TTS. De LLM is wat de workload vraagt: voor intake-routing is gpt-4o-mini genoeg; voor klinische overdracht schalen we op.

De SIP-trunk loopt via een Nederlandse carrier (Voiceworks, RoutIT of Twilio Elastic SIP, afhankelijk van wat de inkoop overleeft). Opnames landen direct in een AVG-schone S3-bucket in eu-central-1 met object-lock, niet in de regio van de leverancier.

Indicatief per minuut:

  • SIP-trunk inkomend, Nederlandse carrier: ~€0,006/min.
  • LiveKit Cloud media: ~$0,003/min.
  • Deepgram Nova-3 streaming: ~$0,0058/min.
  • Cartesia Sonic: ~$0,02/min.
  • LLM (gpt-4o-mini): ~$0,012/min.
  • Compute, kleine EU-agent-fleet: ~$0,002/min geamortiseerd.

Conservatief all-in: $0,045–0,055 per minuut. Bij onze volumes: $1.700–$2.100 per maand aan infrastructuur.

Dat getal is op zichzelf misleidend. Tel daar ~8 engineering-uren per maand bij voor daadwerkelijk on-call- en config-drift-werk tegen €90/uur blended: €720/maand. Het eerlijke totaal is €2.500–€2.800 per maand. Goedkoper dan Twilio. Duurder dan de infrastructuurrekening doet vermoeden.

De referentie-flow is kort:

from livekit.agents import Agent, JobContext, WorkerOptions, cli
from livekit.plugins import deepgram, cartesia, openai, silero

class IntakeAgent(Agent):
    def __init__(self):
        super().__init__(
            instructions=open("prompts/intake_nl.md").read(),
            stt=deepgram.STT(model="nova-3", language="nl"),
            llm=openai.LLM(model="gpt-4o-mini"),
            tts=cartesia.TTS(model="sonic-2", voice="nl-female-warm"),
            vad=silero.VAD.load(),
        )

async def entrypoint(ctx: JobContext):
    await ctx.connect()
    agent = IntakeAgent()
    await agent.start(ctx.room)

if __name__ == "__main__":
    cli.run_app(WorkerOptions(entrypoint_fnc=entrypoint))

Bewaartermijnen: AVG tegen Wkkgz

Hier verdienen voice-agents in de Nederlandse zorg hun bestaansrecht, of slopen ze het project. De opname van een intake-gesprek is geen losse log. Zodra er medische informatie in staat, is het onderdeel van het cliëntdossier en valt het onder de Wkkgz-bewaarplicht: 20 jaar vanaf de laatste invoer, tenzij de cliënt om verwijdering vraagt en de zorgaanbieder daarmee instemt.

Het AVG-minimalisatiebeginsel trekt de andere kant op. Je mag niet bewaren wat je niet nodig hebt. Dus splitsen we de artefacten:

  • Ruwe audio: verwijderen na 30 dagen, tenzij gemarkeerd voor klachtafhandeling. Verwerkingsgrond: gerechtvaardigd belang voor kwaliteitsbewaking. Documenteer de DPIA.
  • Transcript en gestructureerde notitie van de agent: 20 jaar bewaard als onderdeel van het dossier.
  • Metadata (caller-ID, duur, agent-pad): 7 jaar bewaard, gescheiden van het dossier.

Twilio en Vapi slaan beide met liefde opnames voor je op. De standaardregio is niet de juiste regio voor zorg in Limburg. Beide ondersteunen EU-residency; je moet erom vragen, het vastleggen in de verwerkersovereenkomst, en het verifiëren in de console.

Op de zelfgebouwde stack is de bucket vanaf de eerste minuut van jou. De retention-policy is één Terraform-bestand. Geen support-ticket nodig om residency aan te tonen bij de Autoriteit Persoonsgegevens.

Waarschuwing

Als je vóór 2024 een Twilio-voice-contract hebt getekend zonder EU-data-residency-addendum, staan je gespreksopnames waarschijnlijk nu in us-east-1. Check dat vóór de volgende AP-audit, niet erna.

De Hemelvaartsdag-vraag

Terug naar 10:42. KPN heeft TLS 1.3 's nachts verplicht uitgerold op elke NL SIP-trunk. Wie patcht de gateway?

  • Twilio: de carrier-engineers van Twilio, op hun rotatie. Jij krijgt een melding op de status-page. Kosten: zitten al in de prijs per minuut.
  • Vapi: hangt ervan af van wie de trunk is. Hun trunk, zie Twilio. Jouw trunk, zie zelfgebouwd.
  • Zelfgebouwd: degene wiens pager je draagt. Hopelijk niet de oprichter.

Dit is de enige vraag die een overleg waard is. Niet de demo. Niet de stemkwaliteit — Cartesia is uitstekend, ElevenLabs is uitstekend, het maakt de cliënt niets uit. De vraag is: als KPN, de LLM-leverancier of de TTS-provider op een feestdag een breaking change uitrolt, wat is dan je MTTR en wie is wakker?

Ons antwoord voor de Maastrichtse klant van 29 mensen was de hybride waar de meeste operators op uitkomen zodra ze het rekenwerk eerlijk doen: Vapi bovenop een Twilio Elastic SIP-trunk in de EU-regio, met een gedocumenteerd fallback-playbook voor de dag dat we eruit groeien. De prijs per minuut ligt hoger dan bij de LiveKit-stack. De on-call ligt lager dan bij de LiveKit-stack. De rekening komt binnen in euro's, binnen de AVG-perimeter. Dat was genoeg.

Voor de verzorgingshuis-groep van 180 bedden die we in februari hebben opgeleverd, hebben we het LiveKit + Deepgram + Cartesia-pad uitgerold met een betaalde SRE-rotatie. De besparing per minuut betaalt de engineer met marge over. Het breakpoint tussen de twee stacks ligt in onze ervaring rond de 25.000 minuten per maand. Daaronder wint managed op TCO. Daarboven wint zelfgebouwd, maar alleen als de rotatie echt is.

De zet voor vanmiddag

Zit je op een voice-agent-beslissing en ging de demo goed: modelleer de rekening tegen je werkelijke minuten, niet die van de demo. Veertigduizend minuten per maand tegen $0,12 is niet hetzelfde probleem als vierhonderdduizend minuten tegen $0,05. Schrijf vervolgens in één zin op wie je belt als de lijn stil is op een feestdag. Eindigt die zin met niemand of support-ticket, dan heb je nog geen stack. Dan heb je een prototype.

Toen we de intake-agent voor deze Maastrichtse klant bouwden, beet vooral het gat tussen de demo-rekening en de productie-rekening zodra Wkkgz-waardige bewaartermijnen op de opnames waren aangesloten. We hebben dat opgelost door audio-retentie en transcript-retentie op bucketniveau te splitsen — kleine ingreep, groot compliance-dividend. Wil je dat playbook toegepast zien op je eigen intake-flow, dan begint ons werk aan voice-agents precies daar.

Kern

De op papier goedkoopste voice-stack heeft vaak de hoogste on-call-kosten. Modelleer de prijs per minuut, en vraag dan wie de SIP-trunk patcht op Hemelvaartsdag.

FAQ

Wat kost een intake-voice-agent feitelijk per maand bij zo'n 3.000 gesprekken per week?

Ruwweg €1.700–€2.100 aan infrastructuur op een zelfgebouwde LiveKit-stack, of $3.400–$5.000 op Twilio of Vapi, exclusief opslag en ops-uren. Volume en gespreksduur verschuiven het antwoord snel.

Zijn gespreksopnames van een voice-agent onder de AVG toegestaan in de Nederlandse zorg?

Ja, mits een gedocumenteerde DPIA, een verwerkersovereenkomst en een heldere bewaarsplitsing. Ruwe audio kortlopend, transcripten in het cliëntdossier onder de Wkkgz, metadata gescheiden.

Kunnen Twilio of Vapi opnames in de EU houden?

Beide ondersteunen EU-regio's, maar dat moet expliciet contractueel zijn vastgelegd en geconfigureerd. De standaard-routing van oudere contracten wijst vaak nog naar us-east-1. Verifieer het in de console, niet in de salesdeck.

Hebben we een eigen SRE-rotatie nodig als we LiveKit + Deepgram + Cartesia draaien?

Feitelijk wel. Iemand moet de SIP-trunk patchen als carriers protocol-upgrades afdwingen, en keys roteren als een leverancier het API-oppervlak verandert. Reken op ~8 engineering-uren per maand bij ons referentievolume.

Waar ligt het breakpoint tussen managed en zelfgebouwd?

In onze ervaring rond de 25.000 minuten per maand. Daaronder wint Twilio of Vapi op total cost of ownership. Daarboven betaalt de LiveKit-stack een eigen rotatie met marge over.

voice agentsai agentscase studyintegrationsoperationsarchitecture

Iets bouwen?

Start een project