Geen verhaal over AI. De werkelijke keten, regel voor regel.
Wat er 's nachts draait, waar de bedragen vandaan komen, welke regels bepalen of er een vraag ontstaat, wat de poorten tegenhouden en waarom we bij elke splitsing die kant op zijn gegaan. Alle getallen op deze pagina zijn op 17-09-2026 van de draaiende machines gehaald.
eigen huis, geen cloud
de volledige administratie, elke nacht opnieuw
live gemeten, geen mockups
Vier rollen in eigen huis. Geen cloud, geen externe inference.
Plant, bewaart en orkestreert. Draait bewust geen taalmodel.
Draagt de kennislaag en de grootste taalmodellen.
Leest de documentstroom parallel en doet de tekstherkenning.
Bewaart het archief en de reservekopieën. Altijd bron, nooit doel.
Elke rol op een eigen machine. Een machine mag uitvallen zonder dat de anderen stoppen, en wat bewaart rekent niet, wat rekent bewaart niet.
Eén machine laat geen ping door. Wij gebruikten ping als aanwezigheidstoets en kregen een valse uitval. De toets hoort op de dienstpoort, niet op het protocol. Dat staat nu als les in het register.
Gemeten op de eigen machines, 17-09-2026.
Elke fase bewijst zichzelf voordat de volgende begint.
Eén orchestrator. Elke fase logt vier getallen, bron, verwerkt, fouten, status, en schrijft zijn eigen deellog. Een niet-kritieke fase mag falen, meldt dat, en de keten draait door op de vorige waarde. Alleen de fasen waar elk bedrag van afhangt houden de keten tegen.
Valt de documentscan uit, dan blijft de index van gisteren staan en draait de keten door. Valt de restore of de ETL uit, dan stopt alles. Dat onderscheid staat per fase in code, het wordt niet in de nacht bedacht.
Duur gemeten over 31 runs voor tegen 14 runs na de ingreep van 03-09.
Elk bedrag is één SQL-som. Geen model raakt een getal aan.
Eén meetkern die per klant de omzet, de kosten en het resultaat per contractgroep, per object en per periode optelt. De uitkomst is het gat tegen de norm. Een model formuleert daarna de zin, maar het bedrag is al berekend en wordt hertoetst.
Het gat is norm maal omzet min resultaat. De sleutel is nooit de debiteurcode alleen maar debiteurcode plus administratie. Elke koppeling loopt altijd over jaar én administratie. Dat zijn drie werkregels, geen software.
Eén klant kan in meerdere administraties tegelijk staan. Ontdubbelen op debiteurcode alleen gooit hele vennootschappen weg. Zonder de administratie in de sleutel levert de contractdimensie 13.233 rijen op 10.334 contracten. Die fout hebben we één keer gemaakt en daarna als harde regel vastgelegd.
Elke contractgroep heeft een eigen norm. Glas en vloer draaien anders dan schoonmaak, regie hoort kostendekkend te zijn, en ziekte telt mee in de loonnorm. Een generieke marge-norm over alles heen gaf in een eigen audit 26 van de 38 foute signalen. Die verfijning is branchekennis, geen parameter. De normen zelf zijn van het bedrijf en staan niet op deze pagina.
Wij vroegen om een afsluitdatum. Die bestaat niet.
We vroegen de administratie om een vaste afsluitdatum per periode. Het antwoord was een tegenvraag, wat bedoel je met afsluiten, periodes worden bij ons nooit afgesloten. Dat bleek gemeten waar, en het dwong het belangrijkste onderdeel van het systeem af.
| periode | eindigde | gefactureerd ná het periode-einde | laatste boeking |
|---|---|---|---|
| P1 | 28-01-2026 | 51,6 % | 14-08-2026 |
| P2 | 25-02-2026 | 44,3 % | 14-08-2026 |
| P3 | 25-03-2026 | 42,6 % | 21-08-2026 |
| P8 | 12-08-2026 | 5,5 % | 27-08-2026 |
De eerste periode van het jaar eindigde op 28 januari en groeide daarna nog zeven maanden door. Meer dan de helft van de omzet in die periode is pas ná het periode-einde geboekt. Afgesloten is geen toestand die intreedt, het is een asymptoot. Een systeem dat op een afsluitmail wacht, wacht dus voor altijd, en een systeem dat de kalender gelooft, stelt vragen over cijfers die nog niet af zijn.
Een periode mag pas meetellen vanaf de gereeddag van de administratie, gemeten steeds 32 dagen na het periode-eind. Dit is een bedrijfsparameter, elk bedrijf sluit anders en dit is één van de vier dingen die je per koppeling opnieuw vaststelt.
Staat er voor die klant en die periode nog een concept of een wachtende factuur open, dan is hij niet klaar, ongeacht de kalender.
Boekte deze klant in eerdere perioden materieel na zijn gereeddag, dan krijgt hij vier weken extra. Voor P5 waren dat 80 bekende laatboekers uit P1 tot P4.
Kosten-rijp en facturatie-rijp lopen niet gelijk. Op 17-09 stond de portefeuille kosten-rijp tot en met P8 en facturatie-rijp tot en met P6. Het venster is bovendien per klant, niet portefeuillebreed.
Backtest over P3 tot P5, materieel vanaf 5.000 euro. Regel vastgelegd op 10-09-2026, gemeten voordat hij geplaatst werd.
Vijfentwintig kaartsoorten, in een vaste volgorde afgelopen.
Een klant kan tegelijk een facturatieprobleem, een verzuimprobleem en een tariefprobleem hebben. De ladder loopt van hard en verklaarbaar naar zacht en interpreteerbaar. De eerste soort die sluit wint, de rest blijft als feit op de kaart staan, maar wordt niet de vraag.
- 01beëindigingklant of object gestopt, kosten lopen door. Hardst, want de einddatum staat in een document
- 02crediteringcreditnota's netto over de hele reeks, niet per stuk
- 03facturatieconceptfacturen en gereedgemelde bonnen die nog niet de deur uit zijn
- 04doorbelastingingekocht werk zonder dekkende omzet op hetzelfde contract
- 05toewijzingomzet of kosten op het verkeerde contract of object geboekt
- 06scopehet werk is verkleind of verplaatst, contract loopt door
- 07ziekteverzuim boven de norm, vervangen of niet, doorbelast of niet
- 08tariefzachtst, want dit is pas de vraag als alle andere verklaringen weg zijn
- 09kleinonder de grote drempel maar boven 500 euro, één punt om op te sturen
- –stilgecontroleerd en gezond. 503 van de 639 bewaakte klantdossiers op 17-09. Stil is een uitkomst, geen leegte
Bij elke kaartsoort staan vooraf drie mogelijke verklaringen met de bijbehorende actie. Niet omdat het systeem weet welke klopt, maar omdat de ontvanger dan in één blik ziet wat voor soort antwoord er van hem gevraagd wordt. Bij tarief bijvoorbeeld, het tarief dekt de inzet niet, of de inzet is hoger dan afgesproken, of het contract is niet meer dekkend te maken.
Geen signaal zonder contractbasis. Zonder contract weet het systeem niet wat er is afgesproken, en dan komt er geen vraag uit, hoe scheef het cijfer ook staat. Dat is de oudste regel in het systeem en hij heeft ons vaker behoed dan welke drempel dan ook.
Vier poorten. Alle vier fail-closed.
Een systeem dat elke nacht ongecontroleerd vragen naar managers stuurt, is één slechte run verwijderd van geen enkele geloofwaardigheid meer. Daarom staan er vier poorten tussen de meting en de mens, en elke poort houdt bij twijfel tegen in plaats van door te laten.
Hertoetst de kaart tegen zijn eigen tekst. Staat het bedrag van de kop ook in de feiten? Is er precies één vraag? Noemt de tekst een periode buiten het venster? Is een verplicht veld leeg? Is de vraag zelf meetbaar, dus iets wat het systeem had moeten uitrekenen in plaats van vragen? Eén treffer en de kaart gaat in quarantaine.
Elk getal in de geschreven tekst moet herleidbaar zijn tot de meting eronder. Een getal dat het model zelf verzint haalt de nacht niet. Op 17-09 stond die teller op nul over 639 kaarten.
Een kaart is een vraag met een hulpaanbod, nooit een bevel. Imperatieven worden geblokkeerd. Ook staat hier de bestemmingsplicht, geen signaal zonder ontvanger. Een kaart zonder eigenaar belandt op een lijst zonder eigenaar en wordt gemeld, hij gaat niet blind de organisatie in.
Mag een bedrag verfijnen, mag nooit een kaart wegnemen. Elke fout in de hermeting laat de oorspronkelijke uitkomst staan en zet een meetfout. Fail-closed in beide richtingen.
Eén klant, zes stappen, van ruwe boeking naar één vraag.
Echte klant uit de nacht van 17-09, naam en bedragen weggelaten.
Per contractgroep, per object en per periode. Sleutel is debiteurcode plus administratie, venster P1 tot en met P8.
klant als geheel 23,8 procent, gezond
| contractgroep | marge | norm | oordeel |
|---|---|---|---|
| Schoonmaak | 14,4 % | onder de norm | gat |
| Glas per maand | 49,2 % | boven de norm | stil |
| Glas per beurt | 31,8 % | op de norm | stil |
| Diversen | 100 % | boven de norm | stil |
Glas per maand en Diversen draaien boven hun norm, Glas per beurt staat erop. Geen vraag. Blijft over, schoonmaak onder de norm. De klant als geheel draait 23,8 procent en heet in elk totaaloverzicht gezond. Precies dat verbergt een totaal.
Niet gestopt, geen creditnota's, geen open concepten of bonnen, geen derden zonder dekking, omzet op het juiste contract, omzet stabiel, verzuim onder de norm. Zeven verklaringen uitgesloten, dan pas tarief.
- bedrag van de kop staat ook in de feiten
- precies één vraag op de kaart
- geen periode genoemd buiten venster P8
- soort, feit, vraag en bedrag gevuld
- vraag is niet iets wat het systeem zelf kan meten
- ontvanger bekend, districtsmanager en projectmanager gevonden
Zelfde nacht, andere kaarten. Een periode genoemd buiten het venster. Een vraag die het systeem zelf had moeten uitrekenen. Een tariefvraag bij een gestopte klant. Een kaart zonder ontvanger. Die gaan in quarantaine met de reden erbij en komen op een lijst, niet bij een mens.
03:15 gestart, 04:44 klaar
Schoonmaak draait 14,4 procent over P1 tot en met P8, onder de norm voor deze contractgroep, terwijl de klant als geheel gezond is.
Dekt het tarief van Schoonmaak de inzet nog, of moet het worden herzien?
- a. tarief dekt de inzet niet, tariefherziening voorstellen
- b. inzet is hoger dan afgesproken, terug naar het contract
- c. niet meer dekkend te maken, afbouwen of beëindigen
eigenaar projectmanager · 14 werkdagen · escalatie districtsmanager boven de drempel · bronkaart per periode
Deze klant is één van de 136 met een vraag, naast 503 die vannacht gecontroleerd en gezond zijn en waar de organisatie niets over hoort.
Wat hij leest, waar hij over nadenkt, en wat eruit komt.
Gemeten op de eigen administratie, nacht 17-09. Namen en bedragen weggelaten, de redenering is echt.
- 01Op Vloeren per beurt staan kosten zonder dekking over P1 tot en met P8.
- 02Maar er staan 9 conceptfacturen open, de oudste van eind april.
- 03Gaan die concepten uit, dan verdwijnt het tekort. Dus geen doorbelastingsvraag maar een facturatievraag.
Waarom staan de concepten nog niet definitief, en kunnen ze nu de deur uit voor het werk op Vloeren per beurt?
eigenaar projectmanager · escalatie districtsmanager · bronkaart per periode
- 01Eén regiecontract draagt in P2 tot en met P8 kosten en nul omzet.
- 02De klant zelf draait 19,2 procent en ging 11,6 punten omhoog. Die is het probleem niet.
- 033 creditnota's zijn binnen 45 dagen opnieuw gefactureerd, netto geen creditering. Blijft over, het contract.
Is dat werk afgesproken niet doorbelastbaar, of moet het alsnog?
eigenaar projectmanager · escalatie districtsmanager · bronkaart per periode
- 01Alle objecten met omzet dragen vervaldatum 30-04-2026 of staan in het bronsysteem op gestopt.
- 02Na die datum staan er nog kosten en een restje omzet in P6 tot en met P8.
- 03Venster daarom P1 tot en met P4. Een gestopte klant krijgt geen vraag over perioden die niet meer bestaan.
De klant is per 30-04 gestopt, maar na die datum staan er nog kosten en omzet. Klopt dat?
eigenaar projectmanager · escalatie districtsmanager · bronkaart per periode
Drie verschillende soorten, dezelfde route. Lezen uit de bron, redeneren tot er één verklaring overblijft, en één vraag met bedrag, eigenaar en termijn.
131 meetvlaggen, elk één beslissing die iemand ooit nam.
De kiezer draagt 131 benoemde vlaggen die je los aan en uit kan zetten. Elke vlag heeft een nummer, een aanleiding, een datum en een GO. Zo kan je een gedragsverandering terugdraaien zonder de rest aan te raken, en zo kan je achteraf zien waarom het systeem doet wat het doet.
Een prompt is niet testbaar, niet versienaar en niet te herleiden. Bij de beëindigingsgarantie hebben we bewezen dat een instructie in een prompt alleen niet genoeg is voor een kritiek feit, het model week ervan af zodra de context veranderde. Harde regels staan sindsdien in code, en de code wint altijd van de prompt.
In de kiezer staan 57 notities die letterlijk beginnen met EIGEN FOUT, met het tijdstip en wat er misging. Dat is geen nette codestijl maar het is wel de reden dat dezelfde fout geen tweede keer gemaakt wordt. Daarnaast een register met 61 genummerde meetlessen.
| voorbeeld van een regel | wat hij afdwingt |
|---|---|
| 13 perioden | nooit delen door 12, P13 kan vijf weken zijn |
| vaste omzet | meten op vaste omzet, niet op totaal of extra |
| verdeelboeking apart | een verdeling over locaties maakt de marge mooier dan hij is |
| groep op nummer | groepsnamen wijzigen per jaar, matchen op het nummer voor het streepje |
| factuurstatus concept | concept is geen omzet, ook al zegt het bronsysteem gefactureerd |
| creditnota's netto | over de hele reeks, niet per nota |
| relatietype debiteur | zonder dat filter komt een werknemersnaam als klantnaam boven, AVG-risico |
Code haalt de feiten. Het model doet het woord.
Een taalmodel maakt fouten, code niet. Een som klopt of hij klopt niet, daar zit geen oordeel in. Dus raakt het model geen enkel feit aan. Het krijgt de meting kant en klaar en doet waar het wél beter in is dan wij, uitleggen wat er aan de hand is in gewone taal, en dat zo opschrijven dat de juiste mens het in één keer snapt en er iets mee kan.
Bedragen, datums, sleutels, saldi, perioden, normen, drempels. Deterministisch. Zelfde invoer geeft altijd hetzelfde getal, vandaag en over een jaar.
Welk signaal het wordt, welke kaartsoort, wie de ontvanger is, wanneer er geëscaleerd wordt. Expliciet, testbaar, versienaar.
De openingszin, de uitleg, de vraag en het hulpaanbod. En de toon, want een districtsmanager wil iets anders lezen dan een projectmanager. Vaste instellingen, altijd hetzelfde antwoord op dezelfde meting.
Dan is het een zin die niet lekker loopt. Geen bedrag dat niet klopt. Dat is een heel ander soort fout, en het is de enige soort die wij nog overhouden.
Op dezelfde 59 verse kaarten haalde de beste taalmodelvariant 47 goed en 3 fout. De deterministische route haalde 52 goed en 0 fout. Het model won niet. Daarom rekent code en schrijft het model, tot een meting het tegendeel bewijst.
Komt er een beter model, dan wordt de zin beter en verandert er niets aan de meting, de regels of de poorten. Dat is precies waarom we dit aan meer bedrijven durven te leveren.
Van boekhouding tot tender, één beeld per klant.
De cijfers zeggen wat er gebeurt, de documenten wat er is afgesproken. In elk bedrijf staan die in aparte werelden, en daar gaat de dag aan op. Wij lezen ze allebei elke nacht en hangen ze aan dezelfde klantsleutel.
| wat er op de schijf staat | aantal | waar het in de kaart landt |
|---|---|---|
| Contracten, addenda, opzeggingen | per klant | beëindiging, scope, tarief |
| Indexeringsbrieven | 1.434 | tarief en indexatie |
| Verzamelfacturatie, mandagenregisters | 1.217 | regie, facturatie, piek |
| Bonnenoverzichten en correcties | 690 | facturatie |
| Creditfacturatie, onderliggende stukken | 272 | creditering, koppelbaar op notanummer |
| Archief inkoopfacturen | 98.251 | derden en doorbelasting |
| Urenlijsten uitzendbureaus | 8.156 | inleen en ziekte |
| Managementrapportages per kwartaal | 2.082 | doorbelasting en scope |
| Tenderdesk, aanbestedingen en referenties | 85.039 | contractstructuur en nieuwe business |
| Salarisadministratie en personeelsdossiers | — | blijft er bewust buiten, persoonsgegevens |
De kaart die zegt dat een tarief de inzet niet dekt, wijst meteen naar het mutatieformulier waarin die inzet is gewijzigd. Niet als verwijzing maar als document, met datum en pad. Niemand hoeft meer te zoeken in welk systeem het ook alweer stond.
Van de 137 vraagkaarten van 15-09 vonden er 97 een kandidaat-vastlegging in de eigen klantmap. Mutatieformulieren, bestekken, indexatiebrieven, opzeggingen, met datum en ingangsdatum uit de bestandsnaam.
34 van die 137 vallen uit op concernstructuur. Eén klantmap dekt meerdere debiteuren. Het bronsysteem kent die hiërarchie wel. Dat is één koppeling die dit in één keer dicht.
Het klantveld in de kennislaag bevat bij 68 procent geen echte code maar een afgekapte klantnaam. Gemeten op de hele kennislaag. Precies waarom de sleutel uit het bronsysteem moet komen.
Volledige inventaris gemeten op 15 en 16-09-2026, alleen-lezen.
Elke architectuurkeuze hier is betaald met een meetfout.
Dit is het deel dat je in geen enkele demo ziet. Zes keuzes, met de fout die ze afdwong.
Niet uit principe maar uit noodzaak. Persoonsgegevens in contracten en verzuimdossiers. Bijzondere gegevens worden weggelaten en niet gemaskeerd, want maskeren laat de inhoud staan en iemand blijft herkenbaar via functie, locatie en datum.
Een export uit gisteren die halverwege afbreekt ziet er precies zo uit als een volledige export. Een volledige restore van 11,6 GB is trager en is de enige vorm waarin je zeker weet wat je hebt.
Een keten die doorgaat na een fout levert een halve waarheid die er 's ochtends uitziet als een hele. Een foutafhandeling die logt en doorgaat verbergt fouten, één meetlaag viel zo 76 nachten uit terwijl alles groen bleef.
Bron, verwerkt, fouten, status. Klaar zonder die vier bestaat niet. Nul rijen is nooit een conclusie maar altijd aanleiding voor een tweede meting, want een verkeerd bestandspatroon geeft net zo makkelijk een vals nul-resultaat.
De documentscan over 1.098.279 bestanden loopt niet meer in de keten. De opslag draait hem op eigen tijd, de nachtketen haalt het klare resultaat op en start meteen de scan voor de volgende nacht zonder erop te wachten. Die fase duurt nu minuten in plaats van uren. De oorzaak was gemeten voordat we iets bouwden, geen netwerk maar een koude metadata-cache, dus de timeout verhogen zou een gok zijn geweest.
Agents mogen niet zelf naar mensen sturen. Alles gaat door één deur met verificatieblok. Anders weet je na een half jaar niet meer wie wat naar wie gestuurd heeft, en dat is precies het moment waarop een organisatie het vertrouwen kwijtraakt.
Bronnen, 61 genummerde meetlessen in het eigen register plus 57 EIGEN FOUT-notities in de kiezer.
De motor is generiek. Alleen de sleutels en de normen zijn van het bedrijf.
Debiteuren, projecten, contracten, contractgroepen, uren, bonnen, facturen. Wie een administratie met die structuur draait, heeft de vertaalslag grotendeels al klaar. Wat bij ons ruim een jaar kostte, is bij een tweede bedrijf het opnieuw vaststellen van vier dingen. In september is dat gemeten, acht werkdagen.
| wat je opnieuw vaststelt | waarom het per bedrijf verschilt |
|---|---|
| welke administraties meetellen | testadministraties eruit, meerdere vennootschappen naast elkaar |
| normen per contractgroep | elk bedrijf rekent anders op glas, vloer en regie |
| drempels en escalatie | wie krijgt welke vraag, vanaf welk bedrag naar boven |
| rijpheidsgrenzen | wanneer meldt deze administratie een periode gereed |
Wat wel blijft staan is alles waar het jaar in ging, de meetkern, de 131 vlaggen, de kaartsoorten, de poorten, de nachtketen en de branchekennis. Dat is precies de laag die je niet koopt en die een softwarehuis niet zomaar bouwt.
Eén klant staat in meerdere administraties. Ontdubbelen op debiteurcode gooit vennootschappen weg. De sleutel is code plus administratie.
Twee debiteurnummers naast elkaar, kort voor de rapportage en lang voor contractbeheer, zonder koppeltabel. Koppelen op naam haalt 97 van 271 exact. Dat moet je weten voor je begint.
Eén export levert in het ene bestandsformaat 108 debiteuren minder dan in het andere. Dezelfde bron, twee formaten, twee waarheden.
Dertien perioden, niet twaalf. Elke generieke rapportagetool die door 12 deelt, geeft stelselmatig een verkeerd antwoord.
De mens beslist. Het systeem informeert.
Wat u net las draait elke nacht op echte data. Wat live staat is gemeten, wat nog niet af is noemen we roadmap en presenteren we niet als product. De open punten staan in hetzelfde register als de werkende onderdelen, en die laten we graag zien.
Toegang tot een bronsysteem, één domeinexpert die de eerste vragen beoordeelt, en één eerste prioriteit die geld of tijd oplevert.
De meetkern, 131 vlaggen, 25 kaartsoorten, vier poorten, de nachtketen en vijfentwintig jaar branchekennis als toetsbare regels.
De ontvangkant is de zwakste schakel en dat weten we gemeten. Een vraag die niemand oppakt levert niets op, hoe goed de meting ook is.
Alle cijfers op deze pagina zijn gemeten op 17-09-2026 op de draaiende machines.