← 3n.nl

making of · kleine modellen

Kleine modellen, grote klussen

Hoe in één weekend een werkbank ontstond waarin kleine AI-modellen op je eigen telefoon de klussen van de ambtenaar doen — notuleren, lakken, lezen, vertalen, voorlezen — zonder dat er iets naar een server gaat. Met de schema's, de metingen en wat er mis ging.

8–10 november 2026 · AntBench v0.8 · gebouwd met Claude, beoordeeld via pull requests, gehost op de zelfbesturende server van 3n

Waar het om gaat

Elk AI-hulpmiddel dat een ambtenaar vandaag heeft, stopt bij dezelfde deur: vertrouwelijk, persoonsgegevens, opnames. Publieke chatbots lekken (de Autoriteit Persoonsgegevens telt tientallen meldingen; een gemeente vond cv's en jeugdzorgdossiers terug in een chatbot). Microsoft Copilot staat bij het Rijk op oranje. En zelfs Vlam, de eigen assistent van de rijksoverheid, mag geen vertrouwelijke of privacygevoelige informatie verwerken.

Achter die deur zit het saaiste en duurste werk: notuleren (ambtenaren vergaderen 40 tot 60 % van hun tijd), lakken (de Woo kost €150 miljoen per jaar, 134 mensuur per verzoek bij ministeries), beoordelen, rapporteren.

De stelling: een model dat op het toestel blijft heeft voor dat werk geen toestemming nodig. Geen DPIA-gesprek, geen verwerkersovereenkomst, geen bereik. Openen en doen. De vraag was of dat écht kan, op een gewone telefoon, met Nederlands — en of het dan ook nog leuk is.

Welk werk mag waarheen? publieke chatbot Copilot Vlam (Rijk) op het toestel openbare tekst, brainstorm interne concepten, memo's dossiers, Woo-stukken opnames van overleggen zonder bereik (kelder, trein) verboden oranje ja ja lek oranje ja ja nee oranje nee ja nee beperkt nee ja nee nee nee ja De deur: alles rechts van de stippellijn kan vandaag alleen op het toestel. Daar zit het saaiste en duurste werk.
Schema 1 — Welk hulpmiddel mag welk werk aanraken. Bronnen: standpunt SLM Rijk over Copilot (sept 2025), berichtgeving over Vlam (juni 2026), AP over datalekken via chatbots (dec 2025).

Wat er gebouwd is

Drie pagina's, één codebasis, nul servers die iets verwerken. De machine levert statische bestanden; de modellen draaien in de browser via WebAssembly en WebGPU — op een telefoon, een laptop, een iPad.

AntBench — het lab

Alle browser-modellen van Desert Ant Labs los te proberen: spraak, sprekers, taal, onderwerpen, persoonsgegevens, beeld. Plus de vliegtuigtest die bewijst dat niets het toestel verlaat.

De twaalf klussen — de menukaart

Overleg → notulen, Woo lakken, inspraak, veldinspectie, hoorzitting, memo-checklist, archiveren, toegankelijkheid… met per klus de cijfers en één knop.

Ketting — zelf rijgen

Kralen uit een voorraad slepen in de volgorde die je wilt. Elke kraal geeft zijn resultaat door aan de volgende. Groen als het past, rood als er iets mist, grijs als de kraal nog niet bestaat.

Het toestel (telefoon, laptop, iPad) browser · WebAssembly + WebGPU Voz · Who · Ear Redact · Gist Eye · Tongue Tesseract OCR Opus-MT Qwen3 (LLM) Piper (stem) modelcache (Cache Storage) invoer: microfoon, camera, bestanden — blijft hier uitkomst: notulen.md · geredigeerd.txt · spraak.wav · ZIP dev.3n.nl (NixOS, Caddy) alleen statische bestanden: html · js · wasm · runtimes verwerkt niets, ziet geen invoer huggingface.co modelgewichten, één keer, met hash-controle events.desertant.com 1 verzoek per modellading · offline: mislukt laden 1× ✈ ✗ Pijlen naar rechts zijn de enige netwerkverbindingen. De vliegtuigtest in AntBench telt ze: na de eerste keer nul.
Schema 2 — Architectuur. De server kan geen gegevens lekken omdat hij ze nooit ziet. De stippellijn naar Desert Ant is het ene verzoek dat de SDK bij elke modellading doet; in vliegtuigmodus mislukt het en werkt het model gewoon door.

De ketting: één pakket dat doorgegeven wordt

Het idee dat alles bij elkaar bracht: een klus is een ketting van kralen. Elke kraal doet één ding en geeft zijn resultaat door in één pakket — tekst, audio, beeld, woorden met tijd, sprekers, taal, onderwerpen, persoonsgegevens, spraak. Een kraal "past" als alles wat hij nodig heeft op dat punt in de ketting al in het pakket zit. Dat is meteen de uitleg voor de gebruiker: groen past, rood mist iets, grijs bestaat nog niet.

🎙️opname 🎙️TranscriberenVoz 👥SprekersWho 🔍PersoonsgegevensRedact ✍️ActiepuntenQwen3 🎁notulen audio + tekst, woorden + sprekers tekst gemaskeerd, + pgg tekst = actiepunten Wat een kraal verandert (Redact maskeert de tekst) blijft als "origineel" bij die kraal; de volgende kraal krijgt de nieuwe versie. Een grijze kraal (nog niet gebouwd) laat de ketting daar stoppen — en vertelt zo zelf wat er nog mist.
Schema 3 — Het doorgeefpakket in de ketting "overleg → notulen". Dezelfde kralen anders gerijgd zijn een hoorzitting, een inspraakronde of een gescande brief.

De voorraad telt twintig kralen van drie soorten leveranciers: de SDK van Desert Ant Labs (herkennen: spraak, sprekers, taal, onderwerpen, persoonsgegevens, beeld), open modellen die lezen, schrijven, vertalen en spreken (Tesseract, Opus-MT, Qwen3, Piper), en eigen kralen naar ideeën van Michiel Buisman — de vragenlijst willen/mogen/kunnen, de checklist, zoeken met bronvermelding.

Wat de metingen zeiden

Elke stap is gemeten, niet aangenomen. Een paar uitkomsten die het verhaal hebben veranderd:

Transcript van dezelfde Nederlandse opname (2:35, telefoon op tafel) Voz, origineel366 woorden · 2 sprekers · nl Voz, ná Clearonsamenhangend, sprekers wisselen Paneldiscussie, 19 minuten, verre microfoon Voz (telefoon)2841 woorden in 73 s Whisper turbo (server)2358 woorden in 463 s — niet beter Netwerk tijdens één notulenketting verzoeken8× events.desertant.com (telemetrie) · 0× invoer · offline: 0
Schema 4 — Drie metingen die de koers bepaalden: opschonen vóór transcriberen uit; Voz hoeft niet te wijken voor Whisper; de SDK belt wél naar huis.
MetingUitkomstGevolg
Clear (opschonen) vóór VozTranscript aantoonbaar slechter; de ruisonderdrukking haalt spraakdetail wegClear standaard uit in de keten, wel beschikbaar voor afspeelbare audio
Clear's standaard maxGainDB = 9 dBEen stille opname (−43 LUFS) blijft stil (−34)Gain-cap naar 40 dB; eigen BS.1770-meter omdat de SDK alleen de invoer meet
Whisper large-v3-turbo op dezelfde 19 minNiet beter dan Voz: nettere zinnen, meer weggelaten, zelfde eigennamen foutDe opname is de beperking, niet het model; microfoon dichterbij wint meer dan welk model ook
Moderator op een portret (gezicht met hand)"nude 70 %" → NSFW; de SDK neemt de hoogste regio-score als totaalDrempel en policy instelbaar; vals-positief gemeld
Geheugen bij 19 min audio op een telefoonTab crasht bij het samenstellen (48 kHz Float32 + WAV + ZIP tegelijk)Terug naar 16 kHz, buffers vrijgeven, WAV buiten de ZIP
ModelcacheDe browser-SDK bewaart modellen alleen in het paginageheugen (349 MB Voz per lading)Eigen service worker cachet modellen en app; herladen en vliegtuigmodus werken
TelemetrieBij elke modellading één verzoek naar events.desertant.com/api/v1, hardgecodeerd in de wasm-kernZichtbaar in de netwerkteller; vraag aan de leverancier over inhoud en opt-out

Hoe het verliep

Werkwijze zoals altijd bij 3n: de mens stuurt, de AI bouwt, elke wijziging gaat als pull request naar main, en de server haalt hem zelf op. Dertien pull requests in drie dagen, elk met een headless test erbij.

Wat we leerden

Doen

Begin bij het minst leuke werk. Bijna de helft van de ambtenaren noemt notuleren de rotklus; daar begint adoptie, niet bij brainstormen.

Doen

Laat lokaal zien, zeg het niet. Een teller op 0 en een groen stempel overtuigen sneller dan een beleidsstuk. Dataveiligheid is de tweede rem bij ambtenaren (40 %).

Doen

Ontwerp voor controleren, niet voor vertrouwen. 85 % kijkt AI-tekst toch na. Dus: origineel naast resultaat, herkomst waar het kan, en de enige kraal die kan verzinnen (het taalmodel) duidelijk gemarkeerd.

Doen

Eindig met een bestand. Een A4, een ZIP, een geredigeerde versie. Een chatvenster is geen resultaat voor een ambtenaar.

Nog niet af

"Soeverein" is half waar. Modellen komen van Hugging Face en de SDK belt naar huis. Lokaal verwerken: ja. Zonder leverancier: pas na zelf hosten en een antwoord over de telemetrie.

Nog niet af

Kwaliteit is één meting. Eén opname, één brief. Voor de Woo-claim is een echte testset nodig: twintig stukken, tien opnames, door mensen nagekeken.

Zelf proberen

De demo-site is tijdelijk en blijft tot 1 december 2026 bereikbaar; daarna draait de werkbank vanuit het repo. Werkt het best in Chrome (Android, desktop) en Safari 26+; het taalmodel heeft WebGPU nodig.

Met dank aan en bronnen

Desert Ant Labs voor de SDK en het gesprek · Michiel Buisman voor de ideeën achter de vragenlijst willen/mogen/kunnen, de checklist en zoeken met bronvermelding · UWV InnovatieHub voor Leesplank (Nederlands naar B1 op EuroLLM) · de makers van Tesseract.js, Transformers.js, WebLLM en Piper.
Cijfers: vergadertijd ambtenaren · Minute (UK) · Sira Consulting over de Woo · Consult (UK) · BIT/GovAI-enquête · Vlam · Copilot op oranje · AP over datalekken.