Blog/Gepubliceerd: Bijgewerkt:

Sta vooraan wanneer Gaavala in de Chrome Web Store verschijnt. Op de wachtlijst

Hoe Gaavala je vergaderaudio beschermt: een privacy-first architectuur

Vergaderaudio gaat via een versleutelde verbinding rechtstreeks van je browser naar Soniox. De backend van Gaavala regelt aanmelding, abonnement en gebruik; hij ontvangt geen vergaderaudio.

Vergaderaudio gaat browser → Soniox. Onze servers zitten niet in het pad.
Vergaderaudio gaat van de browser naar Soniox — geen Gaavala-server onderweg

Het kernprincipe van de privacy

De meeste SaaS-vertaaltools volgen een bekende gegevensstroom:

  1. Je browser legt vergaderaudio vast
  2. De audio wordt geüpload naar de backend van de leverancier
  3. De backend van de leverancier proxyt de audio door naar een speech-to-text-engine
  4. Transcripten komen terug via de backend van de leverancier
  5. Servers van de leverancier loggen, cachen of bewaren de audio onderweg vaak

Elke hop in die keten is een vertrouwensgrens. Elke hop is een plek waar een logbug, een gelekte credential, een dagvaarding of een kwaadwillende engineer de inhoud van je vergadering kan blootleggen. Hoe meer partijen de audio aanraken, hoe moeilijker het is om aan een auditor te bewijzen dat niemand die heeft bewaard.

Gaavala schrapt de proxystap volledig. De gegevensstroom is:

  1. Je browser legt vergaderaudio vast vanuit het tabblad
  2. Je browser opent een directe WebSocket naar Soniox
  3. De audio streamt rechtstreeks over die WebSocket
  4. Soniox stuurt transcripten rechtstreeks terug naar je browser
  5. De backend van Gaavala komt er nooit aan te pas

De Chrome-extensie die op jouw machine draait is het enige stuk van onze code dat je vergaderaudio ooit aanraakt — en die stuurt de audio niet naar ons.

Waarom we voor deze architectuur kozen

Toen we Gaavala als Chrome-extensie herbouwden, namen we een bewuste architectuurbeslissing: de extensie zou gebruikers via onze backend authenticeren, de abonnementsstatus beheren en metadata leveren — maar ze zou nooit in het audiopad zitten. De redenering was rechttoe rechtaan:

  • Rechtstreekse audiotransmissie naar Soniox vermindert het aantal technische tussenstappen, maar maakt de verplichtingen voor gegevensbescherming niet nul. Beoordeel Gaavala en zijn subverwerker Soniox samen, inclusief doel, bewaartermijnen en toepasselijke overeenkomsten. Deze architectuur bewijst op zichzelf geen HIPAA- of SOC 2-conformiteit.
  • Blast radius bij een inbreuk: Een inbreuk op een server die audio verwerkt is fundamenteel erger dan een inbreuk op een server die tekstmetadata verwerkt. We hebben liever dat onze gevoeligste systemen de minst gevoelige data behandelen.
  • Latency: Elke proxyhop voegt round-trip-tijd toe. Rechtstreeks streamen van browser naar Soniox schrapt een volledige hop, wat ons merkbaar betere ondertitellatency geeft.
  • Kosten die met privacy meebewegen: Een eigen audioproxy draaien zou betekenen dat we bij elke vergadering voor bandbreedte en compute betalen. Die niet draaien bespaart geld en beschermt klanten. Wanneer prikkels op één lijn liggen, blijft de architectuur meestal eerlijk.

De gegevensstroom in detail

Laten we kijken naar wat er daadwerkelijk gebeurt wanneer je in een vergadering de transcriptie start.

Stap 1: Authenticatie

Wanneer je voor het eerst bij Gaavala inlogt, gebruikt de extensie de chrome.identity.launchWebAuthFlow API van Chrome om een OAuth Authorization Code-flow met Google of Microsoft af te ronden. De identityprovider geeft een authorization code terug aan je browser, die de extensie bij onze backend inwisselt voor een Gaavala-sessie-JWT. Die JWT wordt opgeslagen in chrome.storage.local en wordt gebruikt om volgende API-aanroepen naar onze backend te authenticeren.

Hier komt geen audio aan te pas. De OAuth-flow is puur tekst — tokens, claims, profielvelden.

Stap 2: Tijdelijke Soniox-sleutel

Wanneer je in een vergadering op "Start" klikt, roept de extensie onze backend-API aan om een kortlevende tijdelijke Soniox-sleutel op te vragen. Die sleutel heeft drie belangrijke eigenschappen:

  • Hij is beperkt tot speech-to-text — verder niets in het API-oppervlak van Soniox
  • Hij verloopt in minuten, niet in dagen
  • Hij wordt één keer per sessie uitgegeven en wordt niet op je apparaat bewaard

Het patroon met tijdelijke sleutels is cruciaal voor het privacyverhaal. Als Gaavala een langlevende Soniox-API-sleutel in de extensiebundel zou meeleveren, kon iedereen die eruit halen. In plaats daarvan geven we wegwerpsleutels uit die op aanvraag worden aangemaakt, gebonden zijn aan je geauthenticeerde sessie, en kort na het einde van de sessie ongeldig worden.

Onze backend logt alleen de metadata van dat verzoek — welke gebruiker, welk tijdstip, welk abonnementsniveau. Ze ziet geen audio, omdat er nog geen audio is vastgelegd.

Stap 3: Tabbladaudio vastleggen

Je neemt in een Chrome-tabblad deel aan je gesprek in Microsoft Teams, Zoom, Google Meet of Webex. De Gaavala-extensie opent het zijpaneel en vraagt je om het vastleggen van audio te starten. Bevestig je dat, dan gebruikt de extensie de tabCapture API van Chrome — een API die alleen voor extensies bestaat en waarmee audio van het actieve tabblad kan worden vastgelegd met expliciete toestemming van de gebruiker en een zichtbare indicator.

Chrome routeert de vastgelegde audio naar een offscreen-document dat Gaavala op de achtergrond draait. Het offscreen-document is een sandboxed pagina die de extensie kan gebruiken om audioverwerking af te handelen zonder zichtbare UI aan te houden. Binnen dat offscreen-document opent Gaavala een MediaStream, verbindt die met een AudioContext en maakt hem klaar om te streamen.

Cruciaal is dat de audio ook door een lokale audiograaf loopt die het geluid terugvoert naar je speakers. Dat betekent dat je de vergadering gewoon kunt blijven horen terwijl Gaavala haar vastlegt — er wordt niets gedempt of omgeleid.

Stap 4: Directe WebSocket naar Soniox

Het offscreen-document opent vervolgens een WebSocket-verbinding rechtstreeks naar Soniox. Die verbinding:

  • Gebruikt TLS 1.2 of hoger
  • Wordt geauthenticeerd met de kortlevende tijdelijke sleutel uit stap 2
  • Vertrekt vanuit de netwerkstack van je browser — pakketten stromen van je besturingssysteem naar Soniox, niet naar Gaavala

De uit het tabblad vastgelegde audioframes worden als PCM gecodeerd en over de WebSocket verstuurd. Soniox verwerkt ze in realtime en streamt transcriptietokens over dezelfde verbinding terug. Die tokens — tekstfragmenten met tijdstempel en sprekerlabel — komen rechtstreeks binnen in het offscreen-document, dat ze doorgeeft aan het zijpaneel om te tonen.

Op geen enkel moment in deze hele lus bereikt een pakket met vergaderaudio een server van Gaavala. Je kunt dit zelf verifiëren met Chrome DevTools: open het Network-tabblad met het WS-filter aan terwijl Gaavala draait, en je ziet precies één WebSocket — naar een soniox.com-host — en nul uitgaand verkeer naar gaavala.com met vergaderaudio erin.

Stap 5: Weergave van het transcript en optionele samenvatting

Transcripties worden op je apparaat bewaard in de lokale database van de extensie en na 7 dagen automatisch verwijderd. Exports die je zelf downloadt blijven onder jouw beheer. AI-samenvattingen worden op het apparaat gemaakt. De servers van Gaavala ontvangen de transcripties niet; die lokale opslag is wel relevant bij het delen of opruimen van een apparaat.

Wil je antwoorden zonder zelf te spreken, bekijk dan de gids voor toegankelijke vergaderingen.

Welke data de servers van Gaavala zien

Dit zijn de belangrijkste soorten data die onze backend verwerkt, over alle functies heen:

DataWanneerBewaartermijnOpmerkingen
Gaavala-sessie-refresh-tokenBij inloggenLevensduur van het token — verlopen rijen worden dagelijks opgeruimdJe Google/Microsoft-OAuth-token wordt nooit opgeslagen
Gebruikersprofiel (e-mail, naam)Bij inloggenLevensduur van het accountVoor facturering + support
AbonnementsstatusAltijdLevensduur van het accountAbonnementsniveau, status van de proefperiode
Betalingsgegevens (Pro)Wanneer je betaaltZo lang als de belastingwet vereist, ook nadat je je account verwijdertBedrag, belasting, valuta, land, datum en betaalmethode, zoals onze betaalpartner ze doorgeeft; je kaartgegevens blijven bij de betaalpartner
Aanvragen van een tijdelijke Soniox-sleutelPer sessieAlleen in het verzoeklogGeen audio
Teller van transcriptieminutenPer sessieLevensduur van het accountGebundeld per maand, voor het handhaven van het quotum
Referentiesample voor de stemkloon (Pro)Alleen als je er een opneemtTot je je stem of je account verwijdertVersleuteld (AES-256-GCM), alleen gebruikt om je stem te bouwen; geen vergaderaudio
Meldingen van technische problemenAlleen als je er een verstuurt180 dagenDiagnosegegevens die je bewust verstuurt; transcripttekst is uitgesloten
InterfacetaalTelkens als je de extensie ingelogd gebruiktLevensduur van het accountZodat onze e-mails je in je eigen taal bereiken
E-mailadres op de wachtlijst (website)Alleen als je je aanmeldt voor de wachtlijstTot je ons vraagt het te wissenMet de taal van de pagina en de campagnebron; alleen gebruikt om het adres te bevestigen en de lancering aan te kondigen
Anonieme website-analyticsAlleen nadat je cookies accepteertBewaard door Google Analytics, niet in onze databaseAlleen de website — de extensie rapporteert anonieme fouttellingen die geen gebruikers-ID bevatten

Dit is de exacte lijst van data die onze backend niet ziet:

  • Ruwe vergaderaudio (in welk formaat en op welk moment dan ook)
  • Gecomprimeerde streams met vergaderaudio
  • Buffers of tussenliggende representaties van vergaderaudio
  • Biometrische stemdata uit je vergaderingen (de enige stemopname die we bewaren is de Pro-referentiesample voor de stemkloon hierboven, en alleen als je die opneemt)
  • Sprekeridentiteit voorbij de anonieme spreker-ID's die Soniox toekent
  • Transcripttekst — samenvattingen worden on-device gegenereerd; transcripten verlaten je machine nooit

Zou een rechter Gaavala dagvaarden voor de audio van een specifieke vergadering, dan is het technisch waarheidsgetrouwe antwoord dat we die niet hebben en niet kunnen achterhalen. Ze heeft nooit op onze systemen bestaan.

De opname- en verwijderstappen staan in stemklonen in je eigen stem.

Controleer het zelf

Een van de voordelen van draaien als Chrome-extensie is dat de volledige runtime inspecteerbaar is. Je IT-team kan onze privacyclaims verifiëren zonder ook maar één woord van deze post te geloven:

Methode 1 — Netwerkinspectie. Open chrome://extensions, zoek Gaavala en klik op "service worker" of "inspect views > background page". Ga in DevTools naar het Network-tabblad en filter op WS (WebSocket). Start een vergadering. Je ziet precies één geopende WebSocket, naar een soniox.com-host. Er gaat geen vergaderaudio naar gaavala.com.

Methode 2 — Manifestinspectie. Klap in chrome://extensions "Details" open bij Gaavala en bekijk de machtigingen. De host_permissions declareren precies welke origins de extensie kan bereiken. Je ziet Soniox-endpoints voor het streamen en Gaavala-endpoints voor auth en abonnement. Er is geen wildcard-hostmachtiging en geen ongedeclareerde netwerktoegang.

Methode 3 — Broninspectie. De extensie wordt geleverd met een service worker, een offscreen-document, een zijpaneel en content scripts. Chrome stelt die allemaal beschikbaar voor inspectie via de developer tools. Je securityteam kan zich op elk moment aan de background page of het offscreen-document hangen en de runtime-status lezen — inclusief de bevestiging dat het audiostream-object nooit wordt geserialiseerd naar een fetch of XHR richting ons domein.

We publiceren het manifest en de hostmachtigingen als onderdeel van onze Chrome Web Store-vermelding, en we verwelkomen securityonderzoek door derden.

Compliance-mapping

GDPR en dataminimalisatie

Artikel 5(1)(c) van de GDPR legt het principe van dataminimalisatie vast: persoonsgegevens moeten "toereikend, ter zake dienend en beperkt tot wat noodzakelijk is" zijn. Stemdata zijn persoonsgegevens onder de GDPR, en biometrische gegevens wanneer ze voor identificatie worden gebruikt.

De gegevensstroom beperkt welke inhoud de backend ontvangt. Een DPIA moet desondanks de volledige dienst, de lokale geschiedenis, optionele stemopnamen en Soniox als subverwerker omvatten.

Soniox zit wel in je compliance-keten, als de spraakdienstverlener die Gaavala inschakelt: Gaavala is houder van het Soniox-account en geeft de kortlevende sleutel uit waarmee je browser verbinding maakt, en ons privacybeleid noemt Soniox onder de derde partijen met wie we gegevens delen. Een DPIA omvat Soniox daarom als onderdeel van de dienst van Gaavala, niet als een leverancier met wie je zelf een contract sluit.

HIPAA en audio met PHI

Volgens de HHS-richtlijnen over business associates kan een aanbieder die elektronische beschermde gezondheidsinformatie (ePHI) verwerkt namens een onder HIPAA vallende organisatie of een andere business associate, zelf een business associate zijn. Als die relatie van toepassing is, zijn passende BAA-bepalingen vereist. De HHS-richtlijnen voor clouddiensten lichten de toepassing op clouddiensten toe. Beoordeel de feitelijke dienst, gegevensstromen en overeenkomsten.

De backend van Gaavala ontvangt nooit vergaderaudio, dus PHI die in een vergadering wordt uitgesproken, wordt nooit op de servers van Gaavala opgeslagen. De vergaderaudio wordt wel naar Soniox verzonden, de spraakdienstverlener die Gaavala inschakelt, en daar verwerkt, dus een HIPAA-beoordeling moet dat pad meenemen als onderdeel van de dienst van Gaavala — het is geen relatie tussen alleen jou en Soniox. Genereer je AI-samenvattingen, dan worden die on-device geproduceerd door de ingebouwde AI van Chrome — de transcripttekst blijft op je machine, dus de samenvattingsfunctie voegt noch de servers van Gaavala noch een andere leverancier toe aan de PHI-verwerkingsketen.

SOC 2-leveranciersrisico

CC9.2 van de AICPA Trust Services Criteria gaat over het beoordelen en beheersen van risico's rond leveranciers en zakelijke partners. De beoordeling hangt af van het afgebakende systeem, de diensten en toezeggingen, en van de rol van de aanbieder binnen die scope.

In de architectuur van Gaavala maakt je browser rechtstreeks verbinding met Soniox, maar de leveranciersrelatie loopt via Gaavala: Gaavala is houder van het Soniox-account, dus je leveranciersrisicoregister vermeldt Soniox als subverwerker van Gaavala voor spraakherkenning, niet als een leverancier met wie je zelf een contract sluit. Wat de directe verbinding verkleint, is de eigen voetafdruk van Gaavala: onze servers verwerken accountgegevens zoals identiteit, facturering en gebruik, plus het Pro-referentiesample voor de stemkloon als er een is opgenomen — geen vergaderaudio, en geen transcript- of samenvattingstekst, want die verlaat de machine van de gebruiker nooit.

Waarom de vorm van een Chrome-extensie uitmaakt

Veel van de bovenstaande privacygaranties hangen ervan af dat Gaavala draait als Chrome-extensie met een netwerkpatroon dat rechtstreeks naar de provider gaat. We hebben verschillende alternatieven overwogen en verworpen:

  • Server-side audioproxy: Eenvoudig te implementeren, maar het zou ons dwingen de audio van elke klant op onze eigen infrastructuur te verwerken. Precies wat we expliciet wilden vermijden.
  • Webapp met ingebouwde STT: Tabbladaudio vastleggen vanuit een webpagina vereist getDisplayMedia, dat de gebruiker elke sessie een kiezer op OS-niveau voorschotelt en de extensie vastpint op het tabblad dat die kiest. Erger nog: er is geen betrouwbare manier voor een webpagina om een audiostream op de achtergrond aan te houden terwijl de gebruiker met andere tabbladen bezig is.
  • Native desktopapp: Zou ons meer controle geven, maar installatiefrictie, ondertekeningskosten en OS-specifieke ontwikkellast toevoegen. En het zou onze rol als audioverwerker nog steeds niet wegnemen tenzij we heel zorgvuldig waren — wat betekent dat we alle dezelfde problemen opnieuw zouden uitvinden.

De vorm van een Chrome-extensie maakte de privacyarchitectuur die we wilden als enige mogelijk. tabCapture, offscreen-documenten en het service-workermodel van Manifest V3 laten de extensie samen vergaderaudio op de machine van de gebruiker vastleggen en via een directe verbinding naar de speech-to-text-engine streamen, en de achtergrondstatus bijhouden die lange vergaderingen nodig hebben — zonder dat er vergaderaudio via ons loopt.

De dingen die we nog steeds goed moeten doen

Privacyarchitectuur eindigt niet bij "we raken geen vergaderaudio aan". Er zijn aangrenzende zorgen die we net zo serieus nemen:

  • Het aanmaken van tijdelijke sleutels: De kortlevende Soniox-sleutels die we aanmaken zouden misbruikt kunnen worden als onze backend sleutels voor een aanvaller aanmaakt. We authenticeren elk verzoek met je JWT, we rate limiten de uitgifte van sleutels, en we loggen afwijkingen.
  • Extensie-updates: Een bijgewerkte extensieversie zou in theorie het netwerkpatroon kunnen veranderen. We versioneren het manifest, we publiceren changelogs, en de Chrome Web Store toont nieuwe machtigingen voordat een update wordt geïnstalleerd.
  • Samenvattingstekst: Samenvattingen worden volledig on-device gegenereerd door de ingebouwde AI van Chrome (Gemini Nano), waardoor het transcript onze backend nooit bereikt — dit risico bestaat in de huidige architectuur niet. Is zelfs lokale AI-verwerking meer dan een bepaalde vergadering kan verdragen, dan kan de samenvattingsfunctie simpelweg ongebruikt blijven; niets anders hangt ervan af.
  • Referentiesample voor de stemkloon (Pro): maak je een persoonlijke stemkloon, dan wordt je sample van twee minuten versleuteld opgeslagen (AES-256-GCM) op de servers van Gaavala, alleen gebruikt om je stem te bouwen, en op verzoek verwijderd — zie het privacybeleid.
  • Juridische verzoeken: We verbinden ons er publiekelijk toe alleen te reageren op juridische verzoeken voor data die we daadwerkelijk hebben. Voor vergaderaudio zal dat altijd "die hebben we niet" zijn.

Vergeleken met andere vergadervertaaltools

Vergelijk afzonderlijk waar audio en transcripties naartoe gaan, hoelang ze worden bewaard en wie ze kan openen. Een verbod op modeltraining betekent niet automatisch dat niets wordt opgeslagen. Controleer voor je gekozen dienst de actuele privacyvoorwaarden, subverwerkers en verwijdermogelijkheden.

Nee — volgens het beleid van Zoom wordt klantinhoud niet gebruikt om AI-modellen te trainen.

Privacy is de standaard, geen betaald niveau

De gratis versie van Gaavala geeft je dezelfde rechtstreeks-naar-Soniox-architectuur, dezelfde speaker diarization en dezelfde dekking van 60 talen. Pro ontgrendelt 120 minuten per dag, Speak Mode en stemklonen — geen privacy. Wij vinden niet dat privacybewuste gebruikers meer zouden moeten betalen om hun data veilig te houden.

Heeft je organisatie vergadervertaaltools tot nu toe afgewezen omdat compliance geen servers van een toolaanbieder tussen je vergaderingen en de speech-to-text-engine wilde, dan is Gaavala precies voor die situatie gemaakt. De pijplijn is zo ontworpen dat je juridische, security- en complianceteams minder te beoordelen hebben — niet meer.

Op de wachtlijst

Eenmalige gratis proefperiode: 5 minuten transcriptie, wordt nooit gereset. Geen creditcard. Geen registratie op de website.


Verder lezen