NL 1:1 population synthesis QA cycle
Country-specific layer for synthetic people in households, dwellings, real building stock where available, hidden-population overlays, and work/school assignment evidence.
Board: synthestat-population-qa · Tenant: synthestat · Country: NL · Overall status: running
Ideal-country quality criteria: impossible 1:1 benchmark
This is the common gold-standard benchmark for an ideal country. It is intentionally impossible to fully satisfy: complete success would mean a 1:1 replica of the real population where every person, household, dwelling, attribute, and assignment is exactly represented. The QA page uses it as an asymptote and gap taxonomy, not as a release promise.
Apply this same rubric to this country’s latest run, then report which needs are measured, constrained, modelled, unavailable, or blocked.
| Need | Unachievable ideal | QA evidence we require instead | Why perfection cannot be achieved |
|---|---|---|---|
| Complete de jure resident coverage | Every real resident represented exactly once in the right country, municipality, small area, household, and dwelling. | Synthetic person count equals official population at all enforced geographies; no unexplained duplicate, missing, or out-of-universe people. | A true 1:1 resident list is a confidential population register and changes continuously; Synthestat can only match official aggregates and declared source universes. |
| Complete attribute truth | Each synthetic person has the same age, sex, household role, education, occupation, industry, origin, health proxy, income proxy, and lifecycle state as the corresponding real person. | Published marginal and cross-tab constraints pass within HARD/FIRM/SOFT tolerances; modelled fields carry uncertainty and measured/constrained/modelled provenance. | Official releases do not expose a complete individual joint distribution, and many attributes are survey-derived, lagged, suppressed, or unavailable at fine geography. |
| Perfect household and family structure | Every household contains the exact real members and relationships, including multi-generation, partnership, child, shared, institutional, and edge-case arrangements. | Household totals, household-type distributions, age/sex/role consistency, fertility/child constraints, and structural invariants pass with explicit residuals. | Household membership is sensitive microdata; public sources usually expose only aggregate household/family tables and partial cross-tabs. |
| Exact dwelling and building grounding | Every household is assigned to its real dwelling and building with exact occupancy, vacancy, dwelling type, floor area, tenure, and address-level geography. | Dwelling/building capacity checks pass; vacancy/second-home/institutional dwellings are represented or explicitly unavailable; building links have source provenance. | Many countries lack open address-level registers; dwelling occupancy is confidential and time-varying. |
| Complete de facto and hidden-population overlays | Homeless, undocumented, refugees, students away from home, seasonal, institutional, tourists, and daytime populations are all represented with exact location and timing. | Overlay layers use interval estimates, source-specific quality flags, and never silently modify de jure HARD constraints. | Hidden populations are partly unobserved by definition; ethical/privacy constraints forbid exact person-level labels. |
| Exact school, workplace, facility, and mobility assignment | Every person is assigned to the real school, workplace, care provider, commute, and daily activity chain they use. | Assignment layers use official registers/OD flows where available; modelled assignments are flagged and validated only against aggregate flows/capacities. | Operational assignments are usually protected registers or dynamic behavioural data; Phase 1 must not imply they are known. |
| Full joint-distribution realism | The full multivariate joint distribution is identical to reality across all attributes, households, geography, and rare subgroups. | High-priority marginals/cross-tabs pass; sparse zones and prior-dominated attributes are clearly marked with quality tiers and credible intervals. | The joint distribution is non-identifiable from published marginals; IPF/BN/hierarchical pooling choose plausible distributions, not truth. |
| Zero uncertainty and zero lag | All values are current today and known without error. | Every output records reference period, retrieval timestamp, lag, confidence, uncertainty bounds, and degradation decisions. | Official statistics are lagged, revised, sampled, suppressed, and harmonized after collection. |
| Privacy-safe yet maximally detailed release | The system releases maximum useful detail while creating zero re-identification risk. | Release mode, k-anonymity/cell safeguards, perturbation/aggregation policy, and sensitive-field treatment are explicit. | Fine-area synthetic microdata can still create structurally unique records; synthetic does not mean anonymous. |
| Perfect reproducibility and auditability | Any user can trace every output record to exact source snapshots, transformations, constraints, relaxations, seeds, and code versions. | Run manifests, source provenance, checksums, frozen extracts, seeds, versioned crosswalks, validation reports, and relaxation logs are complete. | This is approachable but never final: source portals, classifications, geography, and code keep changing, so audits must be continuously renewed. |
Population output status
| People | Target population | National coverage | Absolute shortfall | Households | Dwellings | Houses/buildings | Max marginal deviation | HARD status | Run |
|---|---|---|---|---|---|---|---|---|---|
| 5 | — | — | — | 5 | 5 | 4 | 0.00% | pass_exact | nl_population_review_cycle1_fa78aabf_seed420987 |
Deviation is the maximum absolute relative error across collected HARD/FIRM/SOFT marginal constraints in the latest review bundle. GUIDE/INFORMATIONAL priors are excluded. National target/coverage are read from build_manifest.json when available and override any visual impression of completion.
Datasets and distributions
Lists come from the latest run bundle: source_provenance.json, distribution_diagnostics.json, and build_manifest.json.
Summary
| Datasets used | 7 |
|---|---|
| Distributions available | 39 |
| Constraints/distributions used in synthesis | 27 |
| Constraint types | FIRM: 7, GUIDE: 18, HARD: 3, SOFT: 11 |
| Dataset variants | current: 1, literature: 11, robust: 27 |
| Finest-geography status | constrained: 27, measured: 1, modelled: 11 |
Source gaps
- The current Netherlands live path is sample-download capable, but it is still a probe-and-normalization bridge rather than a full-country CBS extraction pipeline.
- Open BAG/PDOK building geometry and dwelling records are still handled through the seeded slice rather than a full bulk XML-GML ingestion path.
- Occupation and industry detail still need deeper registry and model integration beyond the current CBS demographic bridge.
Datasets used
| Dataset/source ID |
|---|
NL_BAG_buildings |
NL_CBS_BUURT_POPULATION |
NL_CBS_DEMOGRAPHICS_MARITAL |
NL_CBS_HOUSEHOLDS |
NL_CBS_INCOME |
NL_CBS_ORIGIN |
NL_PDOK_buurt_boundaries |
Best source by distribution family
| Distribution family | Dataset/source ID |
|---|---|
D01_demographics_finest | NL_CBS_BUURT_POPULATION |
D02_marital_status | NL_CBS_DEMOGRAPHICS_MARITAL |
D12_household_type | NL_CBS_HOUSEHOLDS |
building_stock | NL_BAG_buildings |
geography_boundaries | NL_PDOK_buurt_boundaries |
income | NL_CBS_INCOME |
origin_distribution | NL_CBS_ORIGIN |
Available distributions / priors in registry
| Spec | Label | Type | Geo | Status | Variant | Confidence | Data URI |
|---|---|---|---|---|---|---|---|
C01_education_occupation_coupling | Education-occupation coupling strength | GUIDE | national | modelled | literature | 0.64 | data/literature/seeded_occupation_priors.yaml |
C02_assortative_mating_education | Assortative mating by education | GUIDE | municipality | modelled | literature | 0.65 | data/literature/seeded_occupation_priors.yaml |
C03_assortative_mating_age | Assortative mating by age | GUIDE | municipality | modelled | literature | 0.72 | data/literature/seeded_occupation_priors.yaml |
C04_assortative_mating_origin | Assortative mating by origin | GUIDE | municipality | modelled | literature | 0.66 | data/literature/seeded_occupation_priors.yaml |
C05_spatial_sorting_education | Spatial sorting by education | GUIDE | national | modelled | literature | 0.74 | data/literature/seeded_occupation_priors.yaml |
C06_spatial_sorting_income | Spatial sorting by income | GUIDE | national | modelled | literature | 0.74 | data/literature/seeded_occupation_priors.yaml |
C07_spatial_sorting_origin | Spatial sorting by origin | GUIDE | national | modelled | literature | 0.76 | data/literature/seeded_occupation_priors.yaml |
C08_intergenerational_income_elasticity | Intergenerational income elasticity | GUIDE | national | modelled | literature | 0.62 | data/literature/seeded_occupation_priors.yaml |
C09_intergenerational_occupation_transmission | Intergenerational occupation transmission | GUIDE | national | modelled | literature | 0.62 | data/literature/seeded_occupation_priors.yaml |
C10_commuting_mode_distance | Commuting mode × distance × occupation × region | GUIDE | municipality | modelled | literature | 0.68 | data/literature/seeded_occupation_priors.yaml |
C11_health_age_sex_education | Health × age × sex × education | GUIDE | national | modelled | literature | 0.66 | data/literature/seeded_occupation_priors.yaml |
D01_age_sex_nuts3 | Age × sex at NUTS-3 | HARD | NUTS-3 | constrained | robust | 0.74 | docs/wiki/compiled/D01_age_sex_nuts3.md |
D01_census_age_sex_nuts3 | Census age × sex at NUTS-3 | HARD | NUTS-3 | constrained | robust | 0.74 | docs/wiki/compiled/D01_census_age_sex_nuts3.md |
D01_nl_buurt | Age × sex at buurt level | HARD | buurt | measured | robust | 0.99 | docs/wiki/compiled/D01_nl_buurt.md |
D02_marital_nuts3 | Marital status × age × sex at NUTS-3 | FIRM | NUTS-3 | constrained | robust | 0.73 | docs/wiki/compiled/D02_marital_nuts3.md |
D03_origin_age_sex | Origin group × age × sex | FIRM | NUTS-3 | constrained | robust | 0.73 | docs/wiki/compiled/D03_origin_age_sex.md |
D04_religion_age_sex_region | Religion × age × sex × region | GUIDE | NUTS-3 | constrained | robust | 0.71 | docs/wiki/compiled/D04_religion_age_sex_region.md |
D05_census_education_nuts3 | Census education at NUTS-3 | FIRM | NUTS-3 | constrained | robust | 0.73 | docs/wiki/compiled/D05_census_education_nuts3.md |
D05_education_nuts2 | Education at NUTS-2 | FIRM | NUTS-2 | constrained | current | 0.7 | docs/wiki/compiled/D05_education_nuts2.md |
D06_employment_age_sex_education | Employment status × age × sex × education | FIRM | unknown | constrained | robust | 0.73 | docs/wiki/compiled/D06_employment_age_sex_education.md |
D07_occupation_isco3 | Occupation ISCO-3 distribution | SOFT | unknown | constrained | robust | 0.71 | docs/wiki/compiled/D07_occupation_isco3.md |
D08_occupation_education | Occupation × education | SOFT | unknown | constrained | robust | 0.71 | docs/wiki/compiled/D08_occupation_education.md |
D09_industry_nace2 | Industry NACE-2 distribution | SOFT | unknown | constrained | robust | 0.71 | docs/wiki/compiled/D09_industry_nace2.md |
D10_income_education_occupation | Income × education × occupation | SOFT | unknown | constrained | robust | 0.71 | docs/wiki/compiled/D10_income_education_occupation.md |
D11_income_household_type_region | Income × household type × region | SOFT | NUTS-3 | constrained | robust | 0.71 | docs/wiki/compiled/D11_income_household_type_region.md |
D12_household_type_size_region | Household type × size × region | FIRM | NUTS-3 | constrained | robust | 0.73 | docs/wiki/compiled/D12_household_type_size_region.md |
D13_children_mother_age_education | Children × mother age × education | SOFT | NUTS-3 | constrained | robust | 0.71 | docs/wiki/compiled/D13_children_mother_age_education.md |
D14_partner_age_gap_homogamy | Partner age gap × homogamy | SOFT | NUTS-3 | constrained | robust | 0.71 | docs/wiki/compiled/D14_partner_age_gap_homogamy.md |
D15_coresidence_structure | Co-residence structure | SOFT | NUTS-3 | constrained | robust | 0.71 | docs/wiki/compiled/D15_coresidence_structure.md |
D16_household_income_type_region | Household income × type × region | SOFT | NUTS-3 | constrained | robust | 0.71 | docs/wiki/compiled/D16_household_income_type_region.md |
D17_education_mobility | Education mobility | GUIDE | unknown | constrained | robust | 0.71 | docs/wiki/compiled/D17_education_mobility.md |
D18_occupation_given_education | Occupation | education | SOFT | unknown | constrained | robust | 0.71 | docs/wiki/compiled/D18_occupation_given_education.md |
D19_employment_given_demographics | Employment | demographics | SOFT | unknown | constrained | robust | 0.71 | docs/wiki/compiled/D19_employment_given_demographics.md |
D20_birth_intervals | Birth intervals | GUIDE | unknown | constrained | robust | 0.71 | docs/wiki/compiled/D20_birth_intervals.md |
D21_age_first_birth | Age at first birth × education × cohort | GUIDE | unknown | constrained | robust | 0.71 | docs/wiki/compiled/D21_age_first_birth.md |
D22_age_leaving_home | Age leaving home | GUIDE | unknown | constrained | robust | 0.71 | docs/wiki/compiled/D22_age_leaving_home.md |
D23_divorce_duration_children_education | Divorce × duration × children × education | GUIDE | NUTS-3 | constrained | robust | 0.71 | docs/wiki/compiled/D23_divorce_duration_children_education.md |
D24_age_marriage_sex_education | Age at marriage × sex × education | GUIDE | NUTS-3 | constrained | robust | 0.71 | docs/wiki/compiled/D24_age_marriage_sex_education.md |
D25_internal_migration | Internal migration | FIRM | unknown | constrained | robust | 0.73 | docs/wiki/compiled/D25_internal_migration.md |
Constraints/distributions used in synthesis manifest
| Constraint or distribution ID |
|---|
CORR_OCC_EMPLOYMENT |
D01 |
D12 |
EMPLOYMENT_CODE_LINK |
FIRM |
GUIDE |
HARD |
HARMONIZATION |
HH_CHILD_ADULT |
HH_COUPLE_TWO_ADULTS |
HH_SINGLE_SIZE_ONE |
HH_SIZE_PLAUSIBLE |
HMN_EDUCATION |
HMN_HOUSEHOLD_TYPE |
HMN_INDUSTRY |
HMN_MARITAL |
HMN_OCCUPATION |
HMN_ORIGIN |
HMN_SEX |
INFORMATIONAL |
MODEL_FALLBACK_RATE |
SPATIAL |
SPT_BUILDING_COORDS |
SPT_DWELLING_BUILDING_REF |
SPT_HH_DWELLING_REF |
STRUCTURAL |
XCN_COMPARABILITY |
Current country tasks
| ID | Title | Assignee | Status | Created | Latest summary |
|---|---|---|---|---|---|
| t_32fe9356 | NL cycle 1 downloader freeze after source follow-ups | synth-downloader | running | 2026-05-19 19:59:22 CEST | |
| t_1fd4394c | NL cycle 2 review after source-upgraded model rerun | synth-reviewer | todo | 2026-05-19 20:00:12 CEST | |
| t_ae1817db | NL cycle 2 model rerun after source/download follow-ups | synth-modeler | todo | 2026-05-19 19:59:52 CEST | |
| t_5944a28f | NL cycle 1 distribution-source follow-up after NEEDS_MORE_SOURCES | synth-distributions-researcher | done | 2026-05-19 19:59:07 CEST | Completed NL cycle-1 distribution-source follow-up after NEEDS_MORE_SOURCES. Wrote findings, downloader-ready extraction specs, refreshed the distribution evidence board, and appended a manager update; NL is not evidence-exhausted, with CBS/Eurostat source IDs identified for household/dwelling, inst |
| t_b9950d6c | NL cycle 1 marginal/source follow-up after NEEDS_MORE_SOURCES | synth-marginals-researcher | done | 2026-05-19 19:59:06 CEST | Completed NL cycle-1 marginal/source follow-up after NEEDS_MORE_SOURCES and wrote the required handoffs under /home/synthestat/workspace/manager_handoffs/marginals/. Identified concrete official CBS/PDOK/Kadaster/DUO/COA/Rijksoverheid source queue for downloader, with explicit EVIDENCE_EXHAUSTED_PUB |
| t_40840a5c | Review NL population synthesis bundle (cycle 1) | synth-reviewer | done | 2026-05-19 18:35:28 CEST | Reviewed the NL cycle-1 population bundle at /home/synthestat/output/runs/NL/nl_population_review_cycle1_fa78aabf_seed420987 and wrote the reviewer report at /home/synthestat/workspace/manager_handoffs/reviewer/2026-05-19_164411Z_NL_population_review_cycle1.md. Verdict NEEDS_MORE_SOURCES: bundle is |
| t_8187172c | NL population synthesis review bundle build (cycle 1) | synth-modeler | done | 2026-05-19 18:35:12 CEST | Built and verified the NL population QA cycle-1 review bundle at /home/synthestat/output/runs/NL/nl_population_review_cycle1_fa78aabf_seed420987. The bundle is contract-complete for internal review, HARD residuals pass exactly (59 pass / 3 skip across 62 validation rows), with explicit unavailable m |
| t_c692bc83 | orchestrate NL population synthesis QA loop | synth-manager | done | 2026-05-19 18:34:06 CEST | Routed NL population synthesis QA cycle 1: created synth-modeler bundle-build task t_8187172c and dependent synth-reviewer bundle-review task t_40840a5c. Updated /home/synthestat/workspace/manager_handoffs/manager_updates.md with bottleneck summary, routing decisions, blockers, and next branch instr |
Process
synth-manager creates and controls the country loop.
synth-modeler generates the review bundle: people, households, dwellings/buildings or unavailable markers, overlays, assignments, manifests, residuals, diagnostics, uncertainty, provenance.
synth-reviewer audits constraints, marginals, household/family realism, hidden populations, dwelling/building grounding, work/school assignment, uncertainty, provenance, and privacy.
PASS finalizes; NEEDS_MODEL_FIX routes back to modeler; NEEDS_MORE_SOURCES routes to marginal/distribution researchers then downloader; exhausted evidence/model plateau stops for human decision.
Quality gates and stop conditions
- PASS: satisfactory for declared country evidence tier and internal review mode.
- NEEDS_MODEL_FIX: model logic, bundle, uncertainty, household/dwelling/assignment issue.
- NEEDS_MORE_SOURCES: missing marginal or joint/conditional evidence; researchers then downloader.
- EVIDENCE_EXHAUSTED_HUMAN_REVIEW: source search cannot responsibly improve the output.
- MODEL_IMPROVEMENT_EXHAUSTED_HUMAN_REVIEW: modeler cannot materially improve or diagnostics plateau.