Portfolio Architectuur
Laatst bijgewerkt: 2026-05-19 Status: Actueel
Scope
Hoe de Ruimtemeesters-apps in elkaar grijpen — front doors, gedeelde infra, dataflows en de belangrijkste contracten. Niet de interne architectuur van afzonderlijke apps; die staat in de product-repo zelf.
Overzicht
Het portfolio organiseert zich grofweg in vijf lagen: een toegangslaag (waar gebruikers binnenkomen), een gedeelde infra-laag (MCP, memory, skills, security, aggregator), een bron-laag (de beleids-, wet- en jurisprudentiecorpora), een inzicht-laag (geo, dashboards, time series), en een werk-laag (adviestools, CRM, projectbeheer).
Het diagram toont de hoofdrelaties; niet elk randje is een hard contract, en de werklaag is met opzet platgeslagen. Wat dragend is staat hieronder.
Componenten
| Component | Wat het bezit | Eigenaar |
|---|---|---|
| Workspace | Auth (Clerk), launcher-UI, usage-tracking | Ralph |
| Browser-Chatbot | Chat-front voor het hele ecosysteem; consumeert MCP-tools en skills | Ralph |
| Inbox | Microsoft Graph webhook-handlers, regelengine, action-dispatcher | Ralph |
| MCP-Servers | Per-app MCP-server-implementaties op één plek | Ralph |
| Memory | HTTP API voor save/recall/forget, BOPA-sessies, thema's | Ralph |
| Skills | Chat-skill corpus die als processen draaien via MCP | Ralph |
| Platform | Gedeelde ADRs, herbruikbare componenten, infra-besluiten | Ralph |
| Aggregator | Read-only API-gateway over Databank + Geoportaal + Riens-Sales-Viewer; gedeelde SQL en API-toegang voor cross-repo consumers | Ralph |
| Security | Herbruikbare GitHub Actions workflows + host-side nightly | Ralph |
| Databank | Beleidsdocument-corpus + zoekfunctionaliteit | Ralph |
| Wetten | BWB-native Nederlandse juridische corpus | Ralph |
| Geoportaal | Map Viewer (OpenLayers) — documenten met geometrie | Ralph |
| Dashboarding | Thema-dashboards per gemeente (CBS-data) | Ralph |
| TSA | Demografische time-series-analyse en forecasting | Ralph |
| BOPA-Toetsing-en-Motivering | AI-gedreven toetsing en motivering, gebouwd op Databank/Wetten/Geoportaal/Beleidsscans/DocGen | Ralph |
| Beleidsscans | 19 thema-scans bovenop een gedeelde scanmethode | Ralph |
| Opdrachten-Scanner | DAS- en inhuur-platform-scrapers (ethisch begrensd) → CRM | Ralph |
| Projectbeheer | Bureauproject-administratie; monorepo api/frontend/shared | Ralph |
| CRM | Forceflow-mirror in Postgres met three-way merge | Ralph |
| Document-Generator | Embedbare .docx-editor (Web Component, SuperDoc) | Ralph |
| (overige werklaag-apps) | Zie [[portfolio-map]] | Ralph |
Belangrijkste flows
1. Chatbot consumeert MCP-tools
Een gebruiker chat in Browser-Chatbot. De chatbot heeft toegang tot tools die door MCP-Servers worden gepubliceerd (één server per app: Databank, Geoportaal, Wetten, Memory, etc.). Een tool-aanroep gaat naar de relevante MCP-server, die de daadwerkelijke app aanroept. Skills sturen op welke tools wanneer beschikbaar zijn — ze draaien als processen via MCP (zie Platform ADR-0008 en ADR-0010 in de Platform-repo).
2. Memory langs alle apps
Memory is geëxtraheerd uit MCP-Servers (Platform ADR-0012) en draait standalone op :4100 op rm-network. Elke app die continuïteit nodig heeft over sessies (BOPA-sessies, thema-context, gebruikersvoorkeuren) praat met Memory via HTTP.
3. Workspace als launcher
Workspace op datameesters.nl is de gepersonaliseerde landingsplek — gebruikers loggen in (Clerk), zien hun beschikbare apps, klikken door naar Databank / Geoportaal / Projectbeheer / Nieuwsbrief / etc. Usage-tracking loopt centraal.
4. BOPA-toetsing snijdt door meerdere apps
Een BOPA-toetsing-flow leest beleid uit Databank en geo-context uit Geoportaal (meestal gebundeld via Aggregator zodat de SQL/API-laag herbruikt blijft), pakt het juridisch kader uit Wetten, gebruikt Beleidsscans als thema-vertrekpunt, en produceert via Document-Generator een ingevulde motivering. Memory houdt de sessie en thema-staat bij. Dit is de meest cross-cutting workflow in het portfolio.
5. Mail in → actie uit
Inbox ontvangt Microsoft Graph webhooks voor @ruimtemeesters.nl mailboxen, encrypteert berichten, evalueert ze tegen gebruikersregels (cheap filter → LLM-criteria) en dispatcht acties: notify, webhook, CRM-update, app-integratie.
6. Opdracht-detectie → CRM
Opdrachten-Scanner scant Nederlandse DAS- en inhuur-platforms volgens een strikt ethisch scrape-beleid (robots.txt en TOS respecteren, geen workarounds, rate-limiting verplicht) en promoveert relevante signalen naar prospects in CRM. CRM zelf is een mirror van Forceflow (Connect API + Excel-exports) in Postgres, met een three-way merge bij re-import zodat lokale bewerkingen niet verloren gaan.
7. Aggregator als read-only gateway
Aggregator zit tussen consumers (zoals BOPA-Toetsing) en de onderliggende stores. Hij bundelt SQL en API-toegang over Databank, Geoportaal en het aanpalende Riens-Sales-Viewer. Effect: nieuwe cross-repo consumers hoeven niet drie verschillende clients/connecties op te zetten, en gedeelde query-logica woont op één plek in plaats van overal te driften.
Gerelateerde besluiten
- [[PORTFOLIO-001-overlay-geen-mirror]] — Documentatie als overlay, niet als mirror
- Platform ADR-0008 (chat skills as front door) — in
Ruimtemeesters-Platform - Platform ADR-0010 (skills as processes) — in
Ruimtemeesters-Platform - Platform ADR-0012 (memory service extraction) — in
Ruimtemeesters-Platform
Gerelateerde PRDs
(Nog geen cross-repo PRDs in deze repo. De eerstvolgende is mogelijk een PRD voor de overlay-generator, hoewel die voorlopig vanuit visie + TDS rechtstreeks naar implementatie gaat.)