{"$schema": "https://Identix.org/schema/tools-v0.1", "name": "Identix.org — toolcatalogus v0.1", "generated": "2026-08-22", "license": "CC0-1.0", "count": 59, "description": "Afgeleide rekentools bovenop de bronregisters. Elke tool verwijst naar zijn databronnen en naar de normbron waar de rekenregel juridisch vandaan komt.", "field_notes": {"computation": "rules_based = deterministische regel uit wet/norm | lookup = opzoeken | model = getraind/statistisch | hybrid", "wft_risk": "laag = informeren | midden = let op vormgeving | hoog = mogelijk vergunningplichtig adviseren of bemiddelen", "tier": "1 = eerst bouwen (open data, lage bouwlast, hoge waarde) | 2 = daarna | 3 = blocker eerst oplossen", "data_blocker": "aanwezig = er is data die je moet inkopen, licenseren of anders verkrijgen voordat dit werkt", "verified_values": "getallen die tijdens onderzoek uit primaire bron zijn bevestigd, met peildatum augustus 2026", "build_note": "valkuilen, veelgemaakte fouten en aanbevolen bouwvolgorde"}, "global_warnings": ["HARDCODE NOOIT de financieringslastpercentages uit Bijlage 1 Trhk. Ze konden tijdens dit onderzoek niet betrouwbaar worden uitgelezen. Laad ze uit de BWB-toestand-XML via KOOP SRU en kruiscontroleer cel-voor-cel tegen Stcrt. 2025-36471 als CI-check.", "Onderscheid WETTELIJKE NORM van GELDVERSTREKKERBELEID. Erfpachtcanon, BKR-weging, alimentatie en depotmechaniek staan NIET in de Trhk - dat is beleid per aanbieder. Maak ze configureerbaar met bronvermelding, presenteer ze niet als wet.", "Reken client-side waar het kan. Dat lost tegelijk Wft-bemiddelen, AVG-grondslag, bewaartermijn en DPIA-trigger op.", "Toon bandbreedtes en alle aannames, geen exact bedrag. Beleidsregel Informatieverstrekking (AFM, sept 2024): valse precisie is een overtreding van de duidelijkheidseis.", "Bij doorverwijzing: uitsluitend NAWTE doorgeven en de gebruiker zelf laten klikken. Meer dan contactgegevens doorgeven is bemiddelen (AFM-publicatie Bemiddelen, 2014) - zelfs een geboortedatum telt als 'meer'.", "Beloon per klik of vaste plaatsing, nooit per afgesloten product. Betaling per transactie is voor de AFM een expliciet signaal voor bemiddelen.", "Geen 'beste keuze', geen default-selectie, geen highlighting bij productvergelijking. Dat kantelt criterium 1 en 2 van het adviesbegrip.", "Houd kredietwaardigheidslogica REGELGEBASEERD. Een ML-model dat leencapaciteit of acceptatiekans voorspelt valt onder AI Act Annex III 5(b) (hoog-risico, deadline 2 december 2027 na Verordening (EU) 2026/1744).", "Een platform dat op schaal inkomen en schulden verwerkt valt vermoedelijk onder AP-DPIA-categorie 5 (financiele situatie). DPIA is dan verplicht, niet optioneel."], "data_blockers_summary": {"individuele_transactieprijzen": "Kadaster betaalde dataset of brainbay/NVM. Zonder dit geen serieuze AVM.", "woz_per_adres": "Muur zonder deur. Alleen via gebruikersinvoer of een art. 11-partner (bank/verzekeraar).", "autowaarde_koerslijst": "Autotelex / XRAY / J.D. Power Autovista / JATO. Enterprise-contract.", "hypotheekrente_per_geldverstrekker": "Hypotheekbond (Blinqx) of MoneyView, offerte op aanvraag. Geen open bron. Alternatief: eigen scrapers - NN publiceert een volledige HTML-grid, MUNT heeft een rentearchief 2014-heden met voorspelbaar URL-patroon.", "isde_bedragen": "Geen API. Parseer de Regeling ISDE-bijlagen via KOOP SRU."}, "tools": [{"id": "max-hypotheek", "name": "Maximale hypotheek op inkomen", "category": "hypotheek", "description": "Kernberekening. Toetsinkomen -> financieringslastpercentage uit Bijlage 1 Trhk -> toegestane jaarlast -> annuitair terugrekenen naar hoofdsom over 30 jaar.", "inputs": ["bruto_jaarinkomen", "partner_inkomen", "geboortedatum(en)", "rentevaste_periode", "werkelijke_rente", "aow_status"], "outputs": ["max_hypotheek_bandbreedte", "toegepast_flp", "toetsrente", "bruto_maandlast", "aannames"], "data_sources": ["Tijdelijke regeling hypothecair krediet BWBR0032503 (Bijlage 1)", "AFM toetsrente (kwartaal)"], "computation": "rules_based", "build_effort": "midden", "wft_risk": "laag", "tier": 1, "norm_source": "Trhk art. 3 + Bijlage 1", "norm_url": "https://wetten.overheid.nl/BWBR0032503", "update_cadence": "jaarlijks (Bijlage 1, per 1 jan) + per kwartaal (toetsrente)", "regulatory_note": "Toon een BANDBREEDTE, geen exact bedrag. Beleidsregel Informatieverstrekking (AFM, sept 2024): aannames moeten zichtbaar zijn en valse precisie is een overtreding. Noem GEEN specifiek product van een specifieke aanbieder in combinatie met de ingevoerde gegevens - dat is criterium 3 van het adviesbegrip.", "build_note": "LAAD BIJLAGE 1 UIT DE BRON, HARDCODE NIETS. Route: KOOP SRU x-connection=BWB, query dcterms.identifier==BWBR0032503, dan de toestand-XML parsen (echte <table>/<row>/<entry>). Kruiscontroleer cel-voor-cel tegen Stcrt. 2025-36471 onderdeel C als CI-check. Nieuw in 2026: afronding op 0,1 procentpunt (was 0,5) en VIER tabellen i.p.v. minder.", "verified_values": {"toetsrente_Q1_Q2_Q3_2026": "5% (wettelijk minimum)", "toetsrente_regel": "RVP<10jr: max(toetsrente, werkelijke rente). RVP>=10jr: werkelijke rente.", "tweeverdieners_2026": "tweede inkomen telt 100% mee (volledig ingefaseerd sinds 2023)", "tabelkeuze_bij_verschillende_AOW_status": "tabel van de partner met het hoogste inkomen", "financieringslastpercentages": "NIET IN DEZE CATALOGUS - onbetrouwbaar uit te lezen, laad uit BWB-XML"}}, {"id": "max-hypotheek-alleenstaand", "name": "Alleenstaandenverruiming", "category": "hypotheek", "description": "Vaste opslag op de leencapaciteit voor alleenstaanden boven de inkomensdrempel.", "inputs": ["bruto_jaarinkomen", "alleenstaand", "aow_status"], "outputs": ["verruiming_bedrag", "toegepast_ja_nee"], "data_sources": ["Trhk art. 3 lid 8"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "verified_values": {"bedrag": "EUR 17.000", "drempel_pre_aow": "toetsinkomen > EUR 30.000", "drempel_post_aow": "toetsinkomen > EUR 29.000", "wijziging_2026": "drempel gesplitst naar AOW-status (was een enkele drempel van EUR 28.000)"}}, {"id": "studieschuld-impact", "name": "Impact studieschuld op leencapaciteit", "category": "hypotheek", "description": "Gebruteerd DUO-termijnbedrag optellen bij de financieringslast. Let op: NIET de oude wegingsfactoren op de oorspronkelijke schuld.", "inputs": ["duo_termijnbedrag_per_maand", "of_actuele_restschuld", "actuele_rente", "resterende_looptijd", "toetsrente"], "outputs": ["gebruteerd_termijnbedrag", "effect_op_max_hypotheek"], "data_sources": ["Trhk art. 3a"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "build_note": "VEELGEMAAKTE FOUT: de percentages 0,75% (oud stelsel) en 0,45% (leenstelsel) op de OORSPRONKELIJKE schuld zijn VERVALLEN PER 2024. Ze circuleren nog op adviessites. Neem ze niet over.", "verified_values": {"bruteringsfactor_bij_5pct": "1,30", "bruteringstabel": "<=2,000%:1,05 | 2,001-2,500%:1,10 | 2,501-3,000%:1,15 | 3,001-3,500%:1,20 | 3,501-4,000%:1,20 | 4,001-4,500%:1,25 | 4,501-5,000%:1,30 | 5,001-5,500%:1,30 | 5,501-6,000%:1,35 | >=6,001%:1,40", "uitzondering_lid3": "bij aflosvrije periode, nog geen termijnbedrag, of verlaagd bedrag na draagkrachtmeting: reken met ACTUELE restschuld, actuele rente en resterende looptijd"}}, {"id": "energielabel-leenruimte", "name": "Extra leenruimte op energielabel", "category": "hypotheek", "description": "Twee losse tabellen: bedrag buiten beschouwing bij AANKOOP van een woning met dat label, en bij het TREFFEN van energiebesparende voorzieningen.", "inputs": ["energielabel_huidig", "doel(aankoop|verduurzaming)", "energieprestatiegarantie_jaren"], "outputs": ["bedrag_buiten_beschouwing", "van_toepassing_tabel"], "data_sources": ["Trhk art. 4 lid 3 en lid 4", "EP-Online (label ophalen)"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "build_note": "TWEE TABELLEN, NIET UITWISSELBAAR - dit gaat vaak fout. Openstaand: restcategorie 'geen of ongeldig energielabel' (mogelijk EUR 10.000) is NIET bevestigd. Check art. 4 lid 3/4 voordat je de default-tak bouwt; dit is een reeel productiescenario.", "verified_values": {"aankoop_lid3": "E/F/G: 0 | C/D: 5.000 | A/B: 10.000 | A+/A++: 20.000 | A+++: 25.000 | A++++: 30.000 | A++++ met energieprestatiegarantie >=10jr: 40.000", "verduurzaming_lid4": "E/F/G: 20.000 | C/D: 15.000 | A/B: 10.000 | A+/A++: 10.000 | A+++: 0 | A++++: 0", "wijziging_2026": "aankoop A+++ -5.000, A++++ -10.000, A++++ met garantie -10.000; verduurzaming A+++ van 10.000 naar 0. Reden: terugleverkosten en afschaffing salderingsregeling 2027."}}, {"id": "ltv-check", "name": "LTV-toets", "category": "hypotheek", "description": "Toetst hoofdsom tegen woningwaarde en de uitzonderingsgronden.", "inputs": ["hoofdsom", "woningwaarde", "doel", "energiebesparende_voorzieningen"], "outputs": ["ltv_pct", "binnen_norm", "toegepaste_uitzondering"], "data_sources": ["Trhk art. 5"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "verified_values": {"ltv_norm_2026": "100%", "ltv_met_energiebesparende_voorzieningen": "tot 106%", "overige_uitzonderingen": "restschuld, aflossing/vervanging bestaand krediet, noodzakelijke woningverbetering, aardgasvrij maken, Nationaal Warmtefonds, meefinanciering afsluitkosten bij dalende verhouding"}}, {"id": "nhg-check", "name": "NHG-toets en borgtochtprovisie", "category": "hypotheek", "description": "Past de lening binnen de NHG-kostengrens, en wat kost de borgtocht.", "inputs": ["koopsom", "hoofdsom", "energiebesparende_voorzieningen", "doel"], "outputs": ["nhg_mogelijk", "kostengrens", "borgtochtprovisie_bedrag", "vrijstellingsgrond"], "data_sources": ["NHG Voorwaarden & Normen 2026-1"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "norm_url": "https://www.nhg.nl/media/gtaickpv/vn-nhg-2026.pdf", "update_cadence": "jaarlijks per 1 januari", "build_note": "NHG levert PDF plus minstens een Excel ('Financieringslasttabel beheer 2026'). Geen API, geen open data. De Excel is jaarlijks structureel stabiel - dat is je machineleesbare ingang.", "verified_values": {"kostengrens_2026": "EUR 470.000", "kostengrens_met_EBV_2026": "EUR 498.200 (+28.200)", "borgtochtprovisie_2026": "0,4% over de hoofdsom (art. A.5.3.1)", "geen_provisie_bij": "oversluiten bestaande NHG-lening zonder verhoging, aflossing SVn Starterslening, bepaalde erfpacht-/koperssteunafkoop, schuldenconsolidatie (D.5.5), woonlastenfaciliteit (D.5.6)", "nieuw_2026": "een uniforme grens voor alle woningtypen (aparte woonwagengrens vervalt); tijdelijk volledig aflossingsvrij bij dubbele woonlasten; restschuld vorige NHG-woning meefinancierbaar + max 2% bijkomende kosten"}}, {"id": "bruto-netto-maandlast", "name": "Bruto-netto maandlast hypotheek", "category": "hypotheek", "description": "Bruto maandlast, renteaftrek, eigenwoningforfait en Hillen naar netto maandlast.", "inputs": ["hoofdsom", "rente", "rentevaste_periode", "aflosvorm", "woz_waarde", "belastbaar_inkomen", "fiscaal_partner"], "outputs": ["bruto_maandlast", "netto_maandlast", "renteaftrek_jaar", "eigenwoningforfait", "hillen_aftrek"], "data_sources": ["Wet IB 2001", "Belastingdienst tarieven"], "computation": "rules_based", "build_effort": "midden", "wft_risk": "laag", "tier": 1, "build_note": "LET OP HILLEN: de afbouw is VERSNELD in het Belastingplan 2026. De stap 2025->2026 is 4,803 procentpunt, niet de oorspronkelijke 3 1/3. Aftrek vervalt per 1 januari 2041, niet 2048. Hardcode 71,867% voor 2026 - reken het NIET af uit een formule.", "verified_values": {"ewf_2026": "tot 12.500: 0% | 12.500-25.000: 0,10% | 25.000-50.000: 0,20% | 50.000-75.000: 0,25% | 75.000-1.350.000: 0,35% | boven 1.350.000: EUR 4.725 + 2,35% over het meerdere", "max_aftrektarief_2026": "37,56% (lichte brononzekerheid: een bron gaf 37,5% - verifieer bij Belastingdienst voor je hardcodeert)", "hillen_2026": "71,867% (2025: 76,67%)"}}, {"id": "annuiteit-schema", "name": "Aflosschema (annuitair/lineair/aflosvrij)", "category": "hypotheek", "description": "Volledig aflosschema per maand met rente/aflossingssplitsing en restschuld.", "inputs": ["hoofdsom", "rente", "looptijd", "aflosvorm", "extra_aflossingen"], "outputs": ["schema_per_maand", "totale_rente", "restschuld_per_jaar"], "data_sources": [], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 1}, {"id": "oversluiten-check", "name": "Oversluitcheck (art. 4 lid 2)", "category": "hypotheek", "description": "Bij oversluiten met hetzelfde onderpand en dezelfde bewoner vervalt de financieringslasttoets, mits de hoofdsom niet stijgt boven af te lossen bedrag plus kosten.", "inputs": ["huidige_restschuld", "nieuwe_hoofdsom", "afsluitkosten", "aflossingskosten", "zelfde_onderpand", "blijft_bewonen"], "outputs": ["valt_onder_uitzondering", "ruimte_binnen_regel"], "data_sources": ["Trhk art. 4 lid 2"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "build_note": "Dit is een HARDE, deterministische en dus veilig implementeerbare regel - anders dan de explain van art. 4 lid 1."}, {"id": "boeterente-indicatie", "name": "Boeterente-indicatie bij vervroegd aflossen", "category": "hypotheek", "description": "Indicatie van de vergoeding op basis van het contante-waardeverschil tussen contractrente en vergelijkingsrente.", "inputs": ["restschuld", "contractrente", "resterende_rentevastperiode", "vergelijkingsrente", "boetevrije_ruimte_pct"], "outputs": ["indicatie_boeterente", "boetevrij_deel"], "data_sources": ["ECB MIR (vergelijkingsrente-proxy)"], "computation": "rules_based", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "regulatory_note": "AFM-leidraad vergoeding vervroegde aflossing schrijft de netto-contante-waardemethode voor, maar geldverstrekkers hanteren eigen vergelijkingsrentes. Presenteer dit uitdrukkelijk als indicatie, nooit als het bedrag dat de bank rekent."}, {"id": "overbrugging", "name": "Overbruggingskrediet", "category": "hypotheek", "description": "Overwaarde huidige woning minus restschuld en verkoopkosten.", "inputs": ["verwachte_verkoopprijs", "restschuld_huidig", "verkoopkosten", "reeds_verkocht"], "outputs": ["overbruggingsbedrag", "risico_indicatie"], "data_sources": [], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 2, "build_note": "Trhk art. 4 lid 6 laat lopende verplichtingen uit een overbruggingskrediet buiten beschouwing - letterlijke tekst NIET geverifieerd, controleer voor implementatie."}, {"id": "consumptief-krediet-impact", "name": "Impact consumptief krediet / BKR", "category": "hypotheek", "description": "Effect van doorlopend krediet, persoonlijke lening, private lease en creditcardlimiet op de leencapaciteit.", "inputs": ["kredietsoort", "limiet_of_restschuld", "maandlast"], "outputs": ["last_per_maand", "effect_op_max_hypotheek"], "data_sources": ["NHG V&N 2026-1 art. C.3.4"], "computation": "rules_based", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "build_note": "NIET GEVERIFIEERD. De veelgenoemde 2% per maand van de kredietlimiet komt uit een bron die op een ander punt aantoonbaar verouderd was. De Trhk bevat GEEN bepaling hierover. Behandel als CONFIGUREERBARE PARAMETER met bronvermelding, niet als wettelijke norm - het onderscheid tussen wettelijke norm en geldverstrekkerbeleid is hier juridisch relevant."}, {"id": "erfpacht-impact", "name": "Impact erfpachtcanon", "category": "hypotheek", "description": "Effect van periodieke canon of afkoopsom op de leencapaciteit.", "inputs": ["canon_per_jaar", "afkoopsom", "resterende_afkooptermijn", "looptijd_lening"], "outputs": ["last_per_jaar", "meefinancierbaar_ja_nee"], "data_sources": ["NHG V&N art. C.2.1.1 sub c"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 2, "build_note": "GEEN WETTELIJKE NORM. De Trhk bevat geen erfpachtbepaling. Alleen bevestigd: de AFKOOPSOM is meefinancierbaar als de afkooptermijn minstens gelijk is aan de looptijd van de lening. De rekenregel voor de PERIODIEKE canon is geldverstrekkerbeleid - configureerbaar maken."}, {"id": "aow-scenario", "name": "Leencapaciteit na pensionering", "category": "hypotheek", "description": "Verplichte toets bij pensionering binnen tien jaar, met de aparte AOW-financieringslasttabel.", "inputs": ["geboortedatum", "huidig_inkomen", "verwacht_aow_pensioeninkomen"], "outputs": ["max_hypotheek_nu", "max_hypotheek_na_aow", "knelpunt_ja_nee"], "data_sources": ["Trhk art. 2 + Bijlage 1 tabel 2", "SVB AOW-leeftijd"], "computation": "rules_based", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "verified_values": {"regel": "bij pensionering binnen 10 jaar MOET de aanbieder rekenen met het verwachte AOW-/pensioeninkomen (art. 2) - dit is een harde toetsregel, geen advies", "aow_tabel_start": "toetsinkomen vanaf EUR 29.000", "nhg_2026_nieuw": "verbreed inkomenswegingskader tussen AOW-leeftijd en pensioenleeftijd (68); aantoonbaar loon of ondernemersinkomen kan meewegen"}}, {"id": "explain-signalering", "name": "Explain-signalering", "category": "hypotheek", "description": "Signaleert of een situatie in aanmerking KAN komen voor een gemotiveerde afwijking - zonder bedrag.", "inputs": ["situatiekenmerken"], "outputs": ["signalering_tekst", "geen_bedrag"], "data_sources": ["Trhk art. 4 lid 1"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "midden", "tier": 2, "regulatory_note": "BELANGRIJK ARCHITECTUURPUNT. Explain is uitsluitend een bevoegdheid van de AANBIEDER, en art. 4 lid 1 sub a eist dat de normberekening EERST regulier is uitgevoerd. De voorwaarden b/c/d (vastlegging, documentaire onderbouwing, geverifieerde gegevens, bestendigheidsoordeel) zijn dossiervereisten die een tool niet kan vervullen. Toon NOOIT een 'maximale hypotheek inclusief explain' met een bedrag - dat suggereert een uitkomst waar geen enkele aanbieder aan gebonden is."}, {"id": "woningwaarde-avm", "name": "Modelmatige woningwaarde (AVM)", "category": "woning", "description": "Indicatieve marktwaarde op basis van objectkenmerken, locatie en marktindex.", "inputs": ["postcode", "huisnummer", "toevoeging", "peildatum", "energielabel(optioneel)", "oppervlakte(optioneel)"], "outputs": ["waarde_indicatie", "betrouwbaarheidsindicatie", "gebruikte_kenmerken"], "data_sources": ["BAG API", "3DBAG", "CBS prijsindex 85773NED", "Kadaster transacties (BETAALD)"], "computation": "model", "build_effort": "hoog", "wft_risk": "midden", "tier": 1, "data_blocker": "INDIVIDUELE TRANSACTIEPRIJZEN ZIJN NIET OPEN. Kadaster zegt letterlijk: 'De persoonlijke gegevens en verkoopprijzen zijn niet beschikbaar via een open dataset, maar als betaalde dataset.' Zonder label kun je geen AVM trainen. Routes: Kadaster betaalde bulk, brainbay/NVM, of eigen aanlevering door partnermakelaars. Koopsominformatie a EUR 3,70 per bevraging is geen businesscase.", "regulatory_note": "Noem dit NOOIT een taxatie. NHG: 'Het is niet toegestaan om de woningwaarde aan te tonen middels een losse modelmatige waardebepaling.' Hybride taxatie (model + NRVT-taxateur) mag tot 90% LTV. Gebruik: 'modelmatige waardebepaling', 'indicatieve marktwaarde', 'waarde-indicatie'. Nooit: 'gevalideerd', 'NWWI', 'taxatiewaarde'. NRVT heeft wettelijke regulering van modelmatige waardebepaling in voorbereiding - volgen.", "altum_equivalent": "Woningwaarde / Woningwaarde Plus"}, {"id": "woningkenmerken", "name": "Woningkenmerken opvragen", "category": "woning", "description": "Bouwjaar, oppervlakte, woningtype, pandgeometrie en volume per adres.", "inputs": ["postcode", "huisnummer", "toevoeging"], "outputs": ["bagid", "bouwjaar", "oppervlakte", "gebruiksdoel", "volume", "bouwhoogte", "dakvorm", "coordinaten"], "data_sources": ["BAG API Individuele Bevragingen", "3DBAG"], "computation": "lookup", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "altum_equivalent": "Woningkenmerken", "build_note": "Voor een eigen database: BAG Extract/GeoPackage via PDOK, niet de bevragings-API.", "verified_values": {"bag_api_limiet": "50.000 bevragingen/dag, 50 berichten/seconde, gratis, expliciet niet voor bulk", "bag_licentie": "CC PDM 1.0 (publiek domein)", "3dbag_licentie": "CC BY 4.0", "3dbag_lod": "LoD1.2 / LoD1.3 / LoD2.2 voor ~10 mln panden"}}, {"id": "woz-lookup", "name": "WOZ-waarde", "category": "woning", "description": "WOZ-waarde per adres.", "inputs": ["postcode", "huisnummer"], "outputs": ["woz_waarde", "peildatum"], "data_sources": [], "computation": "lookup", "build_effort": "laag", "wft_risk": "midden", "tier": 2, "data_blocker": "MUUR ZONDER DEUR. Kadaster WOZ API Bevragen is uitsluitend voor GEMEENTEN (OIN + PKIoverheid-certificaat). Bulklevering vereist een AMvB op grond van art. 40b lid 3 Wet WOZ die NIET BESTAAT. Ministerie van Financien op een dataverzoek: 'Het ontsluiten van WOZ waarden als open data vergt een wetswijziging.' Geautomatiseerd bevragen van het WOZ-waardeloket is volgens het kabinet (Kamervragen 2016Z19018) EXPLICIET NIET TOEGESTAAN en wordt actief gemonitord met rate limiting en crawlerdetectie.", "regulatory_note": "Enige legitieme routes: (1) WOZ als GEBRUIKERSINVOER - de eigenaar heeft zijn eigen beschikking; (2) samenwerking met een art. 11 Uitvoeringsbesluit-partij (bank/verzekeraar). Let op: Altum noemt als bron 'de officiele WOZ-website'. Kopieer die praktijk niet zonder juridisch advies.", "altum_equivalent": "WOZ API"}, {"id": "herbouwwaarde", "name": "Herbouwwaarde", "category": "woning", "description": "Indicatie herbouwwaarde voor opstalverzekering.", "inputs": ["woningtype", "oppervlakte", "bouwjaar", "inhoud", "bouwaard"], "outputs": ["herbouwwaarde_indicatie"], "data_sources": ["BAG", "3DBAG", "RVO kostenkentallen"], "computation": "model", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "altum_equivalent": "Herbouwwaarde"}, {"id": "koopsom-context", "name": "Verkoopprijzen in de buurt", "category": "woning", "description": "Geaggregeerde prijsontwikkeling en gemiddelde verkoopprijzen per gemeente/wijk/buurt.", "inputs": ["postcode", "gemeente", "periode"], "outputs": ["gemiddelde_prijs", "prijsindex", "aantal_transacties"], "data_sources": ["CBS 85773NED prijsindex", "CBS dataset 446", "Kadaster Vastgoeddashboard"], "computation": "lookup", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "build_note": "Volledig open en gratis - geen transactiedata nodig omdat dit geaggregeerd is. Goede eerste tool."}, {"id": "kosten-koper", "name": "Kosten koper", "category": "woning", "description": "Volledige aankoopkosten inclusief overdrachtsbelasting.", "inputs": ["koopsom", "leeftijd_koper", "hoofdverblijf", "nhg", "hypotheekbedrag", "nieuwbouw"], "outputs": ["overdrachtsbelasting", "notariskosten_indicatie", "taxatie_indicatie", "advieskosten_indicatie", "nhg_provisie", "totaal_kk"], "data_sources": ["Belastingdienst tarieven overdrachtsbelasting", "NHG V&N"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "build_note": "LET OP: vanaf 2026 zijn er DRIE woningtarieven (0/2/8%) plus 10,4% voor niet-woningen. Als je tool nog van twee tarieven uitgaat is die nu fout.", "verified_values": {"startersvrijstelling_2026": "0% tot EUR 555.000 (2025: EUR 525.000), 18 t/m 34 jaar, hoofdverblijf, eenmalig", "eigen_woning_2026": "2%", "beleggers_2026": "8% (2025: 10,4%)", "niet_woningen_2026": "10,4%"}}, {"id": "huurpunten-wws", "name": "WWS-huurpunten", "category": "woning", "description": "Woningwaarderingsstelsel-punten en de maximale huurprijs.", "inputs": ["oppervlakte", "voorzieningen", "energielabel", "woz_waarde", "monument", "buitenruimte"], "outputs": ["punten_totaal", "max_huurprijs", "segment"], "data_sources": ["EP-Online", "BAG", "WWS-regelgeving"], "computation": "rules_based", "build_effort": "hoog", "wft_risk": "laag", "tier": 2, "update_cadence": "per wetswijziging - Altum houdt versies bij per 01-01-2024 t/m 01-01-2026", "altum_equivalent": "WWS Punten", "build_note": "Versioning per peildatum is hier essentieel: huurcontracten worden getoetst op de regels die golden bij ingang. Dit is saai werk dat klanten wel afdwingt - het is een deel van Altums moat."}, {"id": "verhuisdata", "name": "Verhuis- en mutatiesignalen", "category": "woning", "description": "Signalen over eigendomsoverdracht en bewoningsmutaties.", "inputs": ["postcode", "huisnummer"], "outputs": ["laatste_mutatie", "indicatie"], "data_sources": [], "computation": "lookup", "build_effort": "midden", "wft_risk": "midden", "tier": 2, "regulatory_note": "AVG-gevoelig: mutaties per adres zijn indirect herleidbaar tot personen. Grondslag en doelbinding expliciet vastleggen.", "altum_equivalent": "Verhuisdata"}, {"id": "funderingsrisico", "name": "Funderingsrisico", "category": "woning", "description": "Indicatie funderingsproblematiek op basis van bodemdaling, grondwaterstand en bouwjaar.", "inputs": ["postcode", "huisnummer", "bouwjaar"], "outputs": ["risicoklasse", "toelichting"], "data_sources": ["BRO (Basisregistratie Ondergrond)", "AHN", "Klimaateffectatlas", "BAG"], "computation": "model", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "build_note": "Volledig op open data te bouwen. Onderscheidend, want Altum heeft dit niet."}, {"id": "omgevingsrisico", "name": "Omgevingsrisico's per adres", "category": "woning", "description": "Overstroming, geluid, luchtkwaliteit, externe veiligheid en hittestress.", "inputs": ["postcode", "huisnummer"], "outputs": ["overstromingsrisico", "geluidbelasting", "luchtkwaliteit", "hittestress", "externe_veiligheid"], "data_sources": ["PDOK ROR-overstromingsservices", "RIVM geluidkaarten", "Luchtmeetnet", "Klimaateffectatlas", "Atlas Leefomgeving"], "computation": "lookup", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "build_note": "Alles open data, geen blocker. Sterke onderscheidende tool."}, {"id": "energielabel-lookup", "name": "Geregistreerd energielabel opvragen", "category": "energie", "description": "Het officieel geregistreerde label per adres.", "inputs": ["postcode", "huisnummer", "toevoeging"], "outputs": ["energielabel", "registratiedatum", "geldig_tot", "berekend_energieverbruik"], "data_sources": ["EP-Online API v5"], "computation": "lookup", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "norm_url": "https://public.ep-online.nl/api/v5/", "regulatory_note": "HERDISTRIBUTIE: 'Het is niet toegestaan de gegevens direct op individueel niveau herkenbaar in grote aantallen aan derden te leveren.' MAAR: 'Het is WEL toegestaan gegevens op individueel niveau in grote aantallen INDIRECT aan derden te leveren, bijvoorbeeld als onderdeel van de informatie op een internetsite.' Dus: label tonen in je eigen tool mag op schaal; een bulk-CSV doorverkopen niet.", "verified_values": {"endpoints": "/PandEnergielabel/Adres, /PandEnergielabel/AdresseerbaarObject/{id}, /Mutatiebestand/DownloadInfo", "bestanden": "maandelijks totaalbestand (1e van de maand ~03:00), dagelijkse mutatiebestanden (~03:30)", "kosten": "gratis, API-key via epbdwebservices.rvo.nl"}}, {"id": "energielabel-schatting", "name": "Geschat energielabel", "category": "energie", "description": "Labelschatting voor woningen zonder geregistreerd label, op basis van objectkenmerken.", "inputs": ["postcode", "huisnummer", "bouwjaar", "oppervlakte", "woningtype", "bekende_maatregelen"], "outputs": ["geschat_label", "betrouwbaarheid", "gebruikte_aannames"], "data_sources": ["EP-Online (trainingslabels)", "BAG", "3DBAG", "RVO Voorbeeldwoningen 2022", "CBS energiekentallen"], "computation": "model", "build_effort": "hoog", "wft_risk": "laag", "tier": 1, "regulatory_note": "JE MAG GEEN LABEL AFGEVEN. Alleen gecertificeerde EP-adviseurs (BRL 9500, NTA 8800, eHerkenning niveau 3) mogen registreren in EP-Online. Gebruik consequent 'geschat energielabel' of 'labelindicatie', met zichtbare disclaimer dat het niet rechtsgeldig is voor verkoop, verhuur of WWS-punten. Geen visuele nabootsing van het officiele certificaat. Zakelijk risico: sinds de WWS-herziening hangen HUURPRIJZEN aan het label - een gebruiker die op jouw indicatie handelt lijdt schade.", "altum_equivalent": "NTA 8800 Energielabel v1/v2", "verified_values": {"nta_8800": "NTA 8800:2025+C1:2026, bij NEN gratis te downloaden (EUR 0,00), wel auteursrechtelijk beschermd - rekenregels mag je implementeren, de tekst niet herpubliceren", "trainingsset": "~6 mln geregistreerde labels in EP-Online", "kalibratieset": "RVO Voorbeeldwoningen 2022 - 51 referentiewoningtypes met volledige energetische kenmerken"}}, {"id": "labelsprong", "name": "Labelsprongberekening", "category": "energie", "description": "Welk label bereik je met welk maatregelenpakket, en wat kost dat.", "inputs": ["huidig_label", "woningkenmerken", "gewenste_maatregelen", "uitgesloten_maatregelen"], "outputs": ["nieuw_geschat_label", "kosten_per_maatregel", "energiebesparing", "co2_reductie", "terugverdientijd"], "data_sources": ["EP-Online", "RVO kostenkentallen", "3DBAG", "Milieu Centraal energieprijzen"], "computation": "hybrid", "build_effort": "hoog", "wft_risk": "laag", "tier": 1, "altum_equivalent": "Verduurzaming v2 / v2 Delta", "build_note": "Bouw een custom_measure_costs-override zoals Altum die heeft - installateurs willen hun eigen prijzen. RVO-kentallen als default.", "verified_values": {"kostenkentallen": "RVO, regelhulpenvoorbedrijven.nl/kostenkentallen, prijspeil mei 2025, vier componenten (gereedschap, materiaal, arbeid, opslagruimte). Geen API/CSV - PDF-rapportages parsen.", "energieprijzen_default_milieucentraal": "EUR 1,37/m3 gas, EUR 0,21/kWh elektriciteit"}}, {"id": "verduurzaming-budget", "name": "Verduurzamingsbudget in de hypotheek", "category": "energie", "description": "Combineert de energielabel-leenruimte, de 106%-LTV en het bouwdepot.", "inputs": ["huidig_label", "doellabel", "maatregelenpakket", "woningwaarde", "inkomen"], "outputs": ["extra_leenruimte", "max_ltv", "benodigd_budget", "dekking_ja_nee"], "data_sources": ["Trhk art. 4 lid 4 + art. 5", "NHG V&N"], "computation": "rules_based", "build_effort": "midden", "wft_risk": "laag", "tier": 1, "build_note": "De DEPOTMECHANIEK zelf (looptijd, rentevergoeding, verplichte besteding, terugstorting) is GEEN wettelijke norm maar geldverstrekkerbeleid. Alleen de leenruimte en de LTV-verruiming zijn wettelijk."}, {"id": "isde-subsidie", "name": "ISDE-subsidieberekening", "category": "energie", "description": "Subsidiebedrag per maatregel inclusief de verdubbeling bij twee of meer maatregelen.", "inputs": ["maatregelen", "oppervlakte_per_maatregel", "aantal_maatregelen", "woningtype"], "outputs": ["subsidie_per_maatregel", "totaal", "voorwaarden", "budgetstand"], "data_sources": ["Regeling ISDE (Staatscourant/BWB)", "RVO meldcodelijsten"], "computation": "rules_based", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "data_blocker": "Geen API, geen CSV, geen open dataset - een echt gat. De gezaghebbende bron is de Regeling ISDE zelf (bijlagen bevatten de complete maatregelen- en bedragentabellen) via KOOP SRU.", "update_cadence": "jaarlijks per 1 januari bij ministeriele regeling", "build_note": "EERST CHECKEN: de RVO-meldcodelijsten laden via een JS-formulier. Als daar een JSON-endpoint achter zit, heb je je machineleesbare bron gratis. Netwerk-tab in de browser."}, {"id": "subsidie-scan", "name": "Subsidie- en leningenscan", "category": "energie", "description": "Alle landelijke, provinciale en gemeentelijke regelingen waar een adres voor in aanmerking komt.", "inputs": ["postcode", "gemeente", "maatregelen", "woningtype", "eigenaar_type"], "outputs": ["regelingen", "bedragen", "voorwaarden"], "data_sources": ["RVO API /api/v1/opendata/subsidies", "Nationaal Warmtefonds", "gemeentelijke regelingen"], "computation": "lookup", "build_effort": "hoog", "wft_risk": "laag", "tier": 2, "altum_equivalent": "Duurzaamheid Subsidies", "build_note": "De RVO-API levert CONTENT over regelingen, geen bedragen per maatregel. Gemeentelijke regelingen zijn versnipperd - dat is precies waarom dit waarde heeft, en waarom het onderhoud kost."}, {"id": "zonnepotentie", "name": "Zonnepotentie per dak", "category": "energie", "description": "Aantal panelen, opbrengst en terugverdientijd op basis van werkelijke dakgeometrie.", "inputs": ["postcode", "huisnummer", "paneeltype", "verbruik"], "outputs": ["max_kwp", "jaaropbrengst_kwh", "dakvlakken", "helling", "orientatie", "terugverdientijd", "co2_reductie"], "data_sources": ["3DBAG LoD2.2", "AHN", "PVGIS API v5.3"], "computation": "hybrid", "build_effort": "midden", "wft_risk": "laag", "tier": 1, "altum_equivalent": "Zonnepanelen dakscan / Satelliet Dakscan", "build_note": "DIT IS HET ENIGE ONDERDEEL WAAR JE ALTUM EN ZONATLAS VOLLEDIG KUNT VERVANGEN MET OPEN BRONNEN. 3DBAG (CC BY 4.0) + AHN + PVGIS, nul licentiekosten. Bouw hier eerst. Orientatie en helling zijn afleidbaar uit de LoD2.2-normaalvector per dakvlak. AHN erbij voor schaduwwerking - dat is het verschil tussen een ruwe en een geloofwaardige scan.", "verified_values": {"pvgis": "https://re.jrc.ec.europa.eu/api/v5_3/PVcalc - gratis, geen key, 30 calls/sec per IP, JSON/CSV", "3dbag_licentie": "CC BY 4.0"}}, {"id": "energiekosten", "name": "Energiekosten en besparingsraming", "category": "energie", "description": "Verwacht verbruik en kosten op basis van woningtype, label en huishoudsamenstelling.", "inputs": ["woningtype", "oppervlakte", "energielabel", "aantal_bewoners", "tarieven"], "outputs": ["verwacht_gasverbruik", "verwacht_elektraverbruik", "jaarkosten", "besparing_bij_maatregelen"], "data_sources": ["CBS energiekentallen per buurt", "RVO Voorbeeldwoningen"], "computation": "model", "build_effort": "midden", "wft_risk": "laag", "tier": 2}, {"id": "warmtepomp-geschiktheid", "name": "Warmtepompgeschiktheid", "category": "energie", "description": "Is de woning geschikt, welk type, en wat is het effect op de energierekening.", "inputs": ["woningkenmerken", "huidig_label", "isolatiegraad", "afgiftesysteem"], "outputs": ["geschiktheid", "aanbevolen_type", "indicatieve_kosten", "besparing"], "data_sources": ["RVO kostenkentallen", "EP-Online", "PBL Vesta MAIS"], "computation": "model", "build_effort": "midden", "wft_risk": "laag", "tier": 2}, {"id": "aardgasvrij-context", "name": "Warmtetransitie per buurt", "category": "energie", "description": "Wat is het buurtplan, welke alternatieven zijn er en wat is de planning.", "inputs": ["postcode", "gemeente"], "outputs": ["warmtealternatief", "planningshorizon", "bronnen"], "data_sources": ["PBL Startanalyse aardgasvrije buurten", "Klimaatmonitor", "gemeentelijke transitievisies"], "computation": "lookup", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "build_note": "PBL Vesta MAIS broncode is publiek op GitHub."}, {"id": "overdrachtsbelasting", "name": "Overdrachtsbelasting", "category": "fiscaal", "description": "Tarief en bedrag inclusief startersvrijstelling.", "inputs": ["koopsom", "leeftijd", "hoofdverblijf", "eerder_vrijstelling_gebruikt"], "outputs": ["tarief", "bedrag", "vrijstelling_van_toepassing"], "data_sources": ["Belastingdienst"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 1}, {"id": "eigenwoningforfait", "name": "Eigenwoningforfait", "category": "fiscaal", "description": "Bijtelling op basis van WOZ-waarde.", "inputs": ["woz_waarde"], "outputs": ["forfait_bedrag", "toegepast_percentage"], "data_sources": ["Belastingdienst"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 1}, {"id": "hypotheekrenteaftrek", "name": "Hypotheekrenteaftrek", "category": "fiscaal", "description": "Aftrek met tariefsaanpassing en Hillen.", "inputs": ["betaalde_rente", "belastbaar_inkomen", "eigenwoningforfait"], "outputs": ["aftrek_bedrag", "effectief_voordeel", "hillen_deel"], "data_sources": ["Wet IB 2001"], "computation": "rules_based", "build_effort": "midden", "wft_risk": "laag", "tier": 1}, {"id": "bruto-netto-loon", "name": "Bruto-netto loon", "category": "fiscaal", "description": "Van brutoloon naar nettoloon met heffingskortingen.", "inputs": ["bruto_jaarloon", "leeftijd", "aow_status", "loonheffingskorting"], "outputs": ["netto_maand", "belasting", "premies", "heffingskortingen"], "data_sources": ["Belastingdienst tarieventabellen"], "computation": "rules_based", "build_effort": "midden", "wft_risk": "laag", "tier": 1, "regulatory_note": "Geen Wft-dienst - loon is geen financieel product. Alleen art. 6:193a BW (oneerlijke handelspraktijken) en AVG. Vermeld altijd het gehanteerde belastingjaar."}, {"id": "box3", "name": "Box 3 vermogensrendementsheffing", "category": "fiscaal", "description": "Heffing over spaargeld, beleggingen en schulden.", "inputs": ["spaargeld", "beleggingen", "schulden", "fiscaal_partner"], "outputs": ["grondslag", "heffing", "werkelijk_rendement_variant"], "data_sources": ["Wet IB 2001"], "computation": "rules_based", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "build_note": "Box 3 is in beweging (Wet werkelijk rendement). Zet een expliciete jaarversie in het model."}, {"id": "schenkingsbelasting", "name": "Schenkbelasting en vrijstellingen", "category": "fiscaal", "description": "Vrijstellingen en tarieven bij schenking, inclusief eigen woning.", "inputs": ["bedrag", "relatie", "doel", "eerdere_schenkingen"], "outputs": ["vrijstelling", "belastbaar", "tarief", "te_betalen"], "data_sources": ["Belastingdienst"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 2}, {"id": "huurtoeslag", "name": "Huurtoeslag", "category": "fiscaal", "description": "Recht op en hoogte van huurtoeslag.", "inputs": ["huurprijs", "inkomen", "huishoudsamenstelling", "leeftijd", "vermogen"], "outputs": ["recht", "bedrag_per_maand"], "data_sources": ["Belastingdienst/Toeslagen"], "computation": "rules_based", "build_effort": "midden", "wft_risk": "laag", "tier": 2}, {"id": "kenteken-check", "name": "Kentekencheck", "category": "auto", "description": "Alle open RDW-gegevens per kenteken.", "inputs": ["kenteken"], "outputs": ["merk", "handelsbenaming", "bouwjaar", "brandstof", "massa", "apk_vervaldatum", "catalogusprijs", "bruto_bpm", "tellerstandoordeel", "export_indicator", "terugroepacties", "wam_verzekerd"], "data_sources": ["RDW opendata Socrata"], "computation": "lookup", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "build_note": "Beste kosten/baten van alle tools: gratis, publiek domein, direct bruikbaar.", "verified_values": {"licentie": "Public Domain (dataset-metadata m9d7-ebf2)", "hoofddataset": "m9d7-ebf2 (98 kolommen)", "waardevelden": "catalogusprijs en bruto_bpm ZITTEN ERIN, maar zijn vaak leeg bij oudere en geimporteerde voertuigen - meet je dekking met $where=catalogusprijs IS NOT NULL", "koppelsleutel_extern": "typegoedkeuringsnummer + variant + uitvoering"}}, {"id": "autowaarde", "name": "Autowaarde-indicatie", "category": "auto", "description": "Indicatieve dagwaarde of handelswaarde.", "inputs": ["kenteken", "kilometerstand", "staat"], "outputs": ["waarde_indicatie", "bandbreedte", "betrouwbaarheid"], "data_sources": ["RDW opendata", "koerslijst (BETAALD)"], "computation": "model", "build_effort": "hoog", "wft_risk": "laag", "tier": 2, "data_blocker": "COMMERCIELE MUUR. Autotelex, XRAY (VWE), Autovista (nu J.D. Power), JATO - allemaal enterprise-contract, geen publieke prijs, geen self-service. Er is geen open of freemium koerslijst in NL. ANWB Koerslijst is een consumententool zonder API.", "build_note": "AANBEVOLEN ARCHITECTUUR: RDW als gratis featurelaag (specs, catalogusprijs, bruto BPM als nieuwprijs-anker) + koerslijst als betaald restwaarde-anker + jouw model als differentiator. Een proxy uit alleen open data is NIET haalbaar: je mist het label (transactieprijs). Scrapen van Marktplaats/AutoScout24 voor prijspunten valt onder Innoweb/Wegener (C-202/12, de Gaspedaal/Autotrack-zaak) - het Hof verwierp expliciet dat opgeknipt per-query bevragen inbreuk vermijdt."}, {"id": "km-plausibiliteit", "name": "Kilometerstand-plausibiliteit", "category": "auto", "description": "Toetst een opgegeven kilometerstand tegen het RDW-tellerstandoordeel.", "inputs": ["kenteken", "opgegeven_km"], "outputs": ["rdw_oordeel", "jaar_laatste_registratie", "plausibiliteit"], "data_sources": ["RDW opendata"], "computation": "lookup", "build_effort": "laag", "wft_risk": "laag", "tier": 2, "build_note": "RDW geeft alleen een OORDEEL ('Logisch'/'Onlogisch'/'Geen oordeel'), niet de werkelijke standen - die zitten in het tellerstandenregister zonder publieke API. Elegante oplossing: gebruiker voert km in, jij toont het RDW-oordeel als betrouwbaarheidsvlag."}, {"id": "bpm-import", "name": "BPM bij import", "category": "auto", "description": "BPM-berekening via de forfaitaire tabel.", "inputs": ["datum_eerste_toelating", "datum_goedkeuring", "co2", "brandstof", "bruto_bpm"], "outputs": ["afschrijving_pct", "te_betalen_bpm"], "data_sources": ["Belastingdienst forfaitaire tabel", "RDW"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 2, "build_note": "Geen API, geen CSV - HTML-tabel van ~200 regels die je eenmalig overtypt en jaarlijks controleert. Wetsartikel (art. 8 Uitvoeringsregeling BPM 1992) NIET geverifieerd.", "verified_values": {"forfaitair_nulpunt": "na 17 jaar en 10 maanden is de BPM nul"}}, {"id": "wegenbelasting", "name": "Motorrijtuigenbelasting", "category": "auto", "description": "MRB per kenteken en provincie.", "inputs": ["kenteken", "provincie"], "outputs": ["mrb_per_kwartaal", "opcenten"], "data_sources": ["RDW (massa, brandstof)", "Belastingdienst MRB-tarieven", "provinciale opcenten"], "computation": "rules_based", "build_effort": "laag", "wft_risk": "laag", "tier": 2}, {"id": "tco-auto", "name": "Total cost of ownership", "category": "auto", "description": "Alle kosten per jaar en per kilometer.", "inputs": ["kenteken", "jaarkilometrage", "brandstofprijs", "verzekeringspremie"], "outputs": ["kosten_per_jaar", "kosten_per_km", "afschrijving", "opsplitsing"], "data_sources": ["RDW", "Belastingdienst MRB", "Nibud autokosten (LET OP LICENTIE)"], "computation": "model", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "build_note": "Nibud-referentiecijfers zijn commercieel gelicentieerd. Gebruik eigen kengetallen of CBS-brandstofprijzen."}, {"id": "kvk-lei-brug", "name": "KVK-LEI koppeling", "category": "bedrijven", "description": "Zoek een LEI bij een KVK-nummer en omgekeerd.", "inputs": ["kvk_nummer", "of_lei", "of_naam"], "outputs": ["lei", "kvk_nummer", "legal_name", "status", "parent", "children"], "data_sources": ["GLEIF API v1", "GLEIF Golden Copy"], "computation": "lookup", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "build_note": "Fundament voor alle entiteitskoppeling. 1x/dag Golden Copy ophalen, filteren op NL, brugtabel bouwen.", "verified_values": {"koppelregel": "RegistrationAuthorityID = RA000463 is KVK Handelsregister, RegistrationAuthorityEntityID IS het KVK-nummer", "licentie": "CC0 - je mag de brugtabel zelf publiceren", "rate_limit_api": "60 requests/minuut", "bulk": "goldencopy.gleif.org/api/v2/golden-copies/publishes/lei2/latest.csv - volg de 302-redirect"}}, {"id": "anbi-check", "name": "ANBI-status", "category": "bedrijven", "description": "Is een organisatie een ANBI, sinds wanneer.", "inputs": ["rsin", "of_naam"], "outputs": ["anbi_status", "ingangsdatum", "vestigingsplaats", "website"], "data_sources": ["Belastingdienst ANBI-bestand"], "computation": "lookup", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "verified_values": {"bron": "download.belastingdienst.nl/data/anbi/anbi.zip, CC0, ~4 MB, elke dinsdag ververst", "koppelveld": "fiscaalnummer = RSIN, koppelbaar aan KVK"}}, {"id": "vergunning-check", "name": "Financiele vergunningcheck", "category": "bedrijven", "description": "Staat een partij in de AFM- of DNB-registers, en met welke vergunning.", "inputs": ["naam", "of_kvk_nummer", "of_vergunningnummer"], "outputs": ["registers_gevonden", "vergunningsoort", "status", "toezichthouder"], "data_sources": ["AFM export.aspx per register", "DNB Openbaar Register"], "computation": "lookup", "build_effort": "midden", "wft_risk": "laag", "tier": 1, "build_note": "AFM: export.aspx?type={GUID}&format=csv, dagelijks. DNB: complete dump elke werkdag 06:00. Beide gratis. Dit bestaat nergens als een genormaliseerde API."}, {"id": "toezichthouder-dossier", "name": "Toezichthouderdossier per bedrijf", "category": "bedrijven", "description": "Alles wat toezichthouders publiceerden over een organisatie, met entity-linking naar KVK en LEI.", "inputs": ["kvk_nummer", "of_naam", "of_lei"], "outputs": ["besluiten", "boetes", "inspectierapporten", "rechterlijke_uitspraken", "bronnen"], "data_sources": ["Rechtspraak Open Data (CBb!)", "KOOP SRU officielepublicaties", "ACM besluiten", "WooZM", "AFM maatregelen"], "computation": "hybrid", "build_effort": "hoog", "wft_risk": "laag", "tier": 1, "build_note": "DE MEEST ONDERSCHEIDENDE TOOL. CBb (College van Beroep voor het bedrijfsleven) is de beroepsinstantie voor ACM/AFM/NVWA-besluiten en zit in rechtspraak.nl (3,7 mln ECLI's, CC0). Handhavingsbesluiten van AFM/DNB/AP verschijnen in de Staatscourant - dus machineleesbaar via KOOP SRU."}, {"id": "aanbestedingen", "name": "Aanbestedingen per organisatie", "category": "bedrijven", "description": "Welke overheidsopdrachten heeft een bedrijf gewonnen of loopt er.", "inputs": ["kvk_nummer", "of_naam", "cpv_code", "periode"], "outputs": ["aankondigingen", "gunningen", "waarden"], "data_sources": ["TED Search API v3", "TenderNed datasets"], "computation": "lookup", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "build_note": "OPEN VRAAG: draagt eForms voor NL het KVK-nummer in het organisatieblok? Dat zou TED direct aan je KVK-graaf koppelen. Uitzoeken.", "verified_values": {"ted": "POST api.ted.europa.eu/v3/notices/search, GEEN API-key, buyer-country=NLD (ISO-3), metadata CC0"}}, {"id": "adres-validatie", "name": "Adresvalidatie en autocomplete", "category": "locatie", "description": "Normaliseer en valideer een Nederlands adres.", "inputs": ["vrije_tekst", "of_postcode_huisnummer"], "outputs": ["bagid", "gestandaardiseerd_adres", "coordinaten", "suggesties"], "data_sources": ["BAG API", "PDOK Locatieserver"], "computation": "lookup", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "altum_equivalent": "Autosuggestie / Autosearch"}, {"id": "buurtprofiel", "name": "Buurtprofiel", "category": "locatie", "description": "Demografie, inkomen, woningvoorraad en voorzieningen per buurt.", "inputs": ["postcode", "of_buurtcode"], "outputs": ["inwoners", "gemiddeld_inkomen", "woningvoorraad", "leeftijdsopbouw", "voorzieningen"], "data_sources": ["CBS Kerncijfers wijken en buurten", "Waarstaatjegemeente"], "computation": "lookup", "build_effort": "laag", "wft_risk": "laag", "tier": 1}, {"id": "veiligheid-buurt", "name": "Veiligheidsbeeld per buurt", "category": "locatie", "description": "Geregistreerde misdrijven per gemeente en soort.", "inputs": ["gemeente", "periode", "soort_misdrijf"], "outputs": ["aantallen", "trend", "vergelijking_landelijk"], "data_sources": ["data.politie.nl via CBS dataderden"], "computation": "lookup", "build_effort": "laag", "wft_risk": "laag", "tier": 2, "build_note": "LICENTIE-INCONSISTENTIE: politie-portaal zegt CC0, de CBS-tabellen zeggen CC-BY 4.0. Documenteer beide. Politie wijst verzoeken om buurt-/wijkniveau structureel af - gemeenteniveau is het maximum."}, {"id": "bereikbaarheid", "name": "Bereikbaarheid en mobiliteit", "category": "locatie", "description": "Reistijden met OV en auto, haltes en frequenties.", "inputs": ["postcode", "huisnummer", "bestemming"], "outputs": ["ov_haltes", "reistijd_ov", "reistijd_auto", "frequentie"], "data_sources": ["NDOV GTFS", "OVapi GTFS", "NDW"], "computation": "hybrid", "build_effort": "midden", "wft_risk": "laag", "tier": 2, "verified_values": {"ndov": "data.ndovloket.nl - expliciet CC0, geen registratie", "ovapi": "gtfs.ovapi.nl/gtfs-nl.zip, dagelijks, 220 MB"}}, {"id": "monument-check", "name": "Monumentstatus", "category": "locatie", "description": "Is een pand rijks-, provinciaal of gemeentelijk monument, of beschermd stadsgezicht.", "inputs": ["postcode", "huisnummer", "of_bagid"], "outputs": ["monumentstatus", "monumentnummer", "beschermd_gezicht"], "data_sources": ["RCE Linked Data rijksmonumenten-API"], "computation": "lookup", "build_effort": "laag", "wft_risk": "laag", "tier": 1, "verified_values": {"rate_limit": "20 requests/seconde, beschikbaarheid 99,7%", "output": "JSON-LD", "bronvermelding": "verplicht"}}, {"id": "bestemmingsplan", "name": "Planologische status", "category": "locatie", "description": "Geldende omgevingsplanregels en publiekrechtelijke beperkingen.", "inputs": ["postcode", "huisnummer", "of_perceel"], "outputs": ["bestemming", "bouwregels", "beperkingen"], "data_sources": ["PDOK Ruimtelijke Plannen / DSO", "Wkpb"], "computation": "lookup", "build_effort": "hoog", "wft_risk": "laag", "tier": 2}]}