Type: Pitch
Problem / Opportunity
CEDA-pipelines verwerken bestanden van externe bronnen: DUO-bekostigingsbestanden, Studielink-telbestanden, CAMBO-data, en in de toekomst eigen data van instellingen via het Analytics Platform Onderwijs. Op dit moment vertrouwt de code grotendeels op de aanname dat input het verwachte formaat heeft. In een workshop-setting is dat acceptabel, maar naarmate CEDA richting productiedienstverlening (analytics-as-a-service) gaat, wordt robuuste validatie kritisch.
Dit raakt drie regelgevingskaders:
- AI Act (Artikel 10 — data quality management): voor de instroomprognose en uitvalanalyse (high-risk AI in onderwijs, Annex III punt 3) moet aantoonbaar zijn dat trainings- en inputdata aan kwaliteitscriteria voldoen
- NIS2: instellingen die CEDA-tools draaien moeten hun toezichthouder kunnen laten zien dat de software-toeleveringsketen in orde is, inclusief robuuste input handling
- AVG/GDPR: bij ingestion moeten checks voorkomen dat onbedoeld bijzondere persoonsgegevens worden verwerkt
Het jaarplan 2026 benoemt al privacy-by-design principes (pseudonimisering bij ingestion, checks op gevoelige kenmerken), maar dit is nog niet vertaald naar geformaliseerde validatie in de code.
Appetite
Large (5-6 dagen) — schema-definitie per databron + integratie in bestaande pipelines
Solution
Een validation/ module toevoegen aan de CEDA package-structuur die schema's definieert per databron. Elke ingest-functie roept eerst de validator aan.
Concrete aanpak:
-
Schema-definitie per databron met Pandera (Python) of pointblank (R):
- Kolomnamen, types en constraints (bijv. studentnummer is integer, geboortejaar tussen 1940-2010)
- Verplichte vs optionele kolommen
- Toegestane waarden voor categorische velden
- Maximale bestandsgrootte
-
Validatielaag aan de systeemgrens (de ingest-stap):
- Valideer vóór dat data de analyse-functies bereikt
- Duidelijke foutmeldingen bij afwijkingen (welke kolom, welke rij, welke constraint)
- Fail-fast: bij kritische validatiefouten stopt de pipeline met een leesbare melding
-
Data quality report per run:
- Aantal records, missende waarden per kolom, afgewezen records
- Distributies van key variabelen (sanity checks)
- Automatisch gegenereerd als artefact bij elke pipeline-run
- Basis voor AI Act art. 10 compliance
-
Specifieke security-gerelateerde validatie:
- Input sanitization: wat als er HTML/SQL/script in tekstvelden zit? (relevant zodra resultaten in webinterface getoond worden — XSS preventie)
- Check op onverwachte kolommen die niet in het schema staan (voorkomt data leakage)
- Check op patronen die op BSN of andere bijzondere identifiers lijken (regex-based, aanvullend op pseudonimisering)
Acceptatiecriteria
Risks / Rabbit holes
- Niet proberen alle edge cases in één keer te vangen. Start met de twee meest gebruikte databronnen, voeg incrementeel toe.
- Schema's niet te strict maken bij eerste versie — je wilt niet dat de pipeline breekt op een kolom die bij één instelling net iets anders heet. Configureerbare strictness levels helpen.
- Pandera vs pointblank: kies op basis van wat het team al kent. Pandera is matuurder voor Python; voor R is pointblank de beste optie.
No-Gos
- Geen validatie van de inhoudelijke correctheid van data (dat is analyse, niet validatie)
- Geen real-time streaming validatie — batch is voldoende voor CEDA's use case
- Geen eigen validatie-framework bouwen — gebruik bestaande tools
Gevalideerd met
@corneeldenhartogh
Type: Pitch
Problem / Opportunity
CEDA-pipelines verwerken bestanden van externe bronnen: DUO-bekostigingsbestanden, Studielink-telbestanden, CAMBO-data, en in de toekomst eigen data van instellingen via het Analytics Platform Onderwijs. Op dit moment vertrouwt de code grotendeels op de aanname dat input het verwachte formaat heeft. In een workshop-setting is dat acceptabel, maar naarmate CEDA richting productiedienstverlening (analytics-as-a-service) gaat, wordt robuuste validatie kritisch.
Dit raakt drie regelgevingskaders:
Het jaarplan 2026 benoemt al privacy-by-design principes (pseudonimisering bij ingestion, checks op gevoelige kenmerken), maar dit is nog niet vertaald naar geformaliseerde validatie in de code.
Appetite
Large (5-6 dagen) — schema-definitie per databron + integratie in bestaande pipelines
Solution
Een
validation/module toevoegen aan de CEDA package-structuur die schema's definieert per databron. Elkeingest-functie roept eerst de validator aan.Concrete aanpak:
Schema-definitie per databron met Pandera (Python) of pointblank (R):
Validatielaag aan de systeemgrens (de
ingest-stap):Data quality report per run:
Specifieke security-gerelateerde validatie:
Acceptatiecriteria
ingest-functies in instroomprognose en uitvalanalyse roepen validator aan vóór verwerkingdata-conventions.md)Risks / Rabbit holes
No-Gos
Gevalideerd met
@corneeldenhartogh