Ergens in het dossier van een klant, midden in een gewone notitie over een gewoon telefoontje, staat een zin als deze: “Budget is momenteel krap, afgesproken dat we over twee maanden weer contact opnemen om het opnieuw te bekijken.”
Eén keer geschreven. Nooit meer bekeken. Niet omdat iemand vergat dat het belangrijk was, maar omdat er niets aan was dat op een taak leek. Het was geen agenda-item. Het was geen herinnering. Het was gewoon een zin, die deed wat zinnen in notities doen: daar zitten, technisch waar, functioneel onzichtbaar.
We wilden weten of het systeem zoiets zelf kon opmerken, zonder dat iemand hoefde te onthouden om terug te gaan en de zin met de hand in een taak om te zetten.
Wat we eigenlijk gebouwd hebben, en wat bewust niet
De instinctieve aanpak bij zo’n functie is de AI het hele proces te laten doen — de notitie lezen, de datum bepalen, beslissen dat het te laat is, misschien zelfs het opvolgbericht opstellen. Wij hebben dat juist bewust gesplitst.
Het enige werk van het model is taalbegrip: de recente notities van een klant lezen en een toekomstgerichte toezegging herkennen, zoiets als “we bekijken het over twee maanden opnieuw” of “we nemen contact op na hun bestuursvergadering.” Het schat de impliciete vertraging in gewone taal in. Meer niet. Elke daadwerkelijke datumberekening — de vervaldatum, of vandaag die al voorbij is — gebeurt daarna in gewone, deterministische code. Het model rekent nooit en neemt nooit de uiteindelijke beslissing over wat te laat is. Het leest. De code beslist.
Die scheiding is belangrijker dan ze klinkt. Taalbegrip is precies het soort vage, contextafhankelijke taak waar een model goed in is. Datumberekening is precies het soort taak waarbij u niet wilt dat een model improviseert, ook maar een beetje.
De echte test
We hebben niet alleen gecontroleerd of het endpoint iets redelijk ogends teruggaf. We schreven een echte notitie op een echt klantdossier: “…afgesproken dat we over 2 maanden weer contact opnemen om het budget opnieuw te bekijken.” We riepen het endpoint aan. Het haalde de toezegging correct eruit, berekende een impliciete vertraging van 60 dagen, en kwam uit op een vervaldatum precies 60 dagen na de echte tijdstempel van de notitie, correct gemarkeerd als nog niet te laat.
Klein, en dat is precies het punt. Het systeem hoefde niet te horen dat er een toezegging te vinden was. Het las een zin die iemand voor zichzelf had geschreven, niet voor een formulier, en haalde er een echte deadline uit.
Het deel dat je makkelijk over het hoofd ziet
Notities in Craft11 zijn append-only. Niemand bewerkt ze, niemand verwijdert ze, zelfs Stark niet. Het is hetzelfde principe dat de ruwe kant van elk dossier eerlijk houdt: wat u daadwerkelijk hebt geschreven, blijft precies zoals u het geschreven hebt. Toen we de testnotitie later moesten verwijderen, was er geen verwijderknop om naar te grijpen, want die hoort er niet te zijn. Er was een directe database-ingreep nodig, eerst bevestigd, meteen daarna weer ongedaan gemaakt.
Dat is voor ons een klein ongemak tijdens het testen. Het is precies dezelfde reden waarom de toezeggingsdetectie überhaupt betrouwbaar is: ze leest echte, onveranderde, ongeschoonde menselijke tekst, geen opgeschoonde versie ervan.
Waarom dit sowieso de moeite waard is
Niets hiervan vervangt een takenbeheerder. Het vervangt het specifieke, stille faalpatroon waarbij de enige vastlegging van een belofte een zin is die niemand ooit opnieuw zal lezen. Het systeem hoeft niet dat u anders schrijft, uw notities structureert, of onthoudt om iets te markeren. Het heeft alleen nodig dat u opschrijft wat er daadwerkelijk gebeurd is, zoals u het voor uzelf zou opschrijven, en het merkt het zelf op.