Data Model Overzicht
Simpele uitleg van hoe we vacature data opslaan en organiseren.

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 Afspraak | Met 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?
| Probleem | Oplossing |
|---|---|
| Elke DAS heeft eigen formaat | Wij vertalen naar 1 standaard |
| Data vergelijken is lastig | Alle vacatures hebben dezelfde structuur |
| Dubbele vacatures herkennen | Unieke IDs per platform |
| Zoeken kost tijd | Voorspelbare veldnamen |
Hoe Werkt Het?
Simpel in 3 stappen:
| Stap | Wat Gebeurt Er |
|---|---|
| 1. Ophalen | Scraper haalt vacature op van DAS (Yacht, Flextender, etc.) |
| 2. Vertalen | Data wordt omgezet naar ons schema (standaard formaat) |
| 3. Opslaan | Vacature 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
| Informatie | Omschrijving | Voorbeeld |
|---|---|---|
| Titel | Functienaam | Senior Java Developer |
| Omschrijving | Wat ga je doen | Volledige opdracht tekst |
| Eisen | Waar moet je aan voldoen | HBO, 5 jaar ervaring |
| Uurtarief | Wat je verdient | 75 - 95 per uur |
| Duur | Contractlengte | 6 maanden |
| Uren per week | Werkuren | 32-36 uur |
| Verlenging | Verlengingsmogelijkheden | Ja, 2x 3 maanden |
| Sluitingsdatum | Deadline voor aanmelding | 25-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
| Veld | Omschrijving | Voorbeeld |
|---|---|---|
| Naam | Platform naam | STRIIVE |
| Type | Soort platform | DAS (Dynamisch Aankoop Systeem) |
| Website | Platform URL | https://striive.com |
| Platform Job ID | Originele vacature ID | VAC-2026-12345 |
Actieve Platformen:
| Platform | Website |
|---|---|
| STRIIVE | striive.com |
| Flextender | flextender.nl |
| Yacht | yacht.nl |
| Maandag | maandag.com |
Opdrachtgever (headquarters)
De organisatie die de opdracht uitschrijft.
Technische referentie: headquarters tabel
| Veld | Omschrijving | Voorbeeld |
|---|---|---|
| Naam | Organisatienaam | Gemeente Utrecht |
| Adres | Vestigingsadres | Stadhuisplein 1, 3511 AA Utrecht |
| Website | Organisatie website | utrecht.nl |
| Type | Soort organisatie | Gemeente |
| Sector | Organisatie sector | Publiek |
Standplaats (work_location)
De locatie waar de kandidaat gaat werken.
Technische referentie: work_location tabel met coordinates JSONB veld
| Veld | Omschrijving | Voorbeeld |
|---|---|---|
| Opdrachtgever | Gekoppelde organisatie | Gemeente Utrecht |
| Contact | Contactpersoon | Jan Jansen |
| Coordinaten | GPS 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)
| Veld | Omschrijving | Voorbeeld |
|---|---|---|
| Naam | Voor- en achternaam | Jan Jansen |
| E-mailadres | jan.jansen@gemeente.nl | |
| Telefoon | Telefoonnummer | 030-286 0000 |
Documenten (job_document)
Bijlagen en bronbestanden bij een vacature.
Technische referentie: job_document tabel (1 vacature kan meerdere documenten hebben)
| Document Type | Omschrijving |
|---|---|
| source_html | Originele webpagina |
| tender_pdf | Aanbestedingsdocument |
| annex | Bijlagen met aanvullende eisen |
| terms | Algemene 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)
| Type | Omschrijving |
|---|---|
| ZZP | Zelfstandige zonder personeel |
| Detachering | Via payroll organisatie |
| Payroll | Payroll constructie |
| Interim | Tijdelijke 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
| Status | Betekenis |
|---|---|
| draft | Concept - nog niet gepubliceerd |
| published | Gepubliceerd - live op website |
| closed | Gesloten - deadline verstreken |
| archived | Gearchiveerd - niet meer actief |
Organisatie Type
Soort opdrachtgever.
Technische referentie: org_type tabel met org_sector_enum
| Sector | Type |
|---|---|
| Publiek | Gemeente |
| Publiek | Waterschap |
| Publiek | Provincie |
| Publiek | Rijksoverheid |
| Publiek | Semi-overheid |
| Non-profit | Zorginstelling |
| Non-profit | Onderwijsinstelling |
Koppelingen met Andere Systemen
Vacatures worden automatisch doorgezet naar andere systemen.
Technische referentie: integration_frontend, integration_system, newsletter_job tabellen
| Systeem | Wat Gebeurt Er | Technische Tabel |
|---|---|---|
| Website (WordPress) | Vacatures publiceren | integration_frontend |
| Nieuwsbrief (VBout) | Vacatures mailen | newsletter_job |
| TESS | Kandidaat matching | integration_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 zoekt | Alle vacatures hebben dezelfde velden, makkelijk filteren |
| Een bug meldt | Gebruik de juiste veldnamen (zie tabellen hierboven) |
| Data exporteert | Output is altijd consistent |
| Data controleert | Refereer naar technische veldnamen voor precisie |
Samenvatting
| Onderwerp | Kernpunt |
|---|---|
| Data Model | Gestructureerde opslag van alle vacature informatie |
| Standaardisatie | Alle DAS bronnen vertaald naar een formaat |
| Platform tabel | Bijhouden waar elke vacature vandaan komt |
| Headquarters | Opdrachtgever informatie centraal opgeslagen |
| Contact | Contactpersonen apart voor herbruikbaarheid |
| Documenten | Meerdere bijlagen per vacature mogelijk |
| Contract Types | Meerdere opties per vacature (M:M relatie) |
| Integraties | Automatische koppeling met website, nieuwsbrief, TESS |
Vragen?
Neem contact op met het Engineering team.
Gerelateerde Documentatie:
| Document | Inhoud |
|---|---|
| Data Model (technisch) | Volledige technische specificatie v1.5 |
| Uitleg v1.5 backoffice/frontoffice | Controlelijst en open punten |