Over Denk mee met Mechelen
Technische pagina
Hier lees je hoe een officieel document een leesbaar dossier wordt, hoe we het ophalen bij de bron, en waar het experiment tekortschiet.
Wie beslist er in Mechelen?
De politieke macht ligt bij vijf officiële bestuursorganen. De gemeenteraad en het college van burgemeester en schepenen sturen de stad aan. Diezelfde mensen besturen, als raad voor maatschappelijk welzijn en vast bureau, ook het OCMW. En de burgemeester waakt zelf over de openbare orde en kan bij hoogdringendheid tijdelijke politiemaatregelen nemen, die de gemeenteraad nadien moet bekrachtigen. Samen zijn dat de vijf organen die we volgen.
Hoeveel tijd krijgt het stadsbestuur?
Het Decreet Lokaal Bestuur legt de termijnen vast die we opvolgen. De agenda van de gemeenteraad en de raad voor maatschappelijk welzijn moet er minstens 8 dagen vóór de zitting zijn. De besluiten van alle vijf de organen volgen uiterlijk 10 dagen na de zitting of de beslissing.
Van officieel stuk tot leesbaar dossier
Hoe ontstaat een dossier? AI leest de officiële stukken, vat ze samen in mensentaal en haalt er de kernwoorden uit. Voor de meeste punten van de gemeenteraad en de raad voor maatschappelijk welzijn is dat de tekst van het punt zelf. Van de meeste besluiten van het college, het vast bureau en de burgemeester is er enkel de titel uit de besluitenlijst; waar de stad ook het volledige besluit publiceert, leest de AI dat mee. Daarna beoordeelt een taalmodel stukken die op elkaar lijken, twee aan twee: gaat het over dezelfde concrete zaak, of enkel over hetzelfde thema? Stukken over dezelfde zaak komen samen in één dossier, ook als de gemeenteraad en de raad voor maatschappelijk welzijn op dezelfde avond hetzelfde beslissen. Wat het taalmodel uit elkaar houdt, brengen onze eigen regels nooit samen. Een breed thema bindt nooit op zichzelf.
Een schriftelijke vraag leggen we naast de stukken die er het meest op lijken, ook naast eerdere vragen van hetzelfde raadslid. Per paar zegt een taalmodel twee keer of het over dezelfde zaak gaat, en enkel twee keer ja telt. Een vraag komt enkel in een dossier als het taalmodel dat zei van minstens één stuk daarin, en nooit in meer dan één. Een nieuw stuk of een stuk dat op geen ander leek, kreeg geen oordeel. Zo'n stuk bundelen we met eigen regels: een besteknummer of adres, een eigennaam zoals een kerk, een buurt of een project, een zeldzaam kernwoord uit de titel, of de verwijzing van het college naar de raad. Zo'n stuk sluit aan bij hooguit één beoordeeld dossier.
Sommige stukken komen elke week of maand terug, zoals vastleggingen, kohieren of de notulen van een directiecomité. Dat is geen dossier over één zaak maar een terugkerende reeks, en zo'n reeks draagt op de kaart het label "terugkerend". Vindt een stuk geen maatje, dan staat het voorlopig alleen, tot er een volgend stuk over dezelfde zaak bijkomt.
De bundeling blijft een vuistregel, geen absolute waarheid: soms koppelt ze twee losse zaken, soms knipt ze één verhaal in twee. Waar dat scheef loopt, passen we de bundeling aan, op eigen nazicht en op meldingen van lezers. Test dus gerust mee: de meldknop zit in elk dossier, en hoe die werkt lees je verderop op deze pagina.
In zo'n dossier schuift ook een schriftelijke vraag van een raadslid mee, naast de agendapunten en besluiten. Zo zie je de vraag en de latere beslissing over hetzelfde onderwerp in één tijdlijn.
Zoek je op een trefwoord, dan kijken we niet alleen in de titels en de samenvattingen, maar ook in de volledige stukken: de notulen van een agendapunt, de pdf van een schriftelijke vraag. Zit een woord enkel daar, dan tonen we die treffer gewoon tussen de andere, met het label "in het volledige stuk", zodat je weet dat het dieper in de tekst zat en niet in de samenvatting.
Soms verwijzen twee stukken naar dezelfde harde code: een lijn in het meerjarenplan, een zaaknummer, een omgevingsvergunning. Die codes staan in de stukken zelf, dus we gebruiken ze om verwante dossiers te tonen, met de reden erbij. Meestal blijft dat een tip en geen oordeel: we zetten twee dossiers naast elkaar zonder ze samen te voegen. Bij een stuk zonder oordeel van het taalmodel telt een verwijzing die naar precies één zaak wijst wel: een besteknummer, een vergunningsnummer of een adres met huisnummer brengt het in hetzelfde dossier. De jaarrekening en het meerjarenplan volgen het budget zelf: elk deel, dat van de stad en dat van het OCMW, krijgt per jaarrekening of plan een eigen dossier.
Stad en OCMW behandelen soms op dezelfde dag een punt met een gelijkaardige titel, elk in hun eigen orgaan. Gaat het volgens het taalmodel over dezelfde zaak, dan staan beide in één dossier. Anders blijven ze elk in hun eigen dossier, en wijst een knop naar het andere: "Gelijkaardig punt bij het vast bureau". Meer beweren we niet, want soms beslist elk bestuur onder dezelfde titel over iets van zichzelf.
Deze site is gebouwd met hulp van Claude Code, de AI-programmeerassistent van Anthropic. Ze is journalistiek gereedschap, geen afgewerkt artikel: een opstapje om de vinger aan de pols te houden en zelf te beslissen waar je je tanden in zet.
- Ophalen. We halen de officiële stukken rustig op bij de bron, stuk voor stuk en met een pauze tussendoor: van agenda's en notulen tot budgetstukken.
- Uitlezen. We lezen de pdf's uit tot losse agendapunten en besluiten.
- Samenvatten. Een taalmodel zet de ambtelijke taal om naar mensentaal, haalt de kernwoorden eruit en beoordeelt welke stukken over dezelfde zaak gaan.
- Opschonen. Vóór het bouwen maskeren we namen van gewone burgers en andere gevoelige gegevens, tot in de zoekindex.
- Bouwen. Alle data gaat mee in kant-en-klare bestanden, zonder server of databank. De zoekindex en de lettertypes staan er als losse bestanden naast.
- GitHub Pages. Bij elke wijziging zet een actie de nieuwe versie online op denkmee.asgaupaust.be. Geen server nodig, geen databank.
- Bundelen en zoeken. Het samenstellen van dossiers en het doorzoeken van alle besluiten gebeuren live bij jou. Er gaat niets naar een server terug.
Waar de stukken vandaan komen
De stad publiceert deze stukken zelf, omdat het Decreet Lokaal Bestuur haar dat oplegt (behalve voor de schriftelijke vragen), binnen de termijnen die je hierboven leest.
Op datzelfde portaal staat een robots.txt die alle geautomatiseerde bezoekers vraagt weg te blijven, zoekmachines incluis. Wij halen de stukken toch op.
Deze documenten moet de stad publiceren: openbaarheid is hier geen gunst maar een wettelijke plicht. En een robots.txt is een verzoek aan crawlers, geen slot op de deur. We wegen dat verzoek dus af tegen de reden waarom deze site bestaat, en we kiezen ervoor de stukken op te halen. Wat we daarbij wel in de hand hebben, is hoe we ons gedragen: we kijken niet constant of er iets nieuw is, maar op ruim gespreide momenten, stuk voor stuk en met een pauze tussendoor, zodat de servers van de stad er amper iets van merken. We nemen enkel wat al openbaar is, en we brengen je telkens terug naar het origineel.
De rest volgt vanzelf. De kosten blijven laag: alleen het resultaat gaat online, een handvol statische bestanden, gratis te hosten, zonder server of databank. Het zoeken naar dossiers en besluiten gebeurt in jouw browser, dus niemand logt wat jij intikt. En alles is open: wie de stappen herhaalt, krijgt dezelfde site, en de code staat publiek.
Twee hulpbronnen komen niet van de stad. De straten en adressen waarmee we een stuk aan een buurt koppelen, komen uit het Vlaams Adressenregister (bron: Digitaal Vlaanderen, onder de modellicentie voor gratis hergebruik). De grenzen van de deelgemeenten komen uit OpenStreetMap (© OpenStreetMap-bijdragers, ODbL). De lettertypes staan onder de Open Font License.
Wat we mogelijk over het hoofd zien
Natuurlijk hebben wij ook blinde vlekken. Dit zijn de grenzen aan dit project die we zelf zien.
We tonen vijf organen. Wat daarbuiten valt, zoals gemeenteraadscommissies, adviesraden of de mondelinge toelichting in de zaal, zie je hier niet. De site begint bovendien eind 2024, bij deze bestuursperiode. Oudere stukken halen we niet op. Een beslissing heeft vaak een voorgeschiedenis die niet in één document past.
Een samenvatting is niet de bron. Samenvatten is kiezen, en kiezen is weglaten. Ook het uitlezen van de pdf's gebeurt met vuistregels: soms glipt een agendapunt weg, of knippen we het verkeerd, nog voor de samenvatting. Een deel van dat werk doet een taalmodel: sneller, maar nooit onfeilbaar. Voor wat juridisch telt, ga je naar de bron: we brengen je telkens naar de officiële publicaties van net die zitting bij de stad. Voor het volledige besluit van het college, het vast bureau of de burgemeester heb je soms een openbaarheidsverzoek nodig.
En de site is een momentopname. Ze verandert pas wanneer we de stukken opnieuw ophalen en de nieuwe versie online zetten. Tussen twee versies kan ze achterlopen op de stad.
Ook de bundeling zit er soms naast. Merk je dat een stuk niet in een dossier thuishoort, dan kan je dat melden met de knop in het dossier. Zo'n melding gaat naar ons, niet automatisch de site in: wij beslissen of ze klopt en leggen de correctie dan vast in een apart bestand dat bij de volgende bouw meegaat. Zo verbetert de bundeling stap voor stap, met een mens die telkens de knoop doorhakt.
Een uitgestoken hand
Bekijk deze site vooral als een uitnodiging aan de stad om haar bestuursdocumenten veel leesbaarder en toegankelijker te maken, en zo de Mechelaar dichter bij de politiek te brengen. En natuurlijk is het ook een voorzet voor andere (burger)journalisten om iets gelijkaardigs te beginnen in hun stad of gemeente.