5.3 KiB
Matching- en scoringengine
1. Beslisvolgorde
normalisatie
-> harde uitsluitingen
-> deterministische features
-> optionele AI-features (alleen aanvulling)
-> gewogen score
-> confidence
-> recommendation
-> append-only ScoreRun
Harde uitsluitingen hebben absolute voorrang. Een score van 99 kan een uitgesloten verplichte skill of regio niet overrulen.
2. Harde regels
Ondersteund of gepland:
- uitgesloten titelterm;
- uitgesloten/geen toegestane contractvorm;
- uitgesloten regio/gemeente;
- afstand boven maximum, behalve remote;
- uitgesloten verplichte skill;
- een titelgestuurde IT-grens; ambigue field-/implementatietitels vereisen daarnaast een sterk IT-contextsignaal in de vacaturetekst;
- expliciete rijbewijs-/reis-/taalvereisten wanneer betrouwbaar geëxtraheerd;
- verlopen of niet-actieve vacature buiten de ranking.
Iedere uitsluiting bewaart een concrete reden. unknown_is_insufficient kan later per regel bepalen of ontbrekende data naar review gaat; veilige standaard is onbekend niet automatisch uitsluiten.
3. Componenten
Standaardgewichten, totaal 100:
| Component | Gewicht | Kernsignalen |
|---|---|---|
| Content | 30 | titelovereenkomst, taken, weinig ongewenste support |
| Skills | 25 | gewenste skills in expliciete velden/tekst |
| Locatie | 20 | afstand, remote/hybrid, voorkeursregio |
| Voorwaarden | 10 | toegestane contract-/werkvorm |
| Werkgever | 10 | directe bron versus recruiter |
| Voorkeuren | 5 | publieke sector en andere soft signals |
Bij aangepaste gewichten worden componentbijdragen genormaliseerd op de totale som.
- De profielervaring is uitsluitend informatieve context. Gevraagde ervaringsjaren en senioriteitslabels veranderen de score, aanbeveling en uitsluitingen nooit.
- Een breed cv-profiel wordt niet bestraft omdat veel relevante skills zijn geselecteerd: maximaal vier aangetroffen profielskills volstaan voor de volledige skillcomponent. Niet-aangetroffen voorkeurskills blijven evidence, maar worden niet als bewezen tekort of concern gepresenteerd.
- AI-boost is opt-in via profielinstelling en telt alleen mee als profielgewicht > 0.
- De AI-component is softwarematig begrensd (maximale bijdrage via
ai-gewicht) om dominantie te vermijden.
4. Confidence
Confidence is niet hetzelfde als score. Een vacature kan inhoudelijk sterk lijken maar lage confidence hebben door ontbrekende werkgever, locatie of beschrijving.
Baselineformule in MVP:
confidence = 0.65 * extraction_confidence + 0.35 * field_completeness
Uitbreidingen mogen rekening houden met:
- provenancekwaliteit per veld;
- overeenstemming tussen aliassen;
- geocodingconfidence;
- parserspecifieke drift;
- AI-/deterministische featureconsistentie.
5. Recommendations
strong— score ≥ topmatchthreshold en confidence ≥ 0,65;possible— score ≥ recommendationthreshold;weak— lager maar niet hard uitgesloten;hidden— minstens één harde uitsluiting.
Drempels zijn profielconfiguratie. De UI toont score en confidence apart.
6. Evidence en explainability
Een score bewaart:
- exacte componentbijdragen;
- positives;
- concerns;
- hard exclusions;
- afstand/evidence;
- profielversie;
- optionele model- en promptversie.
- AI-status (
ok,disabled,timeout,invalid,error) en foutcategorie; - gewichten (gevraagde vs. effectief toegepast, zodat cap zichtbaar is).
Copyregels:
- zeg "niet teruggevonden" in plaats van "ontbreekt" wanneer brondata onvolledig is;
- presenteer niet-vermelde cv-skills niet als tekort; alleen expliciet aangetroffen skills zijn positieve evidence;
- label inference als inference;
- toon maximaal enkele kernredenen bovenaan en volledige details uitklapbaar;
- geef geen kanspercentage op aanwerving zonder gevalideerd model.
7. Feedbackleren
Feedback kan alleen begrensde soft weights aanpassen. Learning staat standaard uit tot learning_enabled actief is.
Regels:
- learning kan uit;
- delta per feedbackactie klein en gelimiteerd;
- weight binnen 0..40;
- iedere wijziging maakt een profielrevisie;
- harde regels en bronpolicy worden nooit geleerd;
- een enkele actie leidt niet tot grote verschuiving (minimale sample-criteria per feature);
- gebruiker kan resetten en verschil bekijken.
- hidden feedback met reden en non-relevant categorieën wordt apart gelogd.
Feedbackregels worden als metadata op de feedback opgeslagen (feedback.metadata["learning"] met status, reden, feature, delta, sample count).
Offline evaluatie is beschikbaar via scripts/feedback_learning_report.py met feedbackcounts, churn en non-learning categorieën.
8. AI-rol
Toegestaan:
- support-/consultancy-/travelratio schatten;
- senioritylabel als informatieve extractie, zonder score-invloed;
- korte Nederlandse samenvatting;
- evidencefragmenten selecteren;
- ambiguïteitswarnings.
Niet toegestaan:
- harde uitsluiting toevoegen zonder deterministisch verifieerbaar signaal;
- vacature verwijderen;
- URL bezoeken of tools aanroepen;
- source policy wijzigen;
- e-mail of sollicitatie verzenden;
- profiel zelfstandig herschrijven.
AI-input staat tussen duidelijke datamarkers, output volgt JSON-schema, temperatuur is 0 en alle waarden worden gevalideerd/geclamped. Uitval is een normale fallback, geen pipelinefout.
- AI-status en evidence worden altijd opgeslagen in
ScoreRun.evidenceen vallen nooit terug op hard-exclusions of sourcepolicywijzigingen.