6.2 KiB
Bron onboarden
Een nieuwe bron wordt nooit direct als onbeperkt actief beschouwd. Gebruik het traject candidate → trial → active en ga bij veiligheids- of kwaliteitsproblemen naar quarantined.
Toegestane broncategorieën
Voorkeursvolgorde:
- openbare carrièrepagina van de feitelijke werkgever;
- openbare, door de werkgever bedoelde ATS-vacaturepagina;
- expliciete RSS/Atom-feed of sitemap met vacatures;
- vacaturemail die de gebruiker zelf heeft geactiveerd;
- handmatige browserimport door de gebruiker.
Niet onboarden zonder expliciete, aantoonbare toestemming:
- ingelogde zoekresultaten of profielpagina's;
- pagina's achter CAPTCHA, anti-bot challenge of toegangscontrole;
- denylistplatformen via directe crawling;
- verborgen/private endpoints die alleen door reverse engineering zijn gevonden;
- bronnen waarvan robots/voorwaarden of technische signalen automatisering verbieden.
Reviewchecklist
Leg per bron vast:
- naam, bronsoort, hoofddomein en exacte start-URL;
- eigenaar/eindwerkgever en eventuele ATS-provider;
- publieke toegankelijkheid zonder login;
- datum en samenvatting van robots- en voorwaardenreview;
- toegestane paden en eventuele uitgesloten paden;
- parserstrategie: JSON-LD, RSS, gespecialiseerd ATS of generieke HTML;
- verwachte frequentie en minimale interval;
- maximaal documentvolume en paginatie;
- welke velden daadwerkelijk aanwezig zijn;
- retentiebehoefte en mogelijke persoonsgegevens;
- contact-/user-agentinformatie indien passend;
- rollback/quarantainecriterium.
robots.txt alleen is geen volledige juridische toestemming, en afwezigheid ervan is geen automatische toestemming. Het technische bronbeleid ondersteunt een conservatieve beslissing; de beheerder blijft verantwoordelijk voor de bronreview.
Candidate aanmaken
Gebruik Django admin of seed_sources met een gecontroleerd YAML-record. Begin met:
name: Voorbeeld Werkgever
source_type: employer
base_url: https://careers.example.org/jobs
status: candidate
policy: review
parser_key: auto
strict_mode: true
honor_robots: true
crawl_interval_minutes: 720
minimum_interval_seconds: 30
max_concurrency: 1
Zet policy: allow pas na review. Een onbekende bron blijft in strict mode zonder fetch.
Fixture vóór live request
Bewaar een gesaneerd voorbeeld onder fixtures/pages, fixtures/feeds of fixtures/emails. Verwijder trackingtokens, persoonsgegevens en niet-noodzakelijke volledige teksten. Schrijf tests voor:
- normale vacature;
- ontbrekende optionele velden;
- nul vacatures;
- gewijzigde markup of meerdere jobs;
- kwaadaardige HTML en onveilige links;
- idempotente replay;
- parserconfidence en waarschuwingen.
Trialrun
- Zet bron op
trialenpolicy=allow. - Voer één handmatige run uit via de retryknop of Celerytask.
- Controleer status, final URL, bytes, parser, warnings en tellers.
- Open alleen gesaniteerde jobweergave; vergelijk steekproefsgewijs met de publieke bron.
- Controleer canonieke URL, werkgever, locatie, datum, verloopdatum, taal en duplicaten.
- Verifieer dat redirectdoelen, rate limit en conditional requests correct zijn.
- Laat minimaal twee geplande cycli goed verlopen vóór promotie naar
active.
Automatische quarantainecriteria
Een bron moet worden gepauzeerd of in quarantaine gezet bij:
- redirect naar denylist, login, private adresruimte of onverwacht domein;
- herhaalde 401/403/429, CAPTCHA of anti-botpagina;
- contenttype/grootte buiten beleid;
- parseroutput met plotseling nul jobs terwijl de bron zichtbaar jobs bevat;
- abnormale volumestijging of duplicaatstorm;
- HTML-sanitization/securityfout;
- voorwaardenwijziging of verlopen bronreview;
- opeenvolgende fouten boven de vastgelegde drempel.
Gespecialiseerde ATS-adapter
Voeg alleen een adapter toe wanneer meerdere bronnen hetzelfde stabiele publieke formaat gebruiken of de generieke adapter onvoldoende bewijs levert. De adapter:
- krijgt geen credentials;
- gebruikt uitsluitend gedocumenteerde publieke jobdata of publieke pagina's;
- implementeert het interne adaptercontract;
- heeft providerfixtures en contracttests;
- valt veilig terug zonder globale pipeline te breken;
- documenteert paginatie, sluitingssignalen en rate limits.
Bron verwijderen
Pauzeer eerst. Behoud canonieke vacatures en herkomst zolang productretentie dat vereist; verwijder niet blind clusters die ook andere aliassen hebben. Verwijder raw documents volgens retentie, trek de policy in en noteer de reden en datum.
Reviewbeleid bij bronbeoordeling
- Een bron mag alleen automatisch gefetcht worden wanneer een actuele
SourcePolicyReviewbestaat met geldige reden, scope en vervaldatum. - Terms review blijft menselijk, niet automatisch door AI of heuristiek.
- Bij ontbrekende of verlopen review of bij expliciet
pause/denybesluit blokkeert de taakuitvoering.
Handmatige import in de interface
Voor uitzonderlijke vacatures kan de beheerder handmatig importeren via de bronpagina:
- navigeer naar
Brongezondheiden gebruik het "Handmatige import" formulier; - gebruik de bookmarklet om de huidige pagina-URL te vullen in
source_url; - of plak direct relevante vacaturetekst in het tekstveld wanneer fetch niet is toegestaan.
De bookmarklet stuurt alleen source_url naar de import-URL, zonder secret of broninhoud.
Na import toont de bronlijst:
- de gekozen modus (
urlofpaste); - bron-ID/bron-URL;
- aantallen herkend, nieuw en duplicaat;
- waarschuwingen;
- links naar vacaturedetail voor direct vervolg.
Providerdetails (VR-106)
Voor het onboarden van publieke ATS-bronnen moet het bronrecord minimaal een van de volgende providerspecificaties gebruiken:
- Greenhouse (
*.greenhouse.io/*.boards.greenhouse.io) — max 15 requests/min, alleen publiek toegankelijke jobdata. - Lever (
jobs.lever.co) — max 60 requests/min, alleenjobs.lever.coen officiële publieke endpoints. - Recruitee (
*.recruitee.com) — max 60 requests/min, geen login/partner endpoint. - SmartRecruiters (
*.smartrecruiters.com) — max 30 requests/min, alleen publieke vacaturepagina/feeds. - Workable (
apply.workable.com) — max 30 requests/min, alleen publieke vacaturepagina/feeds.
Bij twijfel altijd op review blijven en eerst via een trialrun met gesloten evaluatiecriteria (gesloten job, lege joblijst, markeringswijziging) valideren.