Refli introduceren
2024-01-19Na bijna een jaar ontwikkeling is het tijd om Refli voor te stellen. Deze blogpost is onze eerste stap om het concept en de visie achter ons project te delen, dat gericht is op het vereenvoudigen van Belgische loonberekeningen.
Refli richt zich in de eerste plaats op het duidelijker en toegankelijker maken van Belgische loonberekeningen. Ons werk is ontworpen om een breed publiek te bedienen, waaronder studenten, payroll professionals en ontwikkelaars, door essentiële tools en informatie aan te bieden in één enkel, uniform en uitgebreid platform.
Om Refli een solide basis te geven, bouwen we het op rond een kern van drie lagen. Het begint met de Belgische wetteksten en gaat verder met gedetailleerde, nauwkeurige berekeningen. Deze gelaagde aanpak wordt gevisualiseerd in het onderstaande diagram, dat laat zien hoe elke laag voortbouwt op de vorige:
Wetgevende teksten
Beginnend onderaan het bovenstaande schema, is de eerste laag een reeks wetteksten (bv. wetten of ordonnanties). De officiële versie van deze teksten wordt als PDF (de "papieren" versie, soms ook "afbeeldingen" genoemd) gepubliceerd op de website van het Belgisch Staatsblad (beheerd door de FOD Justitie).
Naast deze PDF's biedt de FOD Justitie nog drie andere weergaven: een HTML-versie van deze PDF's, maar ook PDF's en hun HTML-tegenhangers van "geconsolideerde" teksten. De geconsolideerde teksten worden aangeboden in een apart deel van hun website dat Justel heet. (HTML is de primaire computercode die wordt gebruikt om webpagina's te maken. Het wordt geïnterpreteerd door webbrowsers zoals Firefox, Chrome en Safari om inhoud op het web weer te geven).
Om deze eerste laag te maken, verwerken we de geconsolideerde HTML-versie van de wetgevende teksten. Dit is tot nu toe het belangrijkste aandachtspunt geweest en heeft de meeste ontwikkelingstijd gekregen in vergelijking met de andere lagen. In Refli noemen we deze eerste laag Lex Iterata.
Iterata is een Latijns woord dat "herhaald" betekent. Het lijkt ook op het woord "iterated". We willen duidelijk maken dat we wetgevende teksten "opnieuw" presenteren, op een nieuwe manier, en dat we van plan zijn om de rest van Refli er geleidelijk bovenop te bouwen.
Het verwerken van de geconsolideerde teksten omvat het terugvinden van de structuur op hoog niveau (koppen, artikelen, alinea's, ...) van de teksten zelf en enkele metadata (bijvoorbeeld een link naar de originele PDF of het paginanummer daarin). We herstellen ook wat structuur op een lager niveau, zoals artikelnummers (of ze Romeinse of Arabische cijfers gebruiken, telwoordelijke bijwoorden (bijv. bis, ter, quater, ...), cijferscheidingstekens (soms punten, soms voorwaartse schuine strepen, ...)). Deze gestructureerde inhoud wordt vervolgens opgeslagen in een relationele database voor verdere verwerking en bevraging.
Met andere woorden, Lex Iterata biedt de geconsolideerde teksten van het Belgisch Staatsblad aan in een nieuwe HTML-vorm, maar we willen nog een stapje verder gaan door gebruik te maken van onze gestructureerde weergave.
Om een beter beeld te krijgen van de verschillende vormen die wetteksten kunnen aannemen, vindt u hier enkele links naar een voorbeeldtekst van de FOD Justitie:
- De officiële "afbeelding" in PDF-formaat
- De HTML-versie
- De geconsolideerde PDF-versie
- De geconsolideerde HTML-versie
En hier is een link naar dezelfde tekst zoals aangeboden door Lex Iterata:
Voor lezers met een technische achtergrond of lezers die gewoon nieuwsgierig zijn, gaan we dieper in op enkele aanvullende weergaven die we bieden. Voel je vrij om dit gedeelte over te slaan als je dat liever doet.
Naast onze eigen HTML-weergave biedt Lex Iterata nog andere formaten voor dezelfde tekst:
- Een gestructureerde weergave als JSON
- Een Markdown representatie
- De Markdown representatie zoals weergegeven door GitHub
De JSON-weergave is een technische weergave voor softwareontwikkelaars (en meer specifiek voor de software die ze zouden kunnen maken) die voor machines gemakkelijker te verwerken is dan een HTML-pagina.
De Markdown representatie is een eenvoudig tekstformaat dat populair is bij softwareontwikkelaars. Het is ontworpen om eenvoudig te schrijven (voor mensen) en eenvoudig te verwerken (voor machines). De laatste link hierboven laat bijvoorbeeld zien hoe GitHub (een populaire service voor het hosten van broncode en andere tekstformaten) het kan weergeven.
Merk op dat het blok ingesloten tussen de regels ---
bovenaan het Markdown bestand een toevoeging is aan het Markdown formaat; het is nog een ander tekstformaat vergelijkbaar met JSON, genaamd YAML. In de GitHub rendering hierboven, komt dit overeen met de tabel die boven de tekst zelf wordt weergegeven.
Omdat we het veel over verschillende indelingen hebben, wil je misschien even naar HTML kijken. Je kunt dit rechtstreeks in je webbrowser doen door met de rechtermuisknop op een pagina te klikken en "Paginabron weergeven" te selecteren. Een sneltoets voor dezelfde handeling is meestal Ctrl-u
. Je kunt dit bijvoorbeeld doen op elk van de bovenstaande links die naar een HTML-weergave verwijzen.
Een leuk neveneffect van het aanbieden van een Markdown representatie van de wetgevende teksten is dat het makkelijker maakt om te zien hoe ze evolueren. Op deze GitHub pagina kun je zien hoe twee versies van dezelfde teksten zijn veranderd. Dit soort visualisatie van wijzigingen is ook erg populair bij softwareontwikkelaars.
Voor het gemak bewaren we ook de originele HTML pagina's van de FPS Justice op GitHub, en kunnen we de corresponderende pagina zien voor dezelfde conceptuele veranderingen. Omdat Markdown lichter is dan HTML, zien we dat de wijzigingen in het eerste geval makkelijker te begrijpen zijn.
Dit werk is nog maar het begin en er zijn veel manieren om verder te bouwen op wat we nu hebben:
- Op dit moment hebben we meer dan 202.000 documenten verwerkt. In de toekomst willen we ons werk uitbreiden met andere bronnen van officiële documenten (bv. bedrijfsgegevens van de nationale bank, rechtspraak, ...).
- We moeten bijkomende informatie blootleggen die de FOD Justitie levert, zoals links naar errata of gearchiveerde (vorige) versies van een tekst.
- We kunnen de verwerking verbeteren om nog meer fijnkorrelige structuur terug te vinden. We kunnen bijvoorbeeld data identificeren of verwijzingen die in de teksten voorkomen omzetten in links naar de teksten waarnaar verwezen wordt.
- We kunnen een directere toegang bieden tot de onderliggende gestructureerde gegevens die we herstellen. De JSON representatie hierboven is een voorbeeld, maar we kunnen ook bijvoorbeeld een kopie van onze relationele database aanbieden.
- We moeten een zoekinterface bouwen. We kunnen deze uitbreiden met nieuwere manieren om onze gegevens te bevragen (bijvoorbeeld met behulp van een vectordatabase of een LLM).
Gegevens
De tweede laag in ons schema gaat over gegevens, d.w.z. waarden die betekenisvol zijn en later kunnen veranderen. Waarden kunnen "eenvoudig" zijn, zoals getallen of woorden, of ze kunnen rijker zijn, zoals lijsten of tabellen.
De wetgevende tekst hierboven is een perfect voorbeeld van zulke gegevens, omdat het de (nieuwe) waarden van twee breuken definieert die worden beschreven en gebruikt in een andere wetgevende tekst voor het jaar 2024.
Terwijl de eerste laag een eigen leven gaat leiden als Lex Iterata, is deze tweede laag op zichzelf vrij conceptueel. Binnen Refli zien we deze laag vorm krijgen in enkele van de tabellen die voorkomen in onze documentatie van de bruto-netto berekening, bijvoorbeeld over socialezekerheidsbijdragen.
In tegenstelling tot Lex Iterata, die heel duidelijk de eerste laag van ons schema belichaamt, heeft deze tweede laag nog geen duidelijke afbakening binnen Refli, maar dit is iets dat we willen benadrukken.
Berekeningen
De derde laag is de rekenkundige kern van Refli. Dit is waar Refli ophoudt over informatie en gegevens te gaan en begint een online computersoftware te worden. Het doel is om de toepassing van wettelijke regels te vereenvoudigen, wanneer die regels gevolgd kunnen worden door een computer, en om die vereenvoudiging beschikbaar te maken voor een breed publiek.
Op dit moment biedt Refli één enkele berekening: gegeven een brutoloon, wat moet het bijbehorende nettobedrag zijn. Hier is een voorbeeld voor een brutobedrag van 3600 EUR.
Een begin
De drie hierboven beschreven lagen vormen het conceptuele fundament van Refli. Elk van hen kan aanzienlijk worden uitgebreid met zijn eigen set rijkere functies, maar belangrijker is dat Refli zelf zou moeten groeien.
Bovenop deze lagen moeten we extra functies bouwen (zoals gebruikersaccounts voor individuen of bedrijven, zoekinterface, resultaten opslaan of aanbieden als PDF, meerdere berekeningen beheren in de tijd, ...).
Afhankelijk van interesses en feedback willen we ons in de toekomst misschien op andere dingen richten. Dit kan bijvoorbeeld Lex Iterata zijn (d.w.z. wetteksten), of een ander kernaspect van Refli. We kunnen bijvoorbeeld de ruwe rekencapaciteiten van Refli aanbieden via een netwerk-API, of er een op zichzelf staand product voor de gebruiker van maken.
Onze expertise ligt in softwareontwikkeling, maar we hebben geen formele training in HR, salarisadministratie of juridische zaken. Misschien ben je een leerkracht of een student en kunnen we onze bruto-netto berekening verbeteren om ze nuttiger te maken voor jou. Of misschien gebruik je het Belgisch Staatsblad elke dag en heb je heel andere suggesties. Uw ideeën zijn belangrijk voor ons om Refli te verbeteren. Als u geïnteresseerd bent in wat we aan het bouwen zijn, neem dan contact met ons op, we praten graag met u.