Athena — mahmoud-consultancy/archive/old-docs/SENTIOR_CRAWLING_SOURCES_PLAN.md

Sentior Crawling Sources Plan

Date: October 17, 2025 Source: https://www.sentior.com/app/sources Status: Active sources identified and planned for crawling


📊 Identified Sources (10 Active)

1. Gemeente Delft

  • Type: DAS
  • Start Date: 21-03-2016
  • End Date: 15-01-2022
  • Last Posted: 01-01-2025
  • Status: ✅ Active
  • Crawling Priority: HIGH

2. Uitvoeringsorganisatie Bedrijfsvoering Rijk

  • Type: DAS
  • Start Date: 01-07-2016
  • End Date: 31-12-2022
  • Last Posted: N/A
  • Status: ✅ Active
  • Crawling Priority: HIGH

3. VRK Huurt In

  • Type: MARKTPLAATS
  • Start Date: 24-03-2021
  • End Date: 20-01-2023
  • Last Posted: N/A
  • Status: ✅ Active
  • Crawling Priority: MEDIUM

4. Banenplein Limburg

  • Type: MARKTPLAATS
  • Start Date: 23-07-2021
  • End Date: 20-01-2023
  • Last Posted: N/A
  • Status: ✅ Active
  • Crawling Priority: MEDIUM

5. Politie

  • Type: DAS
  • Start Date: 21-03-2016
  • End Date: 22-03-2025
  • Last Posted: 18-01-2023
  • Status: ✅ Active
  • Crawling Priority: HIGH

6. Flextender

  • Type: MARKTPLAATS
  • Start Date: 05-07-2018
  • End Date: 18-01-2023
  • Last Posted: N/A
  • Status: ✅ Active
  • Crawling Priority: HIGH
  • Note: Already integrated in recruitment platform

7. Waterschap Rivierenland

  • Type: DAS
  • Start Date: 12-01-2018
  • End Date: 12-01-2019
  • Last Posted: 17-01-2023
  • Status: ✅ Active
  • Crawling Priority: MEDIUM

8. Nederlandse Publieke Omroep (NPO)

  • Type: DAS
  • Start Date: 05-07-2021
  • End Date: 04-07-2025
  • Last Posted: 17-01-2023
  • Status: ✅ Active
  • Crawling Priority: HIGH

9. Werken voor 's-Hertogenbosch

  • Type: MARKTPLAATS
  • Start Date: 05-10-2020
  • End Date: 14-01-2023
  • Last Posted: N/A
  • Status: ✅ Active
  • Crawling Priority: MEDIUM

10. VNG (Beslisteam BV)

  • Type: DAS
  • Start Date: 01-01-2017
  • End Date: 01-12-2023
  • Last Posted: 14-01-2023
  • Status: ✅ Active
  • Crawling Priority: HIGH

📋 Source Type Breakdown

DAS Sources (6 sources - 60%)

Government/Public sector job boards:

  1. Gemeente Delft
  2. Uitvoeringsorganisatie Bedrijfsvoering Rijk
  3. Politie
  4. Waterschap Rivierenland
  5. Nederlandse Publieke Omroep (NPO)
  6. VNG (Beslisteam BV)

Characteristics:

  • Structured job data
  • Standardized format (DAS protocol)
  • High-quality postings
  • Regular updates
  • API-based access likely

MARKTPLAATS Sources (4 sources - 40%)

Marketplace/Platform job boards:

  1. VRK Huurt In
  2. Banenplein Limburg
  3. Flextender (already integrated)
  4. Werken voor 's-Hertogenbosch

Characteristics:

  • Variable data quality
  • HTML scraping required
  • Less standardized format
  • May require custom parsers
  • Authentication may be needed

🎯 Crawling Strategy

Phase 1: High Priority DAS Sources (Weeks 1-2)

Goal: Crawl government/public sector sources first

  1. Politie (End: 22-03-2025)

    • Most recent end date
    • High volume expected
    • Priority: URGENT
  2. NPO (End: 04-07-2025)

    • Media/tech jobs
    • High relevance
    • Priority: HIGH
  3. Gemeente Delft

    • Municipal jobs
    • Regular postings
    • Priority: HIGH
  4. Uitvoeringsorganisatie Bedrijfsvoering Rijk

    • Central government
    • Large volume
    • Priority: HIGH
  5. VNG (Beslisteam BV)

    • Association of municipalities
    • Wide variety
    • Priority: HIGH
  6. Waterschap Rivierenland

    • Water management
    • Specialized roles
    • Priority: MEDIUM

Phase 2: MARKTPLAATS Sources (Weeks 3-4)

Goal: Add marketplace sources for broader coverage

  1. Flextender

    • Status: Already integrated ✅
    • Continue monitoring
  2. VRK Huurt In

    • Recruitment platform
    • Priority: MEDIUM
  3. Banenplein Limburg

    • Regional focus
    • Priority: LOW
  4. Werken voor 's-Hertogenbosch

    • Municipal marketplace
    • Priority: MEDIUM

🛠️ Technical Implementation Plan

DAS Sources - API Integration

Protocol: DAS (Dutch Application Service)

Implementation Approach:
- [ ] Research DAS API documentation
- [ ] Create DasScraperService (similar to FlextenderScraperService)
- [ ] Implement authentication mechanism
- [ ] Build job parser for DAS format
- [ ] Add to CrawlerController
- [ ] Schedule regular crawls

Technical Requirements:
- DAS API endpoint discovery
- Authentication credentials per source
- Rate limiting (be respectful)
- Duplicate detection
- Error handling & retry logic

MARKTPLAATS Sources - HTML Scraping

Protocol: Web Scraping (JSoup/Selenium)

Implementation Approach:
- [ ] Analyze HTML structure per source
- [ ] Create custom scraper per platform
- [ ] Implement authentication if required
- [ ] Build job detail extractors
- [ ] Handle pagination
- [ ] Add to scheduled jobs

Technical Requirements:
- OkHttpClient (already configured ✅)
- JSoup HTML parser (already available ✅)
- CSS selector mapping per source
- Cookie/session management
- User-Agent rotation
- Polite crawling (delays between requests)

📅 Crawling Schedule

Daily Crawls (High Volume Sources)

  • Politie (daily at 06:00)
  • NPO (daily at 07:00)
  • Uitvoeringsorganisatie Bedrijfsvoering Rijk (daily at 08:00)
  • Flextender (daily at 09:00) - already configured

Weekly Crawls (Medium Volume)

  • Gemeente Delft (Monday 10:00)
  • VNG (Tuesday 10:00)
  • VRK Huurt In (Wednesday 10:00)
  • Werken voor 's-Hertogenbosch (Thursday 10:00)

Bi-Weekly Crawls (Low Volume)

  • Waterschap Rivierenland (1st & 15th at 11:00)
  • Banenplein Limburg (1st & 15th at 12:00)

🔧 Implementation Checklist

Infrastructure (Already Done ✅)

  • [x] OkHttpClient bean configured
  • [x] FlextenderScraperService working
  • [x] CrawlJob entity and repository
  • [x] Job deduplication logic
  • [x] Error handling framework

New Components Needed

  • [ ] DasApiClient service
  • [ ] DasJobParser utility
  • [ ] VrkHuurtInScraper service
  • [ ] BanenpleinScraper service
  • [ ] PolitieScraper service (DAS)
  • [ ] NpoScraper service (DAS)
  • [ ] GemeenteDelftScraper service (DAS)
  • [ ] WaterschapScraper service (DAS)
  • [ ] VngScraper service (DAS)
  • [ ] DenBoschScraper service

Configuration Needed

# application.yml additions
crawling:
  enabled: true
  schedule:
    enabled: true

  # DAS Sources
  das:
    enabled: true
    api-base-url: "https://das.api.endpoint" # To be discovered
    authentication:
      method: "API_KEY" # or OAUTH2

  # Individual source configs
  sources:
    politie:
      enabled: true
      type: DAS
      schedule: "0 0 6 * * *" # Daily at 6 AM

    npo:
      enabled: true
      type: DAS
      schedule: "0 0 7 * * *" # Daily at 7 AM

    gemeente-delft:
      enabled: true
      type: DAS
      schedule: "0 0 10 * * MON" # Monday at 10 AM

    # ... etc for all sources

📊 Expected Results

Job Volume Estimates

| Source | Type | Estimated Jobs/Week | Priority | |--------|------|---------------------|----------| | Politie | DAS | 50-100 | HIGH | | NPO | DAS | 20-40 | HIGH | | Uitvoeringsorganisatie BR | DAS | 30-60 | HIGH | | Gemeente Delft | DAS | 10-20 | MEDIUM | | VNG | DAS | 15-30 | MEDIUM | | Flextender | MARKT | 40-80 | HIGH | | VRK Huurt In | MARKT | 15-25 | MEDIUM | | Waterschap | DAS | 5-10 | LOW | | Banenplein Limburg | MARKT | 10-15 | LOW | | Werken 's-Hertogenbosch | MARKT | 10-20 | MEDIUM | | TOTAL | - | 205-400/week | - |


⚠️ Considerations & Risks

Legal & Compliance

  • ✅ Verify robots.txt compliance for each source
  • ✅ Respect rate limits (1-2 requests/second max)
  • ✅ Include User-Agent with contact info
  • ✅ Honor noindex/nofollow directives
  • ✅ Terms of service review per source

Technical Challenges

  • 🔍 DAS API discovery - May need documentation/credentials
  • 🔍 Authentication - Different per source
  • 🔍 Data format variations - Need custom parsers
  • 🔍 Anti-scraping measures - May need to handle
  • 🔍 Job deduplication - Same job on multiple platforms

Operational

  • 💾 Storage - 200-400 jobs/week = ~20K jobs/year
  • 🔄 Updates - Need to track changes to existing jobs
  • 📧 Notifications - Alert on crawl failures
  • 📊 Monitoring - Track success rates per source

🚀 Implementation Timeline

Week 1: DAS Framework

  • Day 1-2: Research DAS API protocol
  • Day 3: Create DasApiClient base service
  • Day 4: Implement Politie scraper (highest priority)
  • Day 5: Testing & validation

Week 2: High Priority DAS Sources

  • Day 1: NPO scraper
  • Day 2: Uitvoeringsorganisatie BR scraper
  • Day 3: Gemeente Delft scraper
  • Day 4: VNG scraper
  • Day 5: Integration testing

Week 3: MARKTPLAATS Sources

  • Day 1-2: VRK Huurt In scraper
  • Day 3: Werken 's-Hertogenbosch scraper
  • Day 4: Banenplein Limburg scraper
  • Day 5: Testing & optimization

Week 4: Polish & Deploy

  • Day 1: Waterschap Rivierenland scraper
  • Day 2: Scheduling & automation
  • Day 3: Monitoring & alerting
  • Day 4: Documentation
  • Day 5: Production deployment

📝 Next Actions

Immediate (This Week)

  1. Research DAS Protocol

    • Find official documentation
    • Identify authentication requirements
    • Understand data format
  2. Prioritize Politie Integration

    • End date approaching (22-03-2025)
    • High job volume
    • Government source (reliable)
  3. Update Recruitment Platform

    • Add DasApiClient configuration
    • Create base DAS scraper service
    • Test with one source (Politie)

Short Term (Next 2 Weeks)

  • Implement all 6 DAS sources
  • Configure scheduling
  • Set up monitoring
  • Test deduplication

Medium Term (Month 2)

  • Add MARKTPLAATS sources
  • Optimize crawling efficiency
  • Add job update tracking
  • Implement change detection

✅ Sources Summary

Total Sources: 10

  • DAS Sources: 6 (60%)
  • MARKTPLAATS Sources: 4 (40%)

Status:

  • ✅ All 10 sources are Active
  • ✅ Flextender already integrated
  • ⏳ 9 sources ready for implementation
  • 🎯 Estimated 205-400 jobs/week when complete

Priority Order:

  1. Politie (DAS) - URGENT
  2. NPO (DAS) - HIGH
  3. Uitvoeringsorganisatie BR (DAS) - HIGH
  4. Flextender (MARKT) - Already done ✅
  5. Gemeente Delft (DAS) - MEDIUM
  6. VNG (DAS) - MEDIUM
  7. VRK Huurt In (MARKT) - MEDIUM
  8. Werken 's-Hertogenbosch (MARKT) - MEDIUM
  9. Waterschap Rivierenland (DAS) - LOW
  10. Banenplein Limburg (MARKT) - LOW

🔗 Integration with Recruitment Platform

Current Status

  • ✅ FlextenderScraperService implemented
  • ✅ OkHttpClient configured
  • ✅ CrawlJob entity and repository
  • ✅ Job deduplication logic
  • ✅ Scheduled crawling framework

Required Additions

  1. DasApiClient - Base service for DAS protocol
  2. Individual scrapers - One per source (9 new services)
  3. Scheduler configuration - Cron expressions per source
  4. Monitoring dashboard - Track crawl success rates
  5. Alert system - Notify on failures

Architecture

CrawlerController
├── FlextenderScraperService ✅
├── DasApiClient (new)
│   ├── PolitieScraperService
│   ├── NpoScraperService
│   ├── GemeenteDelftScraperService
│   ├── UitvoeringsorgScraperService
│   ├── VngScraperService
│   └── WaterschapScraperService
└── MarktplaatsScrapers
    ├── VrkHuurtInScraperService
    ├── BanenpleinScraperService
    └── DenBoschScraperService

📊 Expected Impact

Job Availability

  • Current: Flextender only (~40-80 jobs/week)
  • After Phase 1 (DAS): ~155-280 jobs/week (+194% increase)
  • After Phase 2 (All): ~205-400 jobs/week (+312% increase)

Source Diversity

  • Current: 1 source (Flextender)
  • After Implementation: 10 sources
  • Benefit: Better coverage, reduced dependency, more opportunities

Candidate Value

  • More job options
  • Wider geographic coverage
  • Multiple sectors (government, tech, media, water management)
  • Better match probability

🎯 Recommendations

Short-Term (This Month)

  1. Research DAS API - Understand protocol and auth
  2. Implement Politie scraper - Highest priority due to end date
  3. Test with one DAS source - Validate approach
  4. Document learnings - Create DAS integration guide

Medium-Term (Next 3 Months)

  1. Complete all DAS sources - 6 scrapers
  2. Add MARKTPLAATS sources - 3 additional scrapers
  3. Optimize scheduling - Balance load and freshness
  4. Monitor & iterate - Improve based on results

Long-Term (6+ Months)

  1. Add more sources - Expand beyond these 10
  2. Machine learning - Job categorization, quality scoring
  3. Source analytics - Track which sources yield best candidates
  4. Automated testing - Detect when sources change structure

Document Created: October 17, 2025 Status: Planning complete, ready for implementation Next Step: Research DAS API protocol and implement Politie scraper Expected Timeline: 4 weeks to complete all 10 sources

Reacties

Nog geen reacties