Marcèles AIREVENUE LEAK FINDER← Terug naar de demo

Van bronbestand naar onderbouwd signaal

Zo werkt Revenue Leak Finder

Wat doe je bij elke stap, wat controleert de app en waarom blijft jouw beoordeling nodig? Hier vind je de hele route, van de eerste export tot een bruikbaar concept.

Je leest de uitleg bij de publieke demo. Die gebruikt uitsluitend fictieve, vooraf berekende data. De uitleg beschrijft ook de lokale werkbank, zodat je begrijpt hoe een echte analyse wordt voorbereid.

Begin hier

Revenue Leak Finder vergelijkt wat is verkocht, afgesproken, geleverd en gefactureerd. Een afwijking wordt een kandidaatbevinding: een controleerbaar signaal dat jij onderzoekt voordat het als vordering of opbrengst wordt gebruikt.

De route in vijf stappen

  1. Data: verzamel de juiste exports, koppel de kolommen en controleer de broninventaris.
  2. Matches / Klanten: controleer of records uit verschillende systemen bij dezelfde klant horen.
  3. Contracten: controleer prijs-, korting-, indexatie- en volumeafspraken en bevestig bruikbare voorwaarden.
  4. Leaks / Lekken: kies een peildatum, bekijk de signalen en beoordeel bewijs, berekening en aannames.
  5. Rapport: controleer de actuele selectie en exporteer een concept met aparte bedragen per jaar en eenmalig.

Waarom deze volgorde? Een verkeerde klantkoppeling of onvolledig exportbestand kan een overtuigend maar onjuist signaal opleveren. Daarom komen broncontrole en menselijke beoordeling vóór klantgebruik.

Probeer de fictieve analyse

Het meegeleverde MSP-voorbeeld heeft 8 bronbestanden, 69 bronregels en 16 klantrecords uit de bronnen. De matching brengt die samen tot 8 klanten. De peildatum is 1 juli 2026 (2026-07-01). De engine vindt 6 kandidaten: één voor elk patroon L1–L6.

  1. Open de publieke startpagina en klik op Start de interactieve demo. Gebruik je de lokale app, open dan het engagement waarin de fictieve voorbeeldbestanden zijn geladen.
  2. Bekijk bij Data een bronbestand, de kolomkoppeling, het aantal regels en de hash.
  3. Open bij Klanten een klantgroep en vergelijk de namen en bron-ID’s. GOLF Analytics en HOTEL Media Groep zijn de twee controleklanten zonder gevonden kandidaat.
  4. Bekijk bij Contracten een afspraak, de geldigheidsperiode en het citaat. In de publieke demo zijn dit vooraf opgenomen fictieve voorwaarden; de genoemde PDF is geen beschikbaar document.
  5. Open bij Lekken het bewijs en de aannames van L2. Probeer een kandidaat goed te keuren of af te wijzen en bekijk het gevolg bij Rapport.

De publieke demo gebruikt een vooraf berekende dataset uit de bestaande engine. Je kunt er geen eigen gegevens uploaden of live detectie draaien. Demo-reviewbesluiten leven alleen in het geopende tabblad; vernieuwen, de uitlegpagina openen en teruggaan, of resetten kan ze herstellen naar de startstatus. Er worden geen reviews naar een server geschreven.

Deze controleklanten tonen dat de voorbeelden ook zonder kandidaat kunnen eindigen. Zij bewijzen niet dat een echte klant foutloos is. De lokale app kan met dezelfde meegeleverde CSV’s worden getest; importeer ze in een afzonderlijk testengagement en gebruik expliciet de peildatum 2026-07-01.

Eén onderzoek, één engagement

Een engagement is een afzonderlijke werkmap en database voor één klantonderzoek. Je geeft het een herkenbare naam en een korte code, bijvoorbeeld voorbeeld-msp. Houd verschillende klantonderzoeken apart, zodat hun bronnen, besluiten en bevindingen niet door elkaar lopen.

De lokale app is een werkbank voor één operator op localhost. Je levert zelf exports aan. Het aanmaken van een engagement maakt geen verbinding met CRM, facturatie of operationele systemen en start geen automatische synchronisatie.

Waarom apart? De uitkomst moet later terug te voeren zijn op de bestanden en besluiten van precies dit onderzoek. Een andere klant of een nieuw onderzoek hoort daarom niet ongemerkt dezelfde bronadministratie te gebruiken.

Data aanleveren en kolommen koppelen

Begin met CSV-exports over een afgesproken periode. Exporteer zowel klantlijsten als de bijbehorende regels: een factuur of deal zonder herkenbare klantreferentie kan niet betrouwbaar worden vergeleken. Zorg dat de facturatie-export de te onderzoeken periode volledig dekt, inclusief credits.

BronWat moet herkenbaar zijn?
CRM-klantenUnieke klant-ID (source_record_id), naam en liefst domein. Een domein helpt verschillende schrijfwijzen koppelen.
CRM-deals en dealregelsDeal-ID, klantreferentie, status zoals closed-won, sluitdatum; per regel dealreferentie, product, aantal, stukprijs, korting, facturatiestart en monthly of oneoff.
Facturatieklanten en factuurregelsKlant-ID en naam; per regel factuurnummer, klantreferentie, factuurdatum, product, aantal, stukprijs, korting en begin/einde van de serviceperiode.
Creditnota’sCreditreferentie, klantreferentie, datum, positief creditbedrag, reden en gekoppelde factuur indien aanwezig.
GebruikKlantreferentie, maand (YYYY-MM), meetwaarde zoals licenties, en geleverd aantal. Gebruik dezelfde definitie en eenheid als de volumeafspraak.
ContractvoorwaardenContract- en klantreferentie, type en gestructureerde waarde, geldigheidsdatums, bestandsnaam, paginanummer, letterlijk citaat en reviewstatus.

De mapping is jouw vertaling

Na een upload stelt de app kolomkoppelingen voor. Jij kiest het juiste inhoudstype en bevestigt welke bronkolom bij welk veld hoort. Een herkenningspercentage zegt alleen iets over de kolomnamen. Controleer ook de waarden, sleutels, periode en aantallen. Rijen zonder het eerste sleutelveld worden overgeslagen en als waarschuwing gemeld.

Het systeemlabel bepaalt welke klantcodes bij elkaar horen. Gebruik bijvoorbeeld consequent exact voor gegevens die Exact-relatiecodes bevatten. Contracten of gebruik met diezelfde codes krijgen ook dat label, zelfs als het bestand uit een ander pakket komt. Een CRM-code onder het facturatielabel kan naar de verkeerde of geen klant leiden.

Kies het juiste getalformaat: Europees 1.234,56 of Amerikaans 1,234.56. Automatische herkenning weigert ambigue waarden zoals 1,234. Datums zijn YYYY-MM-DD. Houd prijzen en hoeveelheden inhoudelijk vergelijkbaar; de app voert geen valutaconversie uit.

Een nieuwe export is geen onbeperkte synchronisatie

Ongewijzigde overlappende regels worden herkend om dubbeltelling te voorkomen. Gewijzigde overlappende financiële regels worden standaard geweigerd: eerst uitzoeken welke bron correct is. Voor facturen of deals met meerdere regels zijn stabiele regel-ID’s belangrijk. De geavanceerde importmapping ondersteunt een vaste ID-kolom en gecontroleerde vervanging; de gewone kolommapper heeft hiervoor nog geen apart veld. Laat ambigue of gewijzigde imports dus gericht controleren. Hernoemen om een foutmelding te omzeilen kan dezelfde omzet dubbel introduceren.

Waarom deze controles? Niet gefactureerd in een onvolledige export is iets anders dan werkelijk niet gefactureerd. De broninventaris maakt zichtbaar waarop de analyse rust; volledigheid moet je met de bronhouder bevestigen.

Dezelfde klant in verschillende systemen

Bij Matches brengt de lokale app bronklanten samen in klantgroepen. De demo noemt deze stap Klanten. De volgorde is: exact na naamnormalisatie, daarna een gelijk genormaliseerd domein, daarna een vergelijking van namen.

  • Exact: score 1,00 na normalisatie.
  • Domein: score 0,97 bij een gelijk domein.
  • Naamgelijkenis: vanaf 0,92 automatisch gekoppeld; van 0,75 tot onder 0,92 ter review.
  • Onder 0,75: geen voldoende vergelijkbare bestaande klant gevonden; er wordt een nieuwe klantgroep gemaakt.

Een score is een gelijkenisscore, geen kans dat de koppeling juist is. Ook een automatische match kan controle vragen, bijvoorbeeld bij groepsmaatschappijen of gedeelde domeinen. Bekijk naam, bron-ID en de werkelijke juridische klant.

Een open match kun je bevestigen of afwijzen. Bij afwijzen wordt de bronklant een aparte klantgroep. Financiële claims voor een klantgroep met onopgeloste matches worden tegengehouden. Eerdere matchbesluiten en klant-ID’s blijven bij opnieuw matchen behouden; controleer daarom gericht als een bronrecord inhoudelijk van betekenis is veranderd.

Waarom eerst reviewen? Anders kan de verkoop van klant A worden vergeleken met de factuur van klant B. De app kiest dan voor het tijdelijk achterhouden van een claim.

Contractafspraken vastleggen en bevestigen

De detectie gebruikt gestructureerde afspraken over prijs, korting, indexatie en volume. De extractie kan ook verlengingsvoorwaarden vastleggen, maar er is momenteel geen afzonderlijk L1–L6-patroon dat verlenging controleert.

In de lokale app kun je een leesbare PDF of tekst aanleveren, een contractreferentie, klantreferentie en systeemlabel invullen en bewust op Extraheer terms klikken. Hiervoor is een Anthropic API-key nodig. De contracttekst en ingevulde metadata gaan dan naar Anthropic; dit kan API-kosten veroorzaken. CSV-import, matching en de zes detectieregels vragen geen modelcall.

AI helpt hier uitsluitend afspraken uit tekst structureren. De parser controleert het schema, geldige datums en waarden, en of het letterlijke citaat op de opgegeven pagina voorkomt. Een extractieresultaat krijgt altijd status open, ook als het model een andere status teruggeeft.

Open het oorspronkelijke document en controleer klant, product, eenheid, prijsbasis, geldigheidsperiode, uitzonderingen en eventuele amendementen. Bevestig pas daarna de term. Alleen geldige, bevestigde voorwaarden doen mee in de bijbehorende detectie. Een bevestigde import-CSV kan ook voorwaarden aanleveren; de status daarvan moet dus al door een mens verantwoord zijn.

De aangeleverde bron wordt lokaal met een bestandshash gearchiveerd. Dit bewaart de herkomst van de extractie. Een citaatcontrole bewijst nog niet dat de juridische uitleg of volledigheid van het contract juist is.

Publieke demo: de contractterms en citaten zijn vooraf opgenomen fictieve voorbeelden uit een CSV. Er wordt geen echte PDF geopend, geen contract geüpload en geen provider aangeroepen.

Waarom menselijke bevestiging? Een letterlijk correct citaat kan door een amendement achterhaald zijn of een andere eenheid bedoelen. De detectie mag zo’n interpretatie niet stilzwijgend tot financiële claim maken.

Wat controleren L1 tot en met L6?

De engine gebruikt vaste rekenregels. Hieronder staan de huidige standaardinstellingen. Een bewuste parameterwijziging kan de uitkomst veranderen; de gebruikte parameters worden bij de detectierun opgeslagen.

L1Verkocht, nog niet gefactureerd

Vergelijkt gewonnen CRM-dealregels met vergelijkbare factuurregels voor dezelfde klant en hetzelfde genormaliseerde product. De facturatiestart moet minimaal 45 dagen vóór de peildatum liggen. De prijs mag maximaal 10% afwijken. Ook een gedeeltelijk ontbrekend aantal kan een signaal zijn; dezelfde factuurhoeveelheid wordt niet opnieuw verbruikt voor een andere dealregel.

Ontbrekend aantal × netto prijs; maandregels ×12, eenmalige regels apart. De range gebruikt 60%, 85% en 100% van deze basis. De wachttijd voorkomt dat normale facturatietiming direct een lek lijkt.

L2Een lagere prijs dan afgesproken

Vergelijkt een bevestigde prijsafspraak met de facturen binnen de geldigheidsperiode. Er moeten minimaal 3 servicemaanden met meer dan 2% structureel prijsverschil zijn. Aantallen en geldige contractkorting tellen mee. Een verlopen korting wordt apart door L3 beoordeeld.

Voorbeeld: afgesproken €50, structureel gefactureerd €45, 40 eenheden per maand. De rekenbasis is (€50 − €45) × 40 × 12 = €2.400/jaar. De standaardrange is 70%–105%, met 100% als verwachting: hier €1.700–€2.500/jaar na afronding. Een incidentele prijsfout alleen voldoet niet aan de driemaandseis.

L3Een verlopen korting loopt door

Zoekt facturatie na een verlopen bevestigde korting. Alleen korting boven wat een geldige, vervangende afspraak nog toestaat telt mee, vanaf 3 procentpunt extra korting. Bij een wijziging binnen een maand geldt conservatief de hoogste toegestane korting.

Extra kortingspercentage × aantal × bruto maandprijs; gemiddelde servicemaand ×12. De range is 75%–100%, verwachting 100%. Een geldig nieuw kortingsamendement kan het signaal dus terecht laten verdwijnen.

L4Indexatie lijkt niet toegepast

Gebruikt een actieve bevestigde CPI-clausule en vergelijkt prijzen uit het basisjaar met de laatst voltooide factuurservicemaand. De ingestelde reeks is 2024: 3,8%; 2025: 3,3%; 2026: 2,5%, eventueel begrensd door een contractplafond. Dit zijn vaste instellingen, geen live opgehaalde CPI-cijfers. Een ontbrekend benodigd indexjaar levert geen berekening op.

Het verschil moet meer dan 1% van de berekende prijs zijn. Prijsverschil × laatste maandaantal ×12; range 60%, 85%, 100%. Controleer zelf de juiste CPI-reeks, indexatiegrondslag en aankondigingseisen. Een latere peildatum alleen bewijst geen extra indexatiejaar.

L5Meer geleverd dan gefactureerd

Vergelijkt gebruik met factuuraantallen voor een bevestigde volumeafspraak. Het venster is de laatste 4 voltooide maanden; er zijn minimaal 3 opeenvolgende maanden nodig, met precies één gebruiksmeting per maand en passende factuurdata. Het verschil moet in elke maand boven de tolerantie liggen: contractwaarde of standaard 2 eenheden.

Gemiddeld ontbrekend aantal × netto maandprijs ×12. De ondergrens trekt de tolerantie af; de bovengrens gebruikt het hele verschil en de verwachting ligt ertussen. Hiermee wordt een eenmalige piek of dubbel gebruiksrecord geen structurele claim.

L6Creditnota’s vragen controle

Vlagt credits tot en met de peildatum bij een lege reden, een bedrag vanaf €1.000, een ontbrekende factuurkoppeling of een mogelijk duplicaat: dezelfde klant en vrijwel hetzelfde bedrag binnen 45 dagen.

Het totaal van de gevlagde historische credits krijgt een mogelijke herstelrange van 30%–70%, verwachting 50%. Dat is eenmalig mogelijk herstel, geen jaarimpact. Een afwijkende credit is niet automatisch onterecht; controleer de achterliggende afspraak en boeking.

Peildatum, opnieuw draaien en ontbrekende data

De peildatum is de grens van de analyse. Toekomstige deals, credits en gebruiksmaanden tellen niet mee. Een factuurregel telt alleen mee als ook de volledige serviceperiode uiterlijk op die datum is afgelopen. Een al uitgereikte factuur voor toekomstige dienstverlening is dus nog geen bewijs van een voltooid tijdvak.

Bij de demo is dat 2026-07-01. Een later gekozen datum creëert geen ontbrekende brongegevens en maakt een onvolledige maand niet vanzelf vergelijkbaar. Controleer per patroon of de vereiste periode werkelijk beschikbaar is.

Opnieuw detecteren bewaart een actuele bevinding onder dezelfde identiteit en voorkomt dubbele kandidaten voor hetzelfde economische probleem. Een eerder reviewbesluit blijft staan als bewijs, bedragen, eenheid en beoordeelde kenmerken gelijk blijven. Bij een materiële wijziging wordt opnieuw beoordeling gevraagd. Een oude bevinding die niet opnieuw wordt gevonden is niet meer actueel; de historie blijft opgeslagen.

Dit geldt voor de patronen die je opnieuw draait. Draai voor één samenhangend overzicht alle relevante patronen met dezelfde peildatum. Het rapport toont de werkelijk opgeslagen detectiepeildata. Historische rapportage op een willekeurige oude datum wordt niet ondersteund: de app dateert actuele resultaten niet achteraf om.

Geen resultaten is geen bewijs dat alles klopt. Het kan betekenen dat er geen afwijking is, maar ook dat gegevens, bevestigde contractvoorwaarden, voldoende maanden of opgeloste klantkoppelingen ontbreken. De controles zijn bewust beperkt tot de ondersteunde patronen.

Bedragen, bewijs en zekerheid lezen

Elke kandidaat heeft een ondergrens, verwachting en bovengrens. Dit zijn scenario’s uit de vastgelegde rekenregel en aannames. Het zijn geen statistisch gekalibreerde betrouwbaarheidsintervallen en geen garantie op teruggewonnen omzet. Bedragen worden voor presentatie afgerond.

  • Per jaar / annual: een naar twaalf maanden omgerekende structurele afwijking. Dit is geen bewezen historische vordering over twaalf maanden.
  • Eenmalig / oneoff: een afzonderlijk mogelijk herstelbedrag, zoals gevlagde historische credits of een ontbrekende eenmalige dealregel.

Deze eenheden worden apart gehouden en nooit tot één gecombineerd bedrag opgeteld. Meerdere kandidaten bij dezelfde klant en dezelfde eenheid kunnen bovendien dezelfde euro’s raken. De rapportage waarschuwt dan voor mogelijke overlap en geeft voor die groep geen opgeteld portfoliototaal. Eerst inhoudelijk afstemmen.

Bewijs is een spoor terug naar de bron

Open bij een bevinding bewijs en aannames. Je ziet relevante factuurregels, dealregels, gebruiksmetingen of contractcitaten. De bronketen bevat het systeem, bronrecord, bestandsnaam, SHA-256-bestandshash en bronrij. Zo kun je de berekening naast het daadwerkelijk geïmporteerde bestand leggen. Een hash toont bestandsgelijkheid; hij bewijst niet dat de inhoud juist of volledig is.

Oude brondata zonder verifieerbare herkomst wordt als onbekend aangeduid en vraagt herimport of gerichte controle. Oude bevindingen zonder stabiele identiteit zijn uit actuele overzichten uitgesloten totdat detectie opnieuw is gedraaid.

De labels Bewijs A–D en confidence hoog/middel zijn door ontwikkelaars aan regels toegekende aanduidingen. De huidige L1–L6-regels leveren A/hoog of B/middel. Dit is geen onafhankelijke auditcertificering of berekende kans op juistheid. Lees altijd het concrete bewijs en elke aanname, ook bij A of hoog.

Beoordelen en een concept delen

Een nieuwe bevinding begint als kandidaat. Controleer met de bronhouder: klopt de klant, is de periode compleet, geldt deze afspraak nog, klopt de rekeneenheid en is het bedrag al anders verrekend? Een kandidaat goedkeuren betekent dat hij door jouw eerste review komt; het bewijst nog geen klantacceptatie of gerealiseerde ontvangst.

In de lokale app kun je goedkeuren of kill kiezen met een verplichte reden, bijvoorbeeld een bevestigde afwijkende afspraak. De reden en statuswijzigingen worden gelogd. Na goedkeuring zijn verdere statussen zoals gevalideerd en verworpen beschikbaar. De publieke demo laat een vereenvoudigde goedkeur-/afwijsactie zien.

De lokale briefing bevat actuele, niet-gekillde en niet-verworpen bevindingen. Daar kunnen nog kandidaten bij zitten; de rapportstap waarschuwt hiervoor. Het is dus geen automatische selectie van uitsluitend goedgekeurde posten. Review alles en controleer het concept voordat je het met een klant deelt.

Je kunt een CSV-register en HTML-briefing openen of opslaan. Het lokale CSV-register bevat ook actuele afgewezen posten met hun status, zodat je die besluiten kunt nalopen; de HTML-briefing sluit die uit. Gebruik de afdrukfunctie van de browser om de briefing als PDF te bewaren. De publieke demo biedt daarnaast een selectie en een filter voor alleen in de demo goedgekeurde kandidaten. De exports bevatten daar uitsluitend fictieve gegevens en de reviewstatus van dat tabblad.

Waarom een concept? De app onderbouwt waar je moet kijken. Jij en de klant stellen vast of er een echte afwijking is, wat herstelbaar is en welke actie gepast is. Exporteren boekt, factureert of incasseert niets.

Waar staan de gegevens?

De lokale app bewaart engagementdata onder LEAKFINDER_HOME als die is ingesteld; anders in de map engagements van de werkdirectory waarmee de app is gestart. Per engagement staan daar onder meer engagement.db, uploads, kolommappings en het bronarchief sources. Auditlogs, detectieparameters, inputmomentopnamen en reviewbesluiten zitten in de database.

Gewone imports, matching en detectie verwerken die gegevens lokaal. Alleen wanneer je bewust contractextractie start, wordt de daarvoor aangeleverde contracttekst met metadata naar Anthropic gestuurd. De API-key staat in de omgevingsvariabele of lokale configuratie ~/.leakfinder/config.json; de app toont de sleutel niet terug.

Purge op de startpagina verwijdert definitief de eigen engagementmap. De app vraagt daarvoor bevestiging en meldt een mislukte verwijdering als fout. Dit omvat geen losse geëxporteerde rapporten, oorspronkelijke bestanden buiten die map, back-ups of gegevens die eerder naar een provider zijn verstuurd. Lokale opslag en purge vormen op zichzelf geen AVG-conformiteitsgarantie; maak passende afspraken over toegang en bewaartermijnen.

Een engagement is leeg, beschadigd of niet beschikbaar

De startpagina toont dan een melding bij dat engagement in plaats van het hele overzicht te laten vastlopen. Dat betekent niet automatisch dat het onderzoek waardeloos is. Bewaar de map, controleer het ingestelde pad, bestandsrechten en eventuele back-up en laat de database gericht onderzoeken. Gebruik purge niet als eerste reparatiestap voor waardevolle klantdata.

Veelgestelde vragen

Wat moet ik als eerste aanleveren?

Begin met klantlijsten uit CRM en facturatie, gewonnen deals met dealregels, factuurregels en creditnota’s over een afgesproken volledige periode. Voeg gebruik en bevestigde contractvoorwaarden toe voor de patronen die die bronnen nodig hebben. Gebruik de checklist bij Data en leg ontbrekende bronnen vast.

Hoe begin ik zonder eigen klantdata?

Gebruik de publieke demo via de startpagina of laad de meegeleverde fictieve CSV’s in een apart lokaal testengagement. Houd de demopeildatum op 1 juli 2026. De stappen hierboven laten zien wat je hoort terug te zien: acht klanten, zes kandidaten en twee controleklanten.

Waarom vind ik geen resultaten?

Controleer eerst bronbereik, klantreferenties en systeemlabels, daarna open matches en bevestigde contractvoorwaarden. Kijk vervolgens of de peildatum en het benodigde aantal voltooide maanden passen. Geen kandidaat kan ook de juiste uitkomst zijn. Verlaag drempels niet alleen om een resultaat te krijgen.

Kan ik de bedragen direct als omzet gebruiken?

Nee. Een bedrag is een scenario bij een kandidaat, met een expliciete eenheid en aannames. Controleer de bronregels, afspraken, overlap en mogelijkheid tot herstel met de klant. Een jaarbedrag is geen automatische vordering en een demo-goedkeuring geen boeking.

Beslist AI welke klanten te weinig betalen?

De zes detectiepatronen zijn vaste rekenregels. AI kan in de lokale app op jouw expliciete actie contractvoorwaarden helpen structureren. Jij bevestigt die voorwaarden en beoordeelt daarna de financiële kandidaten. De publieke demo voert geen AI-call uit.

Waarom is zoveel handmatige controle nodig?

Systemen registreren vaak slechts een deel van de afspraak. Een ontbrekende factuur kan een ander productlabel, een later facturatiemoment of een incomplete export betekenen. De controlepunten zorgen dat zulke verklaringen onderzocht worden voordat een signaal bij een klant terechtkomt.

Worden mijn systemen of klanten automatisch benaderd?

Nee. Deze werkbank werkt met aangeleverde bestanden. Detecteren, beoordelen en exporteren wijzigen geen CRM of facturatiesysteem en versturen geen klantbericht. Een vervolgstap voer je bewust in het daarvoor bedoelde systeem uit.

Terug naar de demo →