PadelOS4 — Intelligence Engine / zie ook PadelOS5 — Personal Padel Agent
Wat bestaat er?
Wat kost het?
Wat is beschikbaar?
Wat verandert?
Wat gebeurt er in de markt?
Wat verwachten we?
We zitten goed op PadelOS4 v4.2 en ik ben niet opnieuw begonnen.
DONE
De gekoppelde spreadsheet is exact PadelOS 4 clubs banen prijzen updates NL v02092026.
De backend die ik terugvind is daadwerkelijk ingesteld op VERSION: '4.2.0-nl-booking-intelligence', spreadsheet-ID 1-rVu7...pwWY, nulmeting 2026-09-03 en padelstijn@gmail.com.
De Booking Intelligence-laag staat in de code: subscribers, alerts, availability, booking connectors, booking intents, memberships, AI jobs en weather cache.
De Sheet bevat die tabs ook daadwerkelijk. PAD4_SETTINGS is vandaag gevuld, inclusief BASELINE_DATE=2026-09-03, ADMIN_EMAIL=padelstijn@gmail.com, confidence 0.93 en discovery op REVIEW.
Historische prijswijzigingen worden append-only naar NL_PADEL_PRIJS_HISTORY geschreven. De actuele prijstabel krijgt bij een geverifieerde wijziging óók een nieuwe rij in plaats van een historische rij te overschrijven. Dat sluit aan bij de harde historie-regel.
WORKING
pad4Setup() heeft aantoonbaar effect gehad: alle v4.2-tabs bestaan en de settings hebben timestamps van 3 september 2026 07:55:41. De functie zelf maakt/controleert de v4-tabstructuren.
De triggerconfiguratie in CURRENT is logisch: dagelijkse kickoff rond 05:10, worker iedere 15 minuten, dagelijkse samenvatting rond 08:05 en voorspellingen rond 08:20.
Ik kan vanuit deze omgeving echter niet rechtstreeks ScriptApp.getProjectTriggers() of pad4Setup() in jouw Apps-Script-project uitvoeren. Ik kan dus de code en Sheet-resultaten controleren, maar niet eerlijk zeggen dat ik de live Apps Script runtime heb uitgevoerd.
Voor de end-to-end proef heb ik TREE11 Alkmaar genomen. De bronregisterrij SRC-NL-ALK-TREE11 bestaat. De officiële TREE11-pagina vermeldt Playtomic/receptie, dubbelbaan €26 dal / €36 piek en single €22 dal / €25 piek. Ook lessen en openingstijden staan op dezelfde officiële bron. Die vier prijsniveaus staan correct in NL_PADEL_TARIEVEN. Daarmee is bron → bestaande club → actuele prijsdata inhoudelijk gevalideerd. De runtime-keten queue → fetch → fact detection → change/history/news is voor TREE11 nog niet bewezen, want PAD4_FETCH_LOG bevat nog geen TREE11-fetch en LAST_CHECKED_AT in het source registry is nog leeg.
Er zijn meteen twee belangrijke punten voor de landelijke pipeline. Ten eerste is de bestaande discovery nog te klein: pad4DiscoverNow_() draait hoofdzakelijk de bestaande chain/sitemap-discovery en zet nieuwe URL's met score 0.70 in REVIEW. Ten tweede zit er een echte schaalbeperking in de huidige importer: pad4ImportPreview_() retourneert slechts rows.slice(0,50) en pad4ImportApply_() importeert vervolgens juist díe prev.rows. Daardoor kan één landelijke import momenteel feitelijk maximaal 50 kandidaten per apply-run verwerken. Dat moeten we oplossen vóór we richting 780+ aanbieders gaan.
Voor v4.2.1 landelijke discovery/import zou ik daarom één pipeline binnen dezelfde Code.gs bouwen:
DISCOVER — PUBLIC_PAGE, OFFICIAL_API, AUTHORIZED_BROWSER en IMPORT_FEED als expliciete methodes; start met landelijke referentielijsten, ketens, clubsites, sitemaps en toegestane feeds.
NORMALIZE — naam, vestiging, adres, postcode/plaats, provincie, GPS, website en bookinglink normaliseren.
IDENTITY/MATCH — stabiele CLUB_ID; matchscore op naam + adres/postcode + GPS + domein. Exacte matches verrijken; twijfelgevallen naar REVIEW; nooit blind dupliceren.
FACTS — feiten afzonderlijk vastleggen voor banen, indoor/outdoor, single/double, prijzen, openingstijden, lid/niet-lid, bookingplatform, lessen, trainers, events en faciliteiten.
PROVENANCE — ieder feit krijgt SOURCE_ID, methode, URL, fetched-at, confidence en bewijs.
HISTORY — nieuwe meting append-only. Geen prijs- of baanhistorie overschrijven.
CHANGE — huidige betrouwbare toestand versus laatste betrouwbare historische toestand.
NEWS → RSS → ALERT → PREDICTION — uitsluitend vanuit bevestigde changes, zodat de bestaande downstream v4.2-keten behouden blijft.
COMPLETENESS — per club automatisch score 0–100 op de door jou genoemde minimumvelden.
NATIONAL QUEUE — import/discovery in batches, resumable en idempotent, zodat 780, 1.000 of later meer locaties veilig kunnen worden verwerkt.
TODO
De landelijke importer moet dus niet worden vervangen, maar uitgebreid met PAD4_DISCOVERY_RUNS, een echte kandidaat-/identitylaag, paged/batched import en field-level provenance. NL_PADEL_CLUBS blijft daarbij de actuele canonieke clubindex; histories blijven apart.
BLOCKED
Alleen de echte Apps-Script-runtime-test van pad4Setup(), pad4InstallTriggers() en pad4Worker() kan ik hier niet direct starten. De Sheet bewijst wel dat setup is uitgevoerd; de lege TREE11-fetchstatus bewijst juist dat ik de worker niet als “geslaagd” mag afvinken.
NEXT
De beste volgende stap is nu Code.gs v4.2.1 uitbreiden met de landelijke discovery/import-engine, inclusief het verwijderen van de 50-recordlimiet, deduplicatie/identity matching, completeness scoring en een batch-runner voor de eerste honderden Nederlandse clubs. De bestaande booking/history/news/RSS/alert/prediction-laag blijft daarbij intact.
Ik maak dit nu als een aparte PadelOS4-monitorapp, zodat de bestaande PadelOS-padelschool intact blijft. Eerst lees ik de actuele kopie-Sheet exact uit, daarna bouw ik één complete set met Code.gs + Index.html en alleen de extra backendbestanden die echt nodig zijn voor dagelijkse broncontrole, historie, prijsvergelijking en meldingen.
De kopie is exact gecontroleerd: hij bevat alle bestaande landelijke tabs (NL_PADEL_CLUBS, NL_PADEL_TARIEVEN, prijs-/baanhistorie, boekingskoppelingen en monitor). Ik bouw PadelOS4 dus bovenop deze kopie, met een eigen PAD4_*-laag voor crawling, wachtrijen, change detection en review. De bestaande 3 september 2026-data blijft de historische nulmeting en wordt niet overschreven.
PadelOS4 = de intelligente Nederlandse data- en marktlaag.
PadelOS5 = later de persoonlijke boekingsassistent/automationlaag.
Ik heb de basis hiervoor nu verder gebouwd, zonder de bestaande PadelOS-schooladministratie aan te raken.
Download nieuwe Code.gs
Download nieuwe Index.html
Download README / installatie
Download complete PadelOS4 v4.2 ZIP
De actuele v4.1 was al ingericht op historische snapshots, nieuws/RSS, bronvermelding en SIGNAL_ONLY-voorspellingen. De publieke RSS/JSON-laag zit eveneens al rechtstreeks in de webapp.
Er staan nu acht nieuwe PadelOS4-tabellen in je kopie:
PAD4_SUBSCRIBERS
PAD4_ALERT_RULES
PAD4_AVAILABILITY_HISTORY
PAD4_BOOKING_CONNECTORS
PAD4_BOOKING_INTENTS
PAD4_MEMBERSHIPS
PAD4_AI_JOBS
PAD4_WEATHER_CACHE
Daarmee ontstaat een veel interessantere keten.
Internet/club/API → PadelOS4 → feit → historie → verandering → nieuws → RSS → persoonlijke alert → voorspelling → booking-intent.
PadelOS4 blijft eerst Nederland compleet maken:
club → locatie → banen → indoor/outdoor → prijs → lid/niet-lid → beschikbaarheid → boekingsplatform → lessen → trainers → events → bron
De huidige database is dus niet het eindpunt. De bedoeling is dat nieuwe clubs en banen vanzelf als kandidaten verschijnen en gecontroleerd worden.
PAD4_AVAILABILITY_HISTORY kan veel preciezer worden dan onze huidige prijstabel.
Ik maak hiervan nu een echte monitor-database, niet alleen een statische prijslijst. De officiële KNLTB-basis voor 2025/2026 is 780 aanbieders en 3.523 banen;
die totalen gebruik ik voortaan als referentiepunt,
en
elke nieuwe/gesloten club of baan wordt als wijziging gelogd
in plaats van de historie te overschrijven.
Voor TPC Daalmeer https://www.tpcdaalmeer.nl
heb ik nu ook de actuele situatie kunnen verifiëren: er zijn 3 padelbanen in gebruik;
niet-leden huren voor €21,50/uur dal en €26,50/uur 18:00–23:00;
tennisleden betalen €16/uur tijdens daluren.
Niet-leden boeken padel/hal via Meet & Play
volgens de huidige FAQ,
terwijl leden via de KNLTB ClubApp afhangen.
De club meldt bovendien een voorinschrijving voor binnen én buiten wanneer de nieuwe hal wordt gerealiseerd.
Ik voeg nu historie + monitoring + boekingskoppelingen toe aan de Sheet, zodat 3 september 2026 als nulmeting blijft staan.
Ik heb de basis hiervoor nu daadwerkelijk in PadelOS v02092026 aangelegd én een dagelijkse controle ingesteld.
Ik heb vier nieuwe tabs toegevoegd:
NL_PADEL_PRIJS_HISTORY — prijzen worden niet overschreven. De waarde van 3 september 2026 blijft de nulmeting; nieuwe tarieven worden nieuwe snapshots.
NL_PADEL_BAAN_HISTORY — bewaart veranderingen in aantal indoor/outdoor/single/double banen en bouwprojecten.
CLUB_BOEKING_KOPPELINGEN — per club: Playtomic, Meet & Play, KNLTB ClubApp, eigen booking, login/lidmaatschap, live beschikbaarheid, live prijs en deeplink.
NL_PADEL_MONITOR — bepaalt welke clubs, banen, prijzen, lessen, events en boekingsmogelijkheden opnieuw gecontroleerd moeten worden.
Dat past bij de PadelOS-opzet waarin de Sheet de gezaghebbende gegevenslaag is en historie behouden blijft.
TPC Daalmeer is nu als eerste monitorrecord opgenomen.
Volgens de huidige openbare clubinformatie zijn er 3 padelbanen. De gepubliceerde losse huur voor niet-leden is momenteel €21,50 per uur tijdens daluren en €26,50 per uur tussen 18:00 en 23:00. Tennisleden kunnen tijdens daluren een padelbaan huren voor €16 per uur.
Ik heb die drie prijzen expliciet als:
BASELINE · 2026-09-03
in NL_PADEL_PRIJS_HISTORY gezet. Als bijvoorbeeld in januari 2027 €21,50 → €23,00 wordt, blijft dus zowel €21,50 als €23,00 bewaard en kan PadelOS prijsontwikkeling tonen.
Voor reserveringen is er een belangrijk onderscheid. De club verwijst leden naar de KNLTB ClubApp voor afhangen/reserveren, terwijl niet-leden via Meet & Play losse padelbanen kunnen boeken.
Ook het toekomstige halproject staat nu afzonderlijk in NL_PADEL_BAAN_HISTORY. De club communiceert een voorinschrijving voor binnen én buiten wanneer de nieuwe hal wordt gerealiseerd. Ik sla daarom nog géén onbevestigd aantal nieuwe binnenbanen als feit op. Zodra de club bijvoorbeeld officieel meldt dat er vier binnenbanen bijkomen, ontstaat een nieuwe baansnapshot: 3 outdoor → 3 outdoor + 4 indoor = 7.
Ik heb daarnaast NL Padel Prijsupdate ingesteld. Die controleert iedere ochtend rond 08:00 openbare bronnen op wijzigingen in:
club → locatie → banen → nieuwe/gesloten banen → prijzen → lid/niet-lid → dal/piek/weekend → boekingsplatform → boekingslink → lessen/events.
Daarbij worden onder andere KNLTB, Meet & Play/ClubApp, Playtomic, Peakz, Plaza Padel, The Padellers, Padelclub Nederland en primaire clubsites meegenomen.
Belangrijk: ik behandel een Playtomic- of ander boekingssysteem niet automatisch als een vrij beschikbare API. Waar geen officiële publieke API/integratie is aangetoond, krijgt PadelOS een officiële booking/deeplink in plaats van ongeautoriseerd namens de gebruiker te boeken.
De landelijke referentie die ik hiervoor gebruik is momenteel 780 padelaanbieders en 3.523 banen volgens de KNLTB-cijfers; nieuwe locaties en banen moeten dat getal vervolgens laten veranderen in onze eigen historische database.
De volgende technische stap is de belangrijkste: de ±780 clubs zelf als masterrecords vullen, waarna de monitor per CLUB_ID prijzen, banen en bookingroutes kan onderhouden. Dat moet in batches via KNLTB/directories → primaire clubsite → bookingplatform, met deduplicatie; niet door 780 namen zonder broncontrole te verzinnen.
Ik maak de Sheet nu bruikbaar als landelijke clubcatalogus, niet alleen als prijslijst.
Ik ga dit niet meer alleen handmatig aanvullen. Voor 780 locaties is een levende importlaag nodig.
Ik test nu in dezelfde Sheet of Google Sheets de openbare clubdirectories rechtstreeks kan uitlezen via IMPORTXML.
Als dat werkt, kunnen we honderden locaties automatisch binnenhalen en daarna per club verrijken met primaire bronnen
zoals Plaza, Peakz, Playtomic en de clubsite.
Daarbij houd ik officiële totalen, live boekbare locaties en Playtomic-dekking bewust uit elkaar
— die zijn namelijk niet hetzelfde.
Ik voeg twee lagen toe:
NL_PADEL_CLUBS — club/locatie, plaats, aantal banen, boekingssysteem, bron, status.
NL_PADEL_BRONNEN — waar PadelOS de informatie vandaan kan halen en hoe betrouwbaar/actueel die bron is.
Daarmee kunnen we daarna provincie voor provincie de 780 officiële aanbieders/locaties benaderen en prijzen per tijdvak aanvullen.
Ik ga nu niet wachten tot “ooit” alle 780 perfect handmatig zijn uitgezocht. Ik zet alvast een eerste landelijke clubdirectory van tientallen concrete locaties in de Sheet, met BOEKINGSSYSTEEM, AANTAL_BANEN, BRON, BRONKWALITEIT en CHECKED_AT. Daarna kunnen tarieven steeds per club worden aangevuld zonder de club opnieuw te hoeven aanmaken.
Dit is precies de richting waarin NL_PADEL_CLUBS moet groeien: niet alleen een lijst met namen, maar uiteindelijk een Nederlandse PadelOS-locatiedatabase.
Ik heb de Sheet nu verder uitgebreid met extra Peakz-locaties en de bronnenlaag uitgebreid met Plaza Padel, AllesPadel, VindJePadel en PadelInsider. Bij Peakz heb ik waar publiek verifieerbaar ook het aantal banen toegevoegd, bijvoorbeeld Den Haag Binckhorst 9 indoor, De Uithof 6 indoor, Eindhoven Vijfkamplaan 14 indoor, Utrecht Vechtsebanen 7 indoor en Zwolle Spoorzone 7 indoor. Peakz vermeldt daarnaast trainingen en evenementen op zijn locatiepagina's.
Plaza Padel is inderdaad een belangrijke ontbrekende bron. Plaza werkt met Playtomic voor baanreserveringen en biedt naast vrij spelen ook trainingen, clinics, bedrijfsevenementen en andere groepsactiviteiten. Dat soort informatie moeten we afzonderlijk opslaan, omdat het veel meer zegt over een locatie dan alleen de huurprijs.
Voor de uiteindelijke ±780 aanbieders wil ik daarom per locatie ongeveer deze informatielagen bijhouden:
club → locatie → banen → tarieven → beschikbaarheid → boeking → trainers → lessen → clinics → events → faciliteiten → contact → beoordelingen → bron/verificatie
Voor kwaliteit van lessen/trainers moeten we voorzichtig zijn. Ik wil geen subjectief cijfer verzinnen. We kunnen wel objectief registreren: KNLTB-kwalificatie/licentie indien openbaar, trainersprofiel, aangeboden lesvormen, ervaring/specialisaties, jeugd/volwassenen, privé/groep, academy/lesschool, prijs, beschikbaarheid en eventueel openbare reviews. Een PadelOS KWALITEIT_SCORE kan later worden berekend, maar moet transparant laten zien waarop die score gebaseerd is.
Ik heb ook een interessante technische stap getest: een nieuwe tab NL_PADEL_IMPORTS die openbare directories automatisch via IMPORTXML probeert binnen te halen. Google blokkeert die imports voorlopig met “Please use a desktop web browser to allow access to fetch data from external urls.” De structuur staat er dus al, maar de externe toegang moet eenmaal in Sheets worden toegestaan. Daarna kunnen we onderzoeken of daarmee honderden locaties tegelijk kunnen worden geïmporteerd in plaats van ze één voor één te typen.
Belangrijk is ook dat 780 geen statisch eindgetal moet worden. Locaties openen, sluiten, voegen banen toe en wijzigen van reserveringssysteem. De betere PadelOS-doelstelling wordt daarom:
100% van de publiek vindbare Nederlandse padellocaties, met een LAST_VERIFIED, SOURCE, STATUS en volledigheidsscore per locatie.
De volgende verbetering die ik zou bouwen is een CLUB_COMPLETENESS-model: per club automatisch zichtbaar ✓ clubgegevens, ✓ banen, ✓ prijzen, ✓ boeken, ✓ trainers, ✓ lessen, ✓ events, ✓ faciliteiten, ✓ contact, ✓ broncontrole. Dan zien we tijdens het uitbreiden van 40 → 100 → 300 → 780 locaties onmiddellijk niet alleen hoeveel clubs we hebben, maar vooral hoe compleet iedere club is.
TREE11 Alkmaar: double €26 dal, €36 piek/weekend; single €22 dal, €25 piek/weekend.
TPV Heerhugowaard: €26,25 overdag en €29,40 avond/weekend.
The Padellers Hoorn/Zwaag: vanaf €16 dal en €24 piek/weekend.
Amsterdam-West: vanaf €24 dal en €30 piek.
Amsterdam-Zuid: vanaf €30 dal en €39 piek.
DunaMar Den Haag: €30 dal en €34 piek/weekend.
Padelife Rottemeren: €25 dal, €42,50 piek, €38 weekend en zelfs €52,50 nachttarief.
Veldhoven/Eindhoven-regio: vanaf €16 dal en €24 piek.
Eijsden/Maastricht-regio: vanaf €24.
Zuidbroek/Groningen-regio: €25 dal en €32 piek.
Peakz Eindhoven en Utrecht staan bewust als REFERENCE_ONLY, omdat de site een vanafprijs p.p. publiceert en de uiteindelijke baanprijs dynamisch is.
https://www.padelclubnederland.nl/locaties/locatie-almelo/tarieven/
https://www.padelclubnederland.nl/locaties/locatie-alphen-aan-den-rijn/tarieven/
https://www.padelclubnederland.nl/locaties/locatie-asperen/tarieven/
https://www.padelclubnederland.nl/locaties/locatie-druten/tarieven/
https://www.padelclubnederland.nl/locaties/locatie-franeker/tarieven/
https://www.padelclubnederland.nl/locaties/locatie-lemmer/tarieven/
https://www.padelclubnederland.nl/locaties/locatie-sneek/tarieven/
https://www.padelclubnederland.nl/locaties/locatie-staphorst/tarieven/
https://www.padelclubnederland.nl/locaties/locatie-vroomshoop/tarieven/
https://www.padelclubnederland.nl/locaties/locatie-wervershoof/tarieven/
https://www.padelclubnederland.nl/locaties/locatie-winterswijk/tarieven/
https://www.padelclubnederland.nl/locaties/locatie-zuidbroek/tarieven/
https://www.thepadellers.nl/court-booking/padel-stadskanaal
https://www.thepadellers.nl/court-booking/amsterdam-west
https://www.thepadellers.nl/court-booking/hoorn
https://www.thepadellers.nl/court-booking/emmeloord
https://www.thepadellers.nl/court-booking/padel-roermond
https://www.thepadellers.nl/court-booking/kapelle
https://www.thepadellers.nl/court-booking/amstelpark
https://www.thepadellers.nl/court-booking/rosmalen
Ja. De landelijke schaal is veel groter dan de oorspronkelijke 20 regels. De recentste officiële KNLTB-cijfers die ik kon verifiëren komen uit op ongeveer 780 padelaanbieders/-locaties in Nederland: circa 451 verenigingen en 329 commerciële centra, met gezamenlijk ongeveer 3.535 padelbanen. Dat is de beste basis voor het doelbereik van onze PadelOS-database.
Voor Playtomic zou ik geen exact Nederlands clubaantal in de Sheet zetten zolang Playtomic zelf geen actuele openbare NL-totaaltelling publiceert. Playtomic dekt veel commerciële centra, maar niet alle Nederlandse padelbanen. Verenigingsbanen lopen bijvoorbeeld vaak via KNLTB ClubApp/Meet & Play of een eigen reserveringssysteem. Playtomic is juist bijzonder waardevol voor live baanbeschikbaarheid en dynamische prijzen.
Ik heb daarom nu twee extra tabs in PadelOS v02092026 gemaakt: NL_PADEL_CLUBS, als landelijke masterdirectory, en NL_PADEL_BRONNEN, waarin onder andere KNLTB, Playtomic, Meet & Play/KNLTB ClubApp, clubsites, Padelclub Nederland, The Padellers, Peakz, Google Maps en secundaire directories staan met hun bruikbaarheid.
De gewenste eindstructuur wordt daarmee ongeveer:
±780 locaties → ±3.535 banen → meerdere tarieven per baan/tijdvak.
Dat laatste is belangrijk. 3.535 banen betekent niet 3.535 prijsregels. Eén baan kan bijvoorbeeld ma-vr dal, ma-vr piek, weekend, nacht, lid, niet-lid, 60 min, 90 min, indoor/outdoor en tijdelijke/dynamische tarieven hebben. Een echt goede landelijke PadelOS-prijsdatabase kan daardoor uiteindelijk gemakkelijk 5.000–15.000 tariefregels bevatten.
De belangrijkste openbare bronnen die we daarvoor kunnen combineren zijn :
KNLTB Zoek een Club / KNLTB cijfers voor de landelijke basis,
Playtomic voor commerciële locaties en live boekingen,
Meet & Play / KNLTB ClubApp voor verenigingen,
individuele clubsites voor vaste tarieven en voorwaarden,
en ketens zoals Padelclub Nederland, The Padellers en Peakz voor hun eigen locaties en tarieven.
Google Maps is daarnaast nuttig voor adres, website, telefoon en bestaanscontrole,
maar niet als primaire prijsbron.
Ik heb de eerste concrete landelijke locaties inmiddels ook in NL_PADEL_CLUBS gezet, verspreid over Noord-Holland,
Zuid-Holland,
Utrecht,
Flevoland,
Gelderland,
Overijssel,
Friesland,
Groningen,
Noord-Brabant,
Zeeland
Limburg.
Open de bijgewerkte PadelOS v02092026 Sheet
De volgende grote stap is dus niet nog 20 willekeurige clubs toevoegen, maar de ±780 Nederlandse locaties provincie voor provincie in NL_PADEL_CLUBS krijgen, waarna NL_PADEL_TARIEVEN per locatie wordt verrijkt. Dat maakt het uiteindelijk ook mogelijk dat een speler in PadelOS zegt: “Ik wil dinsdag 19:00 in Alkmaar trainen” en het systeem beschikbare clubs, banen, baanprijs, trainer, lesprijs en totaalprijs kan vergelijken.