Data Model Overzicht

Simpele uitleg van hoe we vacature data opslaan en organiseren.

ERD DPP-UNI-1 v1.5

Voor technische details, zie: /docs/handboek/techniek/data-model


Wat is het Data Model?

Een data model is een afspraak over hoe we informatie opslaan. Net zoals een formulier met vaste velden.

Zonder AfspraakMet Data Model
Yacht zegt: "salaris"Iedereen zegt: "contract_min_rate_eur"
Flextender zegt: "tarief"
Salesforce zegt: "rate"

Resultaat: Alle vacatures zien er hetzelfde uit, ongeacht waar ze vandaan komen.


Waarom Doen We Dit?

ProbleemOplossing
Elke DAS heeft eigen formaatWij vertalen naar 1 standaard
Data vergelijken is lastigAlle vacatures hebben dezelfde structuur
Dubbele vacatures herkennenUnieke IDs per platform
Zoeken kost tijdVoorspelbare veldnamen

Hoe Werkt Het?

Simpel in 3 stappen:

StapWat Gebeurt Er
1. OphalenScraper haalt vacature op van DAS (Yacht, Flextender, etc.)
2. VertalenData wordt omgezet naar ons schema (standaard formaat)
3. OpslaanVacature gaat in Supabase database
DAS Bronnen          Ons Systeem           Database
-----------          -----------           --------
  Yacht     \
  Flextender ---->   DPP Schema   ---->   Supabase
  STRIIVE   /        (vertaling)          (opslag)
  Maandag  /

Visueel Overzicht

Het onderstaande diagram toont de hoofdtabellen en hun relaties.

┌─────────────┐         ┌──────────────┐         ┌─────────────┐
│  Platform   │────────▶│   Vacature   │◀────────│ Standplaats │
│  (DAS bron) │         │    (job)     │         │             │
└─────────────┘         └──────┬───────┘         └──────┬──────┘
                               │                        │
                               │                        ▼
                               │                 ┌─────────────┐
                               │                 │   Contact   │
                               │                 │   persoon   │
                               │                 └─────────────┘
                               ▼
                        ┌──────────────┐
                        │ Opdrachtgever│
                        │(headquarters)│
                        └──────────────┘

De Hoofdtabellen

Vacature (job)

De centrale tabel waar alle vacature-informatie wordt opgeslagen.

Technische referentie: job tabel

InformatieOmschrijvingVoorbeeld
TitelFunctienaamSenior Java Developer
OmschrijvingWat ga je doenVolledige opdracht tekst
EisenWaar moet je aan voldoenHBO, 5 jaar ervaring
UurtariefWat je verdient75 - 95 per uur
DuurContractlengte6 maanden
Uren per weekWerkuren32-36 uur
VerlengingVerlengingsmogelijkhedenJa, 2x 3 maanden
SluitingsdatumDeadline voor aanmelding25-01-2026 14:00

Platform

De DAS-platformen waarvan vacatures worden opgehaald.

Technische referentie: platform tabel, platform_id en platform_job_id velden op job

VeldOmschrijvingVoorbeeld
NaamPlatform naamSTRIIVE
TypeSoort platformDAS (Dynamisch Aankoop Systeem)
WebsitePlatform URLhttps://striive.com
Platform Job IDOriginele vacature IDVAC-2026-12345

Actieve Platformen:

PlatformWebsite
STRIIVEstriive.com
Flextenderflextender.nl
Yachtyacht.nl
Maandagmaandag.com

Opdrachtgever (headquarters)

De organisatie die de opdracht uitschrijft.

Technische referentie: headquarters tabel

VeldOmschrijvingVoorbeeld
NaamOrganisatienaamGemeente Utrecht
AdresVestigingsadresStadhuisplein 1, 3511 AA Utrecht
WebsiteOrganisatie websiteutrecht.nl
TypeSoort organisatieGemeente
SectorOrganisatie sectorPubliek

Standplaats (work_location)

De locatie waar de kandidaat gaat werken.

Technische referentie: work_location tabel met coordinates JSONB veld

VeldOmschrijvingVoorbeeld
OpdrachtgeverGekoppelde organisatieGemeente Utrecht
ContactContactpersoonJan Jansen
CoordinatenGPS positie{"lat": 52.0907, "lng": 5.1214}

Contactpersoon (contact)

Het aanspreekpunt bij de opdrachtgever voor vragen over de opdracht.

Technische referentie: contact tabel (aparte tabel voor herbruikbaarheid en CRM)

VeldOmschrijvingVoorbeeld
NaamVoor- en achternaamJan Jansen
EmailE-mailadresjan.jansen@gemeente.nl
TelefoonTelefoonnummer030-286 0000

Documenten (job_document)

Bijlagen en bronbestanden bij een vacature.

Technische referentie: job_document tabel (1 vacature kan meerdere documenten hebben)

Document TypeOmschrijving
source_htmlOriginele webpagina
tender_pdfAanbestedingsdocument
annexBijlagen met aanvullende eisen
termsAlgemene voorwaarden

Contract Types (job_contract_type)

Hoe de kandidaat kan worden ingehuurd. Een vacature kan meerdere opties hebben.

Technische referentie: job_contract_type junction tabel (M:M relatie met contract_type)

TypeOmschrijving
ZZPZelfstandige zonder personeel
DetacheringVia payroll organisatie
PayrollPayroll constructie
InterimTijdelijke management positie

Keuzelijsten

Sommige velden hebben vaste opties. Dit zorgt voor consistentie in de data.

Technische referentie: Reference Tables in data-model.md

Regio

Nederlandse provincies waar opdrachten plaatsvinden.

Technische referentie: region tabel

Regio
Noord-Holland
Zuid-Holland
Utrecht
Gelderland
Noord-Brabant
Overijssel
Limburg
Flevoland
Groningen
Friesland
Drenthe
Zeeland

Sector

Vakgebieden waarin opdrachten vallen.

Technische referentie: sector tabel

Sector
ICT en Automatisering
Financien en Economische zaken
Beleid en Bestuurlijke zaken
Communicatie en Voorlichting
Juridisch
HR en Personeel

Status

Waar de vacature zich bevindt in het proces.

Technische referentie: job_status_enum

StatusBetekenis
draftConcept - nog niet gepubliceerd
publishedGepubliceerd - live op website
closedGesloten - deadline verstreken
archivedGearchiveerd - niet meer actief

Organisatie Type

Soort opdrachtgever.

Technische referentie: org_type tabel met org_sector_enum

SectorType
PubliekGemeente
PubliekWaterschap
PubliekProvincie
PubliekRijksoverheid
PubliekSemi-overheid
Non-profitZorginstelling
Non-profitOnderwijsinstelling

Koppelingen met Andere Systemen

Vacatures worden automatisch doorgezet naar andere systemen.

Technische referentie: integration_frontend, integration_system, newsletter_job tabellen

SysteemWat Gebeurt ErTechnische Tabel
Website (WordPress)Vacatures publicerenintegration_frontend
Nieuwsbrief (VBout)Vacatures mailennewsletter_job
TESSKandidaat matchingintegration_system

Hoe Data Stroomt

Van bron naar publicatie in vijf stappen.

┌──────────────────────────────────────────────────────────────────┐
│                         DATA FLOW                                │
├──────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌─────────┐  ┌──────────┐  ┌─────────┐  ┌─────────┐            │
│  │ STRIIVE │  │Flextender│  │  Yacht  │  │ Maandag │            │
│  └────┬────┘  └────┬─────┘  └────┬────┘  └────┬────┘            │
│       │            │             │            │                  │
│       └────────────┴─────────────┴────────────┘                  │
│                          │                                       │
│                          ▼                                       │
│                   ┌─────────────┐                                │
│                   │  Scrapers   │  Stap 1: Ophalen               │
│                   └──────┬──────┘                                │
│                          │                                       │
│                          ▼                                       │
│                   ┌─────────────┐                                │
│                   │  Vertaling  │  Stap 2: Standaardiseren       │
│                   │  (Schema)   │                                │
│                   └──────┬──────┘                                │
│                          │                                       │
│                          ▼                                       │
│                   ┌─────────────┐                                │
│                   │  Supabase   │  Stap 3: Opslaan               │
│                   │ (Database)  │                                │
│                   └──────┬──────┘                                │
│                          │                                       │
│          ┌───────────────┼───────────────┐                       │
│          ▼               ▼               ▼                       │
│   ┌─────────────┐ ┌─────────────┐ ┌─────────────┐               │
│   │  Website    │ │ Nieuwsbrief │ │    TESS     │               │
│   │ (WordPress) │ │   (VBout)   │ │  (Matching) │               │
│   └─────────────┘ └─────────────┘ └─────────────┘               │
│     Stap 4: Publiceren                                          │
│                                                                  │
└──────────────────────────────────────────────────────────────────┘

Wat Betekent Dit Voor Jou?

Als je...Dan...
Vacatures zoektAlle vacatures hebben dezelfde velden, makkelijk filteren
Een bug meldtGebruik de juiste veldnamen (zie tabellen hierboven)
Data exporteertOutput is altijd consistent
Data controleertRefereer naar technische veldnamen voor precisie

Samenvatting

OnderwerpKernpunt
Data ModelGestructureerde opslag van alle vacature informatie
StandaardisatieAlle DAS bronnen vertaald naar een formaat
Platform tabelBijhouden waar elke vacature vandaan komt
HeadquartersOpdrachtgever informatie centraal opgeslagen
ContactContactpersonen apart voor herbruikbaarheid
DocumentenMeerdere bijlagen per vacature mogelijk
Contract TypesMeerdere opties per vacature (M:M relatie)
IntegratiesAutomatische koppeling met website, nieuwsbrief, TESS

Vragen?

Neem contact op met het Engineering team.

Gerelateerde Documentatie:

DocumentInhoud
Data Model (technisch)Volledige technische specificatie v1.5
Uitleg v1.5 backoffice/frontofficeControlelijst en open punten