Week W28 · 6-12 juli 2026

Build AI. Run AI. Own AI.

Ik bouw dit niet in een lab, maar middenin mijn eigen leven als zzp'er en vader — en toch ontwerp ik elke keuze alsof er een enterprise-klant op leunt: multi-tenant vanaf dag 1, secrets die nooit een mens ziet, migraties die nooit terug kunnen. Dit is het logboek van die combinatie: zelf bouwen, zelf draaiend houden, zelf eigenaar blijven — inclusief de aanname, de misser en de prijs van elke keuze.

Deze week lopen twee belangrijke bouwlijnen naast elkaar. Aan de ene kant maak ik de knowledge graph en profielbouwstenen minder afhankelijk van één specifieke toepassing. Aan de andere kant ontstaat een configuratiegestuurde generator voor dev-slots. Het ene gaat over hergebruik van kernlogica, het andere over herhaalbare ontwikkelomgevingen.

Het probleem dat opdook

De profiel- en kennisextractie werkte goed voor één toepassing, maar zat vol harde aannames over veldnamen en presentatie. Zodra ik persoonlijke notities en taken wilde aansluiten, bleek dat de logica niet herbruikbaar was zonder de code te dupliceren of domeinregels stilletjes in de gedeelde motor te laten lekken. Tegelijk vroeg het beheren van vier afzonderlijke agent-omgevingen om steeds meer handmatige poort- en foldertweaks.

De makkelijke weg die ik had kunnen nemen

Ik had voor notities en taken een aparte, parallelle pipeline kunnen bouwen met eigen prompts en opslag. En de agentslots had ik met de hand per mapje kunnen blijven patchen. Dat levert snel een werkend prototype op, maar zadelt me op met dubbele onderhoudslasten en subtiele omgevingsverschillen.

De keuze die ik maakte en de strategie erachter

Eerst ontkoppelen, dan pas hergebruiken. De kern van de knowledge graph wordt generiek gemaakt: bronnen, claims en relaties krijgen een eigen abstractielaag, los van of het nu om een profieltekst of een projectnotitie gaat. Pas daarna sluit de notitie- en takenpijplijn hierop aan. Parallel daaraan brengt een topologiegenerator (`config/dev-slots.json`) rust in de infra: agent-omgevingen worden beschreven vanuit configuratie in plaats van ad-hoc geknutsel.

Wat het kostte

Generaliseren kost meer tijd dan domweg kopiëren: je moet zorgvuldig nadenken over waar de grens ligt tussen gedeelde infrastructuur en domeinspecifieke logica. Het betekende bestaande code hernoemen, migraties draaien en controleren of eerdere profiel-features niets hadden ingeboet aan precisie.

Wat het nu oplevert en wat ik ervan leerde

"Generiek" betekent niet dat alles in één grote prompt of runner verdwijnt. Het betekent dat de motor betrouwbaar feiten en bronnen verwerkt, terwijl de specifieke toepassing bepaalt wat ermee gebeurt. Hierdoor kan het platform nieuwe soorten data dragen zonder dat het fundament wankelt.