Je hebt Javascript nodig om deze website te kunnen gebruiken. Pas je browserinstellingen in om verder te gaan!

Van puzzel naar proces: hoe we matching deels automatiseren (en waarom niet alles)

Van handmatig puzzelen naar slimme ondersteuning: hoe automatiseer je een matchingsproces zónder de nuance te verliezen? We delen onze aanpak, uitdagingen en inzichten uit de praktijk.
Inzichtmatchingautomatiserenselectie en matchingai en digitale innovatiedata en inzichten
Van puzzel naar proces: hoe we matching deels automatiseren

Elk jaar organiseren we binnen ons traineeship een selectie- en matchingsproces waarin we kandidaten koppelen aan partnerscholen. Dat proces is inhoudelijk rijk, maar operationeel intensief: veel voorkeuren, veel gesprekken en weinig tijd om alles te verwerken.

Waar we dit proces in de beginjaren volledig handmatig uitvoerden (met Excel, puzzelwerk en lange dagen) zijn we sinds 2023 stappen gaan zetten richting de automatisering hiervan. Inmiddels hebben we een werkwijze ontwikkeld waarin technologie en menselijk oordeel elkaar versterken.

In dit artikel nemen we je mee in hoe die aanpak is ontstaan, welke keuzes we hebben gemaakt en wat we onderweg hebben geleerd.

De broncode waar we in dit artikel aan refereren kun je terugvinden in onze publieke Github reposity.

Het matchingsproces in vogelvlucht

Na de werving en selectie van kandidaten start het matchingsproces. Kandidaten en partnerscholen kunnen elkaars profielen bekijken in het daarvoor bestemde portaal op traineesinonderwijs.nl, en geven op basis daarvan hun voorkeuren door: met wie willen zij in gesprek?

Werving, selectie en matching

Voor meer inhoudelijke informatie over het wervings-, selectie- en matchingsproces van het traineeship kun je op de website terecht.

We organiseren dit proces in twee rondes:

  • In elke ronde vinden speeddates plaats tussen kandidaten en scholen

  • Na elke ronde geven beide partijen opnieuw hun voorkeuren door waarmee de selectie scherper wordt

Na afloop van de tweede ronde geven de kandidaten en scholen nog één keer hun voorkeuren door. Op basis hiervan maken we de definitieve matches: welke trainees starten op welke school?

Hoewel data hierin een belangrijke rol speelt, komt de uiteindelijke matching tot stand door een combinatie van voorkeuren, afwegingen en professioneel oordeel - van zowel de deelnemers als het programmateam van Trainees in onderwijs.

Van handmatig puzzelen naar slimme ondersteuning

In de eerste jaren deden we dit proces volledig handmatig. We verzamelden voorkeuren, zetten die in een leeg Excel-bestand en gingen vervolgens één voor één matches maken en speeddates plannen.

Dat was:

  • Tijdsintensief (denk aan 3 tot 5 dagen werk)

  • Slecht schaalbaar (méér deelnemers betekent méér werk)

  • Foutgevoelig

  • Mentaal belastend, juist in een toch al drukke periode

In 2023 hebben we daarom de eerste stap gezet naar automatisering. Niet om het proces volledig over te nemen, maar om het programmateam te ondersteunen in het meest repetitieve en tijdrovende werk.

De eerste uitdaging: een schone dataset

De eerste grote hobbel waar we tegenaan liepen, zat verrassend genoeg niet in de logica van het proces, maar in de data die we ervoor gebruikte.

In de eerste opzet gaven kandidaten en scholen hun voorkeuren door via vrije invoer in het voorkeursformulier dat ze invulden. Dat leidde tot een vervuilde dataset. Een school als “Cals College” kwam bijvoorbeeld terug als:

  • cals college

  • Kals college

  • Cals Lyceum

  • Cals

  • College Cals

We hebben eerst geprobeerd dit op te lossen met fuzzy matching-algoritmes. Maar hoe slim die ook waren, het bleef onbetrouwbaar. De variatie was simpelweg te groot.

De echte oplossing zat niet in betere code, maar in een ander procesontwerp. We zijn gestopt met vrije invoer en overgestapt op selectie uit een voorgedefinieerde lijst van deelnemers waaruit men kan kiezen. Deze informatie haalt het voorkeursformulier nu op uit het CMS, waardoor we werken met unieke ID’s in plaats van namen.

Dat had twee grote voordelen:

  • We konden voorkeuren altijd eenduidig koppelen

  • De dataset was vanaf het begin schoon

De belangrijkste les: slechte input kun je niet achteraf “weg-rekenen”. Datakwaliteit moet je aan de voorkant organiseren.

Hoe het matchingsscript werkt

Met een schone dataset konden we het proces verder structureren. Het script haalt alle voorkeuren op uit het CMS en maakt onderscheid tussen:

  • Eenzijdige matches: alleen kandidaat of school heeft voorkeur

  • Tweezijdige matches: beide partijen hebben elkaar gekozen

Daarnaast wordt rekening gehouden met de volgorde van voorkeuren: een eerste voorkeur weegt zwaarder dan een vijftiende.

De output van deze stap is een matchingsmatrix (in Excel), waarin zichtbaar is:

  • Wie elkaar gekozen heeft

  • Hoe sterk die voorkeur is

Deze output is nadrukkelijk geen eindbeslissing, maar een startpunt voor het programmateam.

Mens en algoritme werken samen

Hoewel we een groot deel van het proces hebben geautomatiseerd, ligt de regie nog altijd bij het programmateam. Zij gebruiken de output van het script om:

  • Matches te beoordelen

  • Context mee te nemen uit de inzendingen (de opmerkingen en kanttekeningen van de deelnemers)

  • Bewust af te wijken waar dat nodig is

Soms worden er ook gesprekken ingepland tussen kandidaten en scholen die elkaar niet expliciet als voorkeur hebben opgegeven, maar waarvan we denken dat het een interessante match kan zijn.

Het belangrijkste inzicht dat hieruit voortkomt: automatisering ondersteunt én versnelt, maar vervangt het professionele oordeel niet.

Wel of niet automatiseren?

Een belangrijke vraag in dit proces was steeds: wat automatiseer je wel, en wat niet? We hebben ervoor gekozen om wél te automatiseren:

  • Het ophalen en structureren van data

  • Het genereren van eerste matchvoorstellen

  • Het maken van (eerste versies van) speeddateschema’s

En bewust níet:

  • De definitieve matching

  • Complexe uitzonderingen

  • Afwegingen op basis van ‘zachte’ factoren

Daarbij spelen steeds dezelfde afwegingen: hoe complex wil je je code maken, en hoeveel flexibiliteit heeft het team nodig bij de inzet ervan?

De tweede uitdaging: spreiding zonder gatenkaas

Een tweede complexe puzzel waar we tegenaan liepen, zat in het plannen van de speeddates. We willen namelijk dat:

  1. Iedereen (ongeveer) evenveel gesprekken heeft

  2. Gesprekken goed verdeeld zijn over de dag

  3. Er geen ‘gaten’ in het schema zitten

Dat laatste blijkt belangrijker dan je denkt. In eerdere edities, waarin er wel gaten vielen, zagen we dat deelnemers later kwamen, eerder weggingen of tussendoor andere dingen gingen doen.

En dat is zonde. Juist de informele momenten — tussen gesprekken door — zijn vaak waardevol voor netwerkvorming.

Het algoritme dat we nu gebruiken zorgt voor:

  • Een gelijkmatige spreiding

  • Volledig gevulde schema’s

  • Een logische dagindeling

De output is opnieuw een concreet en werkbaar Excel-overzicht van de dag.

Itereren in de praktijk

De ontwikkeling van deze aanpak is sterk iteratief geweest. Bij elke jaarlijkse matchingscyclus hebben we het process en de code die we daarvoor schreven, verder aangescherpt.

Onze verbeteringen zaten vooral in:

  • Het optimaliseren van de output (bruikbare Excel-bestanden)

  • Het verbeteren van de kwaliteit van het speeddateschema

  • Het opschonen en structureren van de codebase

Elk jaar leerden we van het gebruik in de praktijk. Niet door alles vooraf perfect te maken, maar door gericht te verbeteren op basis van ervaringen van het programmateam.

Van dagen naar uren

Waar het indelen van het matchingsproces eerder een werkweek kostte, is dat nu teruggebracht naar een halve tot één dag.

Dat levert niet alleen tijdswinst op, maar vooral:

  • Minder operationele druk in een toch al drukke periode

  • Meer aandacht voor de details and nuances binnen de doorgegeven voorkeuren

Die verschuiving is misschien wel de grootste winst. Automatisering is voor ons geen doel op zich, maar een middel om beter werk te kunnen doen.

Door het proces slim te ondersteunen, hebben we ruimte gecreëerd voor wat er echt toe doet: het maken van goede matches.

Ben je benieuwd naar de broncode achter dit artikel? We hebben de codebase van onze matching pipeline openbaar gemaakt. Je vindt deze in onze GitHub-repository.

Geschreven door
Remi

Remi

Productontwikkelaar

Gepubliceerd op
Laatst bijgewerkt op

Verder lezen
Het nieuwe Onderwijsloket.com - de highlights
Wat in 2024 en 2025 nog “achter de schermen” gebeurde, is nu werkelijkheid: het nieuwe platform van het Onderwijsloket staat sinds eind februari 2026 live en is vanaf nu voor iedereen te gebruiken.
platformnieuw
Het nieuwe Onderwijsloket.com – de details
Wat in 2024 en 2025 nog “achter de schermen” gebeurde, is nu werkelijkheid: het nieuwe platform van het Onderwijsloket staat sinds eind februari 2026 live en is vanaf nu voor iedereen te gebruiken.
platformnieuwtechnologie
Campagneblog Werken met de Toekomst - een terugblik
Van 20 januari tot en met 20 februari voerden we samen met onze verschillende partners uit het onderwijsveld campagne. Hiermee wilden we werken in het onderwijs in een positief, maar realistisch daglicht stellen. In dit afsluitende blog blikken we terug op de campagne als geheel en welke (blijvende) effecten we ervan merken.
klantreisachter de schermenmedia

Heb je vragen, opmerkingen of ideeën?

Heb je na het lezen van dit item een vraag, idee, of opmerking die je met ons wilt delen? Of sta je te trappelen om samen met ons iets op te zetten? We horen het graag!

neem contact op

Blijf op de hoogte

Ontvang periodieke updates over onze projecten

Door je in te schrijven voor onze nieuwsbrief, ga je akkoord met onze privacy voorwaarden.