lemma 0.8.20

A language that means business.
Documentation
spec money

data salary: quantity
  -> unit eur 1.00
  -> decimals 2
  -> minimum 0 eur


spec kennismigrant 2024-01-01
"""
Dutch Highly Skilled Migrant (Kennismigrant) salary thresholds — 2024.

The IND publishes updated salary criteria every January. A candidate
must earn at least the threshold for their age bracket to qualify.
Source: IND Inkomensnormen 2024.
"""

uses money

data salary:                money.salary
data threshold_age_30_plus: 5_008 eur
data threshold_under_30:    3_672 eur
data application_fee:       345 eur

rule min_annual_salary_30_plus:
  threshold_age_30_plus * 12

rule min_annual_salary_under_30: threshold_under_30 * 12


spec kennismigrant 2025-01-01
"""
Dutch Highly Skilled Migrant (Kennismigrant) salary thresholds — 2025.

Updated thresholds effective 1 January 2025.
Source: IND Inkomensnormen 2025.
"""

uses money

data salary:                money.salary
data threshold_age_30_plus: 5_331 eur
data threshold_under_30:    3_909 eur
data application_fee:       365 eur

rule min_annual_salary_30_plus:
  threshold_age_30_plus * 12

rule min_annual_salary_under_30: threshold_under_30 * 12


spec kennismigrant_aanvraag 2024-01-01
"""
Kennismigrant Visa Eligibility Check

Determines whether an applicant meets the salary requirement for the
Dutch highly skilled migrant visa. The applicable thresholds are
resolved temporally from the kennismigrant spec — the
version active at evaluation time is used automatically.
"""

uses money
uses kennismigrant

data salary: money.salary
data applicant_age: number
  -> minimum 18
  -> maximum 67

data gross_monthly_salary: salary

rule eligible: meets_salary_requirement

rule required_monthly_salary:
  kennismigrant.threshold_age_30_plus
  unless applicant_age < 30
    then kennismigrant.threshold_under_30

rule meets_salary_requirement:
  gross_monthly_salary >= required_monthly_salary

rule salary_surplus:
  gross_monthly_salary - required_monthly_salary

rule application_fee: kennismigrant.application_fee