Conviro opzetten en beheren: de werkzaamheden rondom het model

Technische lessen uit de ontwikkeling van Conviro: grenzen voor gebruikers, kwaliteit van de zoekresultaten, routering door providers, machtigingen voor tools en verantwoordelijkheid voor het beheer.

Conviro is het AI-platform voor klantenondersteuning dat ik heb ontworpen, gebouwd en dat ik als enige technicus beheer. Het integreert webchat, WhatsApp en Instagram in één gezamenlijke ondersteuningsworkflow, met een kennisbank, AI-ondersteuning en de mogelijkheid om de zaak door te verwijzen naar een medewerker.

Mijn verantwoordelijkheden omvatten de backend, integraties, implementatie en de ervaring die klanten hebben na een release. Dat heeft mijn kijk op het systeem gevormd: een overtuigend antwoord is slechts één onderdeel van een succesvol ondersteuningsgesprek.

Een gesprek overschrijdt verschillende grenzen

Een binnenkomend bericht hoort bij een tenant en een kanaal. Het moet op betrouwbare wijze worden geaccepteerd, aan het juiste gesprek worden gekoppeld en worden verwerkt volgens de machtigingen en het gebruiksbeleid van die tenant.

Als er AI bij betrokken is, doorloopt het verzoek de fasen ophalen, modelroutering, validatie van het antwoord en aflevering. Elk van deze fasen kan afzonderlijk mislukken. Een provider kan onbereikbaar zijn terwijl de inbox nog steeds goed functioneert. Een bron kan irrelevant zijn terwijl het model zelf wel succesvol reageert.

Daarom houd ik die statussen zichtbaar in de architectuur. Een ontvangen bericht, een gegenereerd antwoord en een afgeleverd antwoord zijn afzonderlijke feiten. Als we ze als één status zouden behandelen, zou de informatie die nodig is om een onderbroken gesprek te herstellen, verborgen blijven.

De kwaliteit van de zoekresultaten heeft meer invloed op het antwoord dan een verzorgde formulering

Conviro maakt gebruik van PostgreSQL en pgvector voor hybride zoekopdrachten, waarbij een combinatie wordt gemaakt van gedetailleerd zoeken met full-text-signalen en herrangschikking. Het doel is om bruikbare informatie te vinden ondanks de verschillen in bewoordingen en taal die in echte ondersteuningsgesprekken voorkomen.

Ik heb ook een validatietool ontwikkeld die achteraf controleert of concrete beweringen – zoals links, prijzen, productcodes en garantievoorwaarden – kloppen. De validatietool toetst deze beweringen aan de hand van de opgehaalde gegevens en hanteert strengere criteria wanneer niet-onderbouwde commerciële informatie een klant zou kunnen misleiden.

Deze controles hebben hun beperkingen. Een validator kan een semantische fout over het hoofd zien, en een verouderde bron kan consequent worden gereproduceerd. Naast validatie maak ik gebruik van evaluatievoorbeelden en bronbeheer; geen enkel afzonderlijk onderdeel bewijst dat elk antwoord correct is.

Flexibiliteit van zorgverleners vereist een consistent beleid

De LLM-laag ondersteunt meerdere leveranciers via een gedeeld adaptercontract. Bij de routering wordt rekening gehouden met de taak, de kwaliteitsmodus en de geconfigureerde gegevensregio, met fallback-gedrag en circuitbreakers in geval van storingen bij providers.

Eén concrete beperking was belangrijk genoeg om aan te passen: de interne assistent kreeg een eigen stroomonderbreker, zodat storingen daarin de chat met klanten niet onnodig zouden verstoren. Dat is het soort detail dat naar voren komt wanneer het systeem als een product wordt beheerd in plaats van alleen als een eenmalige demonstratie te worden getoond.

Verbruiksregistratie en budgetten per huurder gaan hand in hand met routering. Een noodoplossing moet het beleid en de uitgavenbeperkingen van de klant in stand houden. Betrouwbaarheid betekent niet dat er zonder rekening te houden met die limieten naar providers blijft worden gebeld.

Door het gebruik van tools wordt autorisatie een onderdeel van het AI-traject

De ondersteunende copiloot plant een beslissing als een gestructureerde keuze: een hulpmiddel gebruiken, antwoorden, om opheldering vragen of afwijzen. Hulpmiddelen bevatten informatie over rechten en risico’s, en de uitvoering wordt op de server geautoriseerd op basis van de rol van de gebruiker.

De initiële uitvoeringsomvang is alleen-lezen. De resultaten van de tool worden geanonimiseerd voordat ze het model bereiken, en de beurt heeft een beperkt budget en een audittraject. Dankzij deze beperkingen behoudt de applicatie de controle, zelfs wanneer de planner een ongeschikte actie voorstelt.

Bij asynchroon werken richten transactionele uitboxrecords, herbezorging door de broker, idempotente consumenten en de afhandeling van dead letters zich op verschillende onderdelen van de bezorgingscyclus. Ik vertrouw niet uitsluitend op een wachtrij om een bedrijfstransactie veilig herhaalbaar te maken.

Het eigendom blijft bestaan nadat de code is geschreven

Alleen al het opzetten van het platform maakt operationele duidelijkheid bijzonder waardevol. Als er iets misgaat, moet ik vaststellen welke tenant en welk verzoek hierdoor zijn getroffen, in welke fase de fout is opgetreden, of er externe acties zijn voltooid en welke herstelmaatregel veilig is.

Ik voer evaluaties uit via de productierouter en het validatietraject, onderhoud regressietests en zorg ervoor dat het gedrag bij implementatie en terugdraaien deel blijft uitmaken van het technische werk. De applicatie is een combinatie van modelgedrag en gewone softwaregrenzen; beide vereisen aandacht.

Meer informatie over het product is te vinden op useconviro.com. De technische vraagstukken waar ik me mee bezighoud, zijn van praktische aard: hoe onzekerheden zichtbaar te maken, hoe zinvolle autonomie te bieden en hoe veilig te herstellen wanneer een afhankelijkheid of een aanname faalt.

Bijgewerkt op 25 september 2026.