Frondia
Een bewijsatlas voor vijf Belgische steden die een echte verandering in stedelijk groen onderscheidt van de ruis van één zomer — met een drempel die gemeten is, niet gekozen, en een weigering die als volwaardige uitkomst wordt gepubliceerd. Ik ontwierp en bouwde hem met Claude Code, en hij nam drie van mijn eerdere kaartprototypes in zich op
- Probleem — Elke zomer lijkt een stad wat groener of wat bruiner. Vergeleken met hun eigen verleden lijken 263 van de 668 Brusselse sectoren “significant groener” — het meeste daarvan is weer, geen werk
- Inzicht — Officiële lagen meten hoeveel groen een stad heeft, niet of het veranderde; niemand publiceert een gekalibreerde drempel voor verandering tegenover ruis. Die drempel is het product
- Oplossing — Eén atlas, drie vragen per sector: wat ontbreekt, wat moet waar komen, wat is veranderd — elk effect afgezet tegen 12 vergelijkbare plekken en de eigen ruisdrempel van de stad
- Resultaat — Live voor Brussel, Antwerpen, Gent, Luik en Charleroi: 16 Brusselse sectoren groener buiten de ruis in plaats van 263, 212 tests. Eigen initiatief
Wat is er echt veranderd — en hoe zou je dat weten?
Frondia begon met een vraag waarop ik nergens een antwoord vond: als een Belgische stad zegt dat ze een wijk vergroend heeft, veranderde dan de grond, of de zomer? Groenheid gemeten vanuit de ruimte schommelt elk jaar met regen, hitte en oogst. Vergelijk elke sector met zijn eigen verleden en Brussel lijkt herschapen: tussen de zomers van 2017–19 en 2021–24 lijken 263 van de 668 vergelijkbare sectoren “significant groener”. Vergelijk elke sector met twaalf plekken die er vooraf hetzelfde uitzagen, en dan zijn het er 16.
De vraag is niet academisch. Verordening (EU) 2024/1991, de natuurherstelverordening, vraagt de lidstaten om tegen 2030 geen nettoverlies aan stedelijke groene ruimte en boomkroonbedekking ten opzichte van een basis in 2024 (artikel 8). De officiële keten meet het niveau van groen in een bepaald jaar; geen van de tools die ik bekeek, van de monitoring van het PBL en Cobra in Nederland tot UpGreen en PlanIT Geo, publiceert een gekalibreerde drempel voor verandering tegenover ruis. Voor die leemte is Frondia gebouwd. Het is een project op eigen initiatief, zonder klant en zonder pitch: ik ontwierp en bouwde het met Claude Code tussen 31 augustus en 27 september 2026.
frondia.eu — het veld achter de kaart krijgt op de pagina zelf het bijschrift “An illustration, not a measurement.”
Het hele argument in één stap: 263 sectoren lijken groener tegenover hun eigen verleden, 16 zijn groener tegenover twaalf vergelijkbare plekken
De drempel wordt gemeten, niet gekozen
Elke sector van een stad speelt één keer de rol van een denkbeeldige ingreep. Hij wordt gekoppeld aan de twaalf sectoren die vooraf het meest op hem leken in groenheid en zomerhitte, geen enkele dichter dan 1,5 km, en zijn verschil-in-verschillen wordt genoteerd. Daar gebeurde niets, dus de spreiding van al die effecten is de eigen ruis van de methode, en de drempel ligt waar 95% ervan eindigt. De verdeling is rond nul gecentreerd: de methode verzint geen effecten waar niets gebeurde.
Een drempel hoort bij een paar van stad en instrument, en bij de run die hem maakte. De kalibratie van het NDVI-instrument geeft 0,0373 in Brussel, 0,0458 in Antwerpen, 0,0481 in Gent, 0,0536 in Luik en 0,0396 in Charleroi; de laag voor artikel 8, gekalibreerd op haar eigen tabel, geeft 0,0345 in Brussel. Een drempel gaat nooit mee van het ene schema naar het andere. Als de twaalf vergelijkbare plekken vooraf meer dan 0,04 van de locatie afweken, komt er geen oordeel: “geen eerlijke vergelijking” is een gepubliceerde uitkomst, getekend als grijze arcering.
De methodestrook op de landingspagina: 668 Brusselse sectoren, elk één keer als ingreep gespeeld. De stippellijnen zijn de drempel van deze run
Een weigering is een uitkomst op dezelfde rij als “geen effect”: geen eerlijke vergelijking, geen verdedigbare voetafdruk, werken buiten de vensters, te weinig beelden
De meeste regels kwamen voort uit fouten die de data eerst maakten. De voetafdruk van een ingreep wordt nooit uit de meting afgeleid: het is een OpenStreetMap-polygoon van een hectare of meer, de eigen polygoon van de opdrachtgever, of een omtrek die vóór het getal gepubliceerd werd, en anders een weigering. Opleveringsdata worden vóór elke conclusie opgezocht, en de vergelijkingsvensters worden eromheen gesneden. En een taalmodel rekent nooit een getal uit: getallen komen uit een deterministische engine met tests, het model leest, schrijft en legt uit.
Eén kaart, drie vragen voor elke sector
De atlas stelt elke statistische sector van Statbel drie vragen, één tegelijk. Wat ontbreekt: dagelijkse voorzieningen voor een gezin, thuiswerk of senioren, winkels in de buurt, zomerhitte en de 3-30-300-regel, telkens met wie er tekortkomt per inkomensderde, bij kinderen en bij 65-plussers. Wat moet waar komen: veertien soorten publieke objecten, elk veertig gerangschikte punten, de eerste tien benoemd op 5 september 2026 voordat iemand iets plaatste, de volgende tien bewaard als vergelijking. Wat is veranderd: groenheid en bebouwde grond tegenover twaalf vergelijkbare plekken, gemeenten onder artikel 8(1), en de hele stad voor en na.
Alleen de derde vraag meet verandering; de andere twee beschrijven en bevelen aan, en de atlas zegt dat er ook zo bij. Een tekort krijgt zijn eigen kleurverloop, YlOrBr van ColorBrewer, omdat het blauwgroen en rood van winst en verlies alleen bij verandering horen. Hitte wordt getoond als toestand, nooit als effect.
Zomerhitte in Brussel, waar hitte en kroonbedekking samen bewegen met r = −0,89. Een toestand, geen effect: de ruisvloer voor verkoeling is 1,32 °C
Dagelijkse voorzieningen in Antwerpen, gewogen voor een gezin: hier is het armste derde beter bediend dan het rijkste, 75 tegen 56
Wat moet waar komen in Gent: openbare toiletten. Tien benoemde punten (gevuld) tegenover tien vergelijkingspunten (ringen), en een schuifregelaar voor wat de volgende objecten zouden dekken
4 van de 19 Brusselse gemeenten halen de vrijstelling van artikel 8(1); het gewest als geheel, met 39,3% groen in zijn stedelijke centra en clusters, telt mee
De hele stad voor en na, met de oordelen als omlijning. Uit de foto’s wordt geen enkel getal gehaald
Vier prototypes, één product
Frondia nam drie kaartprojecten op die hier vroeger aparte cases waren. City Planner rangschikte waar het volgende openbare toilet, de volgende bank of AED moet komen, met een greedy max-coverage-algoritme op een vraagraster dat zwaarder weegt in achtergestelde buurten. Neighbourhood Fit Score scoorde sectoren voor drie levens, van een school en een huisarts tot een tramhalte. SpotFinder mat de afstand tot de dichtstbijzijnde bakker, het dichtstbijzijnde café of de dichtstbijzijnde banketbakker. Elk werd een lens van de atlas, en hun code staat nu als pipelines in de repository van Frondia.
Samensmelten betekende schrappen. Londen en Parijs van City Planner verdwenen, net als Leuven van SpotFinder: Frondia gaat over België. Ook de commerciële “kansenscore” van SpotFinder verdween, omdat Frondia de stad leest zoals een bewoner of een overheid dat zou doen: de afstand tot de dichtstbijzijnde winkel, niet de ruimte voor een concurrent. De ports gingen de andere kant op. Fit Score leerde Antwerpen kennen via de GTFS van De Lijn, SpotFinder leerde Brussel kennen, en elke lens bestaat nu in alle vijf de steden.
De ports leerden de pipelines ook hun invoer te wantrouwen. Overpass faalt met exitcode 0 en geeft een aannemelijk resultaat terug dat uit lege data is opgebouwd, dus een run met een fetch-waarschuwing of nul vraagpunten faalt nu luid, en de planners lezen OpenStreetMap voortaan uit een Geofabrik-extract. Een dunne kaart wordt benoemd, niet verstopt: de OpenStreetMap van Charleroi telt 11 toiletten, 6 AED’s en 1 drinkfontein voor 204.000 mensen, en de atlas zegt dat de dekking “vandaag” er deels de kaart meet.
Drie plekken gemeten, elk met zijn kanttekening erbij
Een audit meet de voetafdruk van de werken tegenover twaalf sectoren die in de atlas bij naam genoemd worden, en volgt het effect dan zomer na zomer. Porte de Ninove in Brussel, een braakliggend terrein aan het kanaal dat in het najaar van 2019 als park openging, haalt +0,246 tegenover een drempel van 0,036 in zijn eigen schema, 6,8×, en blijft 7 van de 7 zomers boven de ruis. Een tweede instrument, Dynamic World, zegt wat er veranderde: bebouwde grond −0,123, gras +0,098, kroonbedekking binnen de ruis. Het is een weidepark, en het oordeel zegt dat ook.
Droogdokkenpark in Antwerpen is de eerlijke correctie. Het standaardvenster geeft +0,289, maar de zomers “ervoor” bevatten al de bouwwerf. Met een basis in 2016, van vóór de werken, is het verdedigbare effect +0,147: de helft van de kop, en nog altijd drie keer de drempel. In 2025 zakte het in de ruis, en het tweede instrument laat zien waarom: bebouwd +0,107 en de kroonbedekking gehalveerd in één seizoen, door werken aan de dokken. Park Spoor Noord, een spoorwegemplacement dat in 2008–2009 een park werd, is ouder dan Sentinel-2 en wordt dus met Landsat geauditeerd, terug tot 2006: +0,148 tegenover 0,058, boven de ruis in 14 van de 15 zomers, met de droogte van 2018 als enige binnen de ruis.
De audits op de landingspagina: een voor-en-naschuif over de voetafdruk, het effect als veelvoud van de eigen drempel van de audit, en de reeks met de gaten erin gelaten
De audit in de atlas: het effect, het verdedigbare effect, en de twaalf vergelijkbare plekken met naam en afstand
Een tool die alles met een getal beantwoordt, is nutteloos
De belangrijkste beslissingen in Frondia gaan over wat het weigert te zeggen. Verkoeling: de ruisvloer voor de oppervlaktetemperatuur in de zomer is 1,32 °C, meer dan een nieuw park realistisch doet, dus nergens “koelt een park de straat met een graad af”. Restauraties: herstelde paden en vijvers in een park dat al groen is, zie je niet vanuit de ruimte, en zeven grote restauraties, elk gemeten met een eigen venster en een eigen drempel, blijven binnen de ruis. Verspreide straatbeplanting verdrinkt op het niveau van een sector. En een oorzaak wordt nooit genoemd zonder document: de sterkste vergroening van Brussel, Zavelenberg, is een natuurreservaat waar de begrazing stopte nadat de boer overleed.
Een verlies in één seizoen wordt alleen gepubliceerd als twee instrumenten het eens zijn, NDVI en Dynamic World, met documenten als derde filter, omdat er gerooid wordt voordat er gebouwd wordt. Ik wilde ook weten hoe vaak de detector zelf fout zit. De Groenkaart Vlaanderen, een kaart op 1 m gemaakt uit luchtfoto’s, ging in Antwerpen en Gent door dezelfde vergelijkbare plekken en een eigen drempel. Ze is het met de detector eens over “binnen de ruis” in 98% van de sectoren (569 van 583) en over “veranderd” in slechts 32% (7 van 22). Een verandering buiten de ruis is dus een kandidaat, geen bewijs, en de site zegt dat precies waar de bewering staat.
Wat Frondia weigert te beweren. Elke regel kwam erbij nadat zonder die regel een overtuigend maar fout resultaat opdook
Elk getal, en hoe het gemaakt is
Rond de atlas staan vier documentpagina’s, opgebouwd op één gemeten lay-out, de onderzoeksartikels van anthropic.com: een leeskolom van 640 px en 880 voor figuren en tabellen. Het sectordossier geeft elke sector een titel die een berekende bevinding vermeldt, nooit een geschreven, en daarna de trend tegenover vergelijkbare plekken, wie er tekortkomt, wat de planner er zou plaatsen en wat de methode niet meet; het wordt afgedrukt op A4. De gemeentepagina beantwoordt artikel 8(1) voor elk van de 23 gemeenten waarop de test van de Commissie liep, met de nulmeting in hectare en de balans sinds 2024. De datapagina biedt elke laag aan als CSV met haar manifest, en het bestand voor artikel 8 als de GeoPackage die een land bij de Commissie indient.
In het dossier nemen drie gemeten gevallen de plaats in van beloften
Anderlecht sinds de basis van 2024, in hectare buiten de ruis, en wat de seizoensbulletins er noemen
Het register van ingrepen is waar een taalmodel zijn enige taak uitvoert: lezen. Claude Sonnet 5 las de pagina’s van alle 98 Brusselse duurzame wijkcontracten en noteerde elke vergroeningsmaatregel met de woorden waarop die steunt; alle 110 citaten staan woord voor woord in hun contract. 41 pagina’s beschrijven niets en worden getoond als “niet beschreven”, nooit als “geen maatregel”. Dertig testcontracten werden per seed getrokken voordat er één gelezen was, en een tweede model, Claude Opus 5.5, las ze opnieuw in een vers proces: de twee lezingen verschillen bij 1 van de 30 (3%, interval 1–17%). De pagina zegt wat die controle niet bewijst. Twee modellen uit één familie kunnen een zin op dezelfde manier verkeerd lezen, dus dit is overeenstemming, geen nauwkeurigheid, en elk citaat houdt zijn bron zodat een mens het kan nagaan.
De controle van het register: elke score als Wilson-interval van 95%, het model tegenover een eenvoudige regel
Bewijs, geen marketing: twee design systems en één metafoor
De pagina moest lezen als bewijs. De metafoor is het geritsel en de jaarring: het veld ritselt (ruis), een ring is een feit, een label is een document. Het palet neemt de crèmekleurige pagina en de bijna zwarte tekst van een Satoyama-brochure en voegt er de groentinten en het lila van CADRO aan toe, gemeten als kleurclusters in plaats van op het oog gekozen. Kleur betekent meting: geen enkel groen of rood uit de interface komt ooit in een kaart, een grafiek of een oordeel; het blauwgroen van winst en het rood van verlies markeren de drempel, 2× en 3×; en “geen eerlijke vergelijking” is een neutrale grijze arcering, omdat een groenige arcering als winst gelezen werd. De typografie is het systeem van David Protein, met de betalende letters vervangen door Instrument Serif, Geist en Fragment Mono, gekozen op gemeten overlap van de glyphs.
De landingspagina en de atlas hebben elk hun eigen systeem en delen alleen de merkprimitieven. De landingspagina is redactioneel, met de gemeten lay-out van anthropic.com als maatstaf; de atlas is een compacte tool, met die van Felt als maatstaf. Elk element heeft zijn eigen referentie, ernaast gelegd in Figma. Het design system in Figma telt 233 variabelen in vier collecties en 23 tekststijlen, en de collectie Theme heeft twee modi: dezelfde elf schermen worden wireframes in Inter en grijstinten, of hi-fi in de lettertypes van de site zelf.
Figma, modus Wireframe: het auditscherm opgebouwd uit de componenten van het systeem
Hetzelfde scherm, live: Porte de Ninove tegenover zijn twaalf benoemde plekken
Colour · data in Figma: elk datatoken als paar Wireframe | Hi-fi. Wireframes tonen de richting alleen met lichtheid
Toegankelijkheid en lay-out werden gecontroleerd, niet verondersteld. Vijf controlerondes na de eerste deploy vonden de eerste telling van de tweelingkaarten op een contrast van 2,2 : 1 en bedieningselementen van 28–32 px op de telefoon, nu 40, en 44 als ze alleen staan; na de fixes vond axe niets meer in 12 toestanden. Drieënvijftig toestanden op vijf breedtes tonen geen fouten, geen overloop en geen hangende woorden. Geen regel eindigt op een kort woord: een typografische regel zet de vaste spaties op de gerenderde tekst, zodat een latere tekstwijziging er geen kan terugbrengen.
Minder beweringen, elk verdedigbaar
Het voor de hand liggende product was een groenheidskaart met een voor en een na. Dat is wat de ruwe data geven, het ziet er spectaculair uit, en het is grotendeels weer. Effecten tonen tegenover een controlegroep kost dat spektakel: Brussel zakt van 263 groenere sectoren naar 16, en Luik, dat tussen de twee vensters nauwelijks vergroende, van 3 naar 1. Elke kaart en elke tekst toont het effect tegenover de controle; de ruwe weergave bestaat alleen nog als argument voor die controle.
Dezelfde afweging loopt door de hele bouw. Hectaren vragen een harde classificatie, dus de balans sinds 2024 is een aparte run met eigen drempels; zonder vergelijkbare plekken zou Antwerpen in twee zomers 586 ha groen verloren en 573 ha verhard hebben. De dossierregel vindt geen sector in Luik of Charleroi, allebei vrijgesteld onder artikel 8(1), en werd niet versoepeld: de pagina legt de weigering uit. Toen het archief van Sentinel-2 opnieuw verwerkt werd en de voetafdrukken van de audits iets anders uitkwamen, bleven de gepubliceerde effecten staan, omdat een effect en zijn drempel uit één run moeten komen.
Sommige oordelen hangen af van hoe de wet gelezen wordt: dat van Gent kantelt als landbouwgrond als groen telt, dat van Luik als water meetelt, en beide lezingen worden afgedrukt.
De moeilijkste beslissing kwam na een maand: halverwege het project haalde ik de site weg van twee Vite + React-apps en bracht ik hem onder in één Next.js-app (App Router, TypeScript, server-side rendering). Nederlands en Frans moesten echte versies worden, die elk als kant-en-klare HTML op een eigen /nl- of /fr-adres aankomen, gemarkeerd als nl-BE of fr-BE met hreflang en eigen metadata, zoals Stripe, Apple of be.brussels het doen; een voorgerenderde Vite-opzet met i18next lag op tafel, en ik koos in plaats daarvan de weg die grote sites nemen. Dezelfde overstap bracht analytics met toestemming: Umami zonder cookies, en Clarity pas nadat een bezoeker akkoord gaat. De prijs is een overzetting pagina per pagina, waarbij elke pagina met de productieversie wordt vergeleken op haar zichtbare tekst en op screenshots van 1440 en 390 px. De landingspagina staat met analytics, toestemming en het SEO-werk live op frondia.eu; de documentpagina’s worden nu overgezet, en de Nederlandse en Franse versies volgen daarna.
Live in vijf steden, herbouwd vanuit een lege map
Frondia staat live: de landingspagina op frondia.eu, de atlas en de documentpagina’s op frondia.ontwrpn.com, voor Brussel (724 sectoren, 1.246.136 inwoners), Antwerpen, Gent, Luik en Charleroi, alle drie de Belgische gewesten. De engine is Python, met Earth Engine voor Sentinel-2, Landsat en Dynamic World. Elke stad is een pakket lagen, elke laag heeft een manifest, en een laag zonder manifest wordt niet gepubliceerd. Elke pagina wordt herbouwd vanuit een lege map, en 212 tests controleren de zichtbare tekst van de pagina’s en de data achter de kaarten tegenover de eigen bekende antwoorden van elke stad.
De site begon als twee Vite + React-apps achter nginx, uitgerold met Coolify op mijn eigen server. De landingspagina draait nu op de nieuwe Next.js-app op frondia.eu; de atlas en de documentpagina’s komen nog uit de Vite-apps op frondia.ontwrpn.com.

Live — de atlas, vijf steden
Twaalf plekken aftrekken die hetzelfde bleven, is het hele product in één stap
Bronnen
- Verordening (EU) 2024/1991 van het Europees Parlement en de Raad inzake natuurherstel (natuurherstelverordening), artikel 8: stedelijke ecosystemen.
- Brown, C. F. et al. (2022). Dynamic World, near real-time global 10 m land use land cover mapping. Scientific Data 9:251. — klassenwaarschijnlijkheden, geen aandelen van de grond
- Konijnendijk, C. C. (2023). Evidence-based guidelines for greener, healthier, more resilient neighbourhoods: introducing the 3–30–300 rule. Journal of Forestry Research 34:821–830.
- Nemhauser, Wolsey & Fisher (1978). An analysis of approximations for maximizing submodular set functions. Mathematical Programming 14. — de garantie achter de greedy max-coverage-rangschikking
