Multi-tenant Huurdersportaal met IoT-energiemonitoring

De uitdaging
Henk Verhoeven verhuurt via HVS Trading bedrijfsruimte op Business Center Altena: vier panden aan De Hoogjens op het bedrijventerrein in Sleeuwijk (gemeente Altena, direct aan de A27). De commerciele huurders — losse bedrijven die kantoren en units huren — werden tot dan toe beheerd met een combinatie van WhatsApp, een eenvoudige WordPress-site en losse administratie.
Dat liep vast op vier punten:
- Onderhoudsmeldingen via WhatsApp lieten geen spoor na. Geen status, geen historie, geen overzicht van wat openstond bij welke huurder of welke aannemer.
- Versnipperde administratie. Huurcontracten, servicekosten, facturen, documenten en meterstanden zaten in losse bestanden en systemen zonder centraal beheer.
- Geen accurate doorbelasting van nutsverbruik. De panden hebben deels analoge tussenmeters. Zonder periodieke, betrouwbare meterstanden per unit is een eerlijke verdeling van elektra- en gaskosten over huurders (de verdeelsleutel) lastig en arbeidsintensief.
- Geen koppeling naar de boekhouding en geen eigen datastroom richting het AI-dashboard waarmee Henk zijn portefeuille wil overzien.
De kern van de vraag: vervang het lappendeken door een centraal portaal voor verhuurder en huurders, en los specifiek het meterstanden-probleem op een manier op die ook werkt bij oude analoge meters — zodat servicekosten correct en aantoonbaar verdeeld kunnen worden.
De aanpak en oplossing
CleverTech AI bouwde een multi-tenant huurdersportaal: een SaaS-platform waarin Business Center Altena de eerste organisatie is, opgezet zodat het later voor meer beheerders/verhuurders herbruikbaar is. Het draait als een moderne Next.js 16 / React 19 applicatie met PostgreSQL 17 en Prisma, bovenop een datamodel van bijna veertig modellen.
Een portaal voor verhuurder, huurder en aannemer
Het portaal kent vier rollen met een rol-bewust dashboard:
- Platformbeheer — beheer over de tenants heen.
- Huurder — onderhoudsmeldingen indienen met foto's, status volgen, het eigen huurcontract bekijken, facturen zien en betalen, documenten downloaden en gedeelde voorzieningen zoals vergaderruimtes reserveren.
- Verhuurder (Henk) — panden, units, huurders en aannemers beheren, werkorders uitzetten, facturen en servicekosten-verdelingen genereren, de energiemonitoring beheren en aankondigingen plaatsen.
- Aannemer — werkorders ontvangen, de status bijwerken en kosten vastleggen.
De WhatsApp-stroom is vervangen door een onderhoudsmodule met een statusworkflow (van open tot afgehandeld), interne en externe reactie-threads en SLA-termijnen — zodat elke melding een spoor en een eigenaar heeft.
Meterstanden als datastroom, niet als handwerk
Het meterstanden-probleem is opgelost met een eigen meetketen: cameramodules in de meterkasten fotograferen de analoge meters op een instelbaar interval, AI-beeldherkenning leest de standen af met een betrouwbaarheidsscore, en gevalideerde standen (met alerts bij een te lage betrouwbaarheid of een onwaarschijnlijke sprong) voeden de energiemodule — waarmee de verhuurder servicekosten per huurder kan verdelen op basis van werkelijk verbruik. Voor units met een digitale slimme meter is er een tweede route: het portaal accepteert ook P1/DSMR-telemetrie rechtstreeks als JSON.
Hoe die meetketen technisch in elkaar zit — van de ESP32-camerahardware en deep-sleep-cycli tot de crop-regio's waarmee één camera meerdere meters afleest — staat in de aparte case Meterstanden automatisch uitlezen met AI-beeldherkenning.
AI-triage en koppelingen
Naast de meter-OCR zit er AI-triage op onderhoudsmeldingen: inkomende meldingen worden automatisch ingedeeld op categorie en prioriteit. De boekhouding is gekoppeld via een zelfgebouwde Yuki-integratie (SOAP). Voor de eigen datastroom richting Henks AI-dashboard zijn er HMAC-ondertekende webhooks en een partner-REST-API met gehashte API-sleutels.
Beveiliging en isolatie als fundament
Omdat meerdere organisaties op hetzelfde platform draaien, is tenant-isolatie geen bijzaak maar een ingebouwd principe: een Prisma-extensie injecteert automatisch het organisatie-filter op alle queries (over 24 modellen), met Postgres row-level security en middleware als extra lagen.
Verder: Auth.js v5 met rollen, een Redis-gebaseerde rate-limiter, eenmalige invite-tokens, gehashte API-sleutels, SSRF-bescherming op webhooks, een volledig audit-log, en een complete CSP/HSTS-set.
Het platform is tweetalig (Nederlands als standaard, Engels volledig vertaald) en draait via Docker Compose achter een Plesk-proxy, met een GitHub Actions-pipeline die lint, type-check en build afdwingt voor elke deploy.
Wat het opleverde
Geautomatiseerd meterstanden aflezen
IoT-energielus: ESP32-CAM fotografeert analoge meters, Claude Vision leest ze af voor servicekosten-verdeling per huurder
- ~40 modellen
- Multi-tenant datamodel met ~40 modellen en ingebouwde tenant-isolatie (Prisma-extensie + Postgres RLS)
- ~25 modules
- Centraal portaal met circa 25 modules voor verhuurder, huurder en aannemer
- camera + P1
- Twee meter-ingestroutes: camera-OCR voor analoge meters en P1/DSMR voor slimme meters
- AI-triage + Yuki
- AI-triage op onderhoudsmeldingen (categorie + prioriteit) plus Yuki-boekhoudkoppeling en HMAC-webhooks
- nl + en
- Tweetalig platform (nl + en), 339 source-bestanden / 137 componenten
- 28 + 18 fixes
- Beveiligingshardening via twee audit-rondes (28 + 18 issues opgelost; o.a. 14 FK-constraints, JWT- en rate-limiter-fixes)
Vergelijkbare cases
Business Center Altena (HVS Trading, Sleeuwijk)Meterstanden automatisch uitlezen met camera en AI-beeldherkenning
15-30minuten tussen aflezingen
Eigen product — CleverTech AIAI-assistent op een eigen tekstcorpus met RAG (Bijbel Assistent)
4vertalingen als doorzoekbaar RAG-corpus
Eigen product — CleverTech AIOnze eigen AI-business-assistent: AI diep in de bedrijfsvoering
341kregels TypeScript in dagelijks eigen gebruik
Klaar voor zulke resultaten?
Gratis AI-scan: binnen 48 uur een rapport met de AI-kansen met de hoogste ROI voor jouw bedrijf — concreet, geen verkooppraatje.

