feat(blog): enhance blog functionality and SEO
- Added a new '/blog' route to middleware for improved navigation. - Updated sitemap to dynamically include blog posts and series URLs. - Enhanced blog page metadata with Open Graph and Twitter card information. - Implemented structured data for blog posts and series to improve SEO. - Removed outdated blog post "Week 1: De Kickoff" from content. - Introduced optional OG image field in blog frontmatter for better sharing visuals.
This commit is contained in:
@@ -10,6 +10,21 @@ import { getAllPosts, getSeriesWithCounts, type BlogSeries } from '@/lib/mdx/blo
|
||||
export const metadata = {
|
||||
title: 'Blog - AI Speedrun',
|
||||
description: 'Artikelen over AI-gestuurde software ontwikkeling, healthcare IT en het bouwen van een EPD.',
|
||||
openGraph: {
|
||||
title: 'Blog - AI Speedrun',
|
||||
description: 'Artikelen over AI-gestuurde software ontwikkeling, healthcare IT en het bouwen van een EPD.',
|
||||
type: 'website',
|
||||
siteName: 'AI Speedrun',
|
||||
locale: 'nl_NL',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary',
|
||||
title: 'Blog - AI Speedrun',
|
||||
description: 'Artikelen over AI-gestuurde software ontwikkeling, healthcare IT en het bouwen van een EPD.',
|
||||
},
|
||||
alternates: {
|
||||
canonical: `${process.env.NEXT_PUBLIC_APP_URL || 'https://aispeedrun.vercel.app'}/blog`,
|
||||
},
|
||||
}
|
||||
|
||||
export default async function BlogPage() {
|
||||
|
||||
@@ -31,14 +31,43 @@ export async function generateMetadata({ params }: PostPageProps) {
|
||||
return { title: 'Post niet gevonden' }
|
||||
}
|
||||
|
||||
const siteUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://aispeedrun.vercel.app'
|
||||
const postUrl = `${siteUrl}/blog/serie/${serieId}/${slug}`
|
||||
// Use post-specific image if provided, otherwise fall back to default
|
||||
const ogImageUrl = post.frontmatter.image
|
||||
? `${siteUrl}${post.frontmatter.image.startsWith('/') ? '' : '/'}${post.frontmatter.image}`
|
||||
: `${siteUrl}/og-blog-default.png`
|
||||
|
||||
return {
|
||||
title: `${post.frontmatter.title} - ${series.title}`,
|
||||
description: post.frontmatter.description,
|
||||
authors: [{ name: 'Colin van der Heijden', url: 'https://ikbenlit.nl' }],
|
||||
keywords: post.frontmatter.tags || [],
|
||||
openGraph: {
|
||||
title: post.frontmatter.title,
|
||||
description: post.frontmatter.description,
|
||||
type: 'article',
|
||||
publishedTime: post.frontmatter.date,
|
||||
authors: ['Colin van der Heijden'],
|
||||
siteName: 'AI Speedrun',
|
||||
locale: 'nl_NL',
|
||||
images: [
|
||||
{
|
||||
url: ogImageUrl,
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: post.frontmatter.title,
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: post.frontmatter.title,
|
||||
description: post.frontmatter.description,
|
||||
images: [ogImageUrl],
|
||||
},
|
||||
alternates: {
|
||||
canonical: postUrl,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -55,6 +84,77 @@ export default async function PostPage({ params }: PostPageProps) {
|
||||
const navigation = await getSeriesNavigation(serieId, slug)
|
||||
const { frontmatter, content, readingTime } = post
|
||||
|
||||
// Generate Article structured data for SEO
|
||||
const siteUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://aispeedrun.vercel.app'
|
||||
const postUrl = `${siteUrl}/blog/serie/${serieId}/${slug}`
|
||||
// Use post-specific image if provided, otherwise fall back to default
|
||||
const articleImage = frontmatter.image
|
||||
? `${siteUrl}${frontmatter.image.startsWith('/') ? '' : '/'}${frontmatter.image}`
|
||||
: `${siteUrl}/og-blog-default.png`
|
||||
const articleSchema = {
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'Article',
|
||||
headline: frontmatter.title,
|
||||
description: frontmatter.description,
|
||||
image: articleImage,
|
||||
datePublished: frontmatter.date,
|
||||
dateModified: frontmatter.date,
|
||||
author: {
|
||||
'@type': 'Person',
|
||||
name: 'Colin van der Heijden',
|
||||
url: 'https://ikbenlit.nl',
|
||||
},
|
||||
publisher: {
|
||||
'@type': 'Organization',
|
||||
name: 'AI Speedrun',
|
||||
url: siteUrl,
|
||||
logo: {
|
||||
'@type': 'ImageObject',
|
||||
url: `${siteUrl}/images/aispeedrun-logo.webp`,
|
||||
},
|
||||
},
|
||||
mainEntityOfPage: {
|
||||
'@type': 'WebPage',
|
||||
'@id': postUrl,
|
||||
},
|
||||
articleSection: series.title,
|
||||
keywords: frontmatter.tags?.join(', ') || '',
|
||||
wordCount: content.split(/\s+/).length,
|
||||
timeRequired: `PT${readingTime}M`,
|
||||
}
|
||||
|
||||
// Generate BreadcrumbList structured data
|
||||
const breadcrumbSchema = {
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'BreadcrumbList',
|
||||
itemListElement: [
|
||||
{
|
||||
'@type': 'ListItem',
|
||||
position: 1,
|
||||
name: 'Home',
|
||||
item: siteUrl,
|
||||
},
|
||||
{
|
||||
'@type': 'ListItem',
|
||||
position: 2,
|
||||
name: 'Blog',
|
||||
item: `${siteUrl}/blog`,
|
||||
},
|
||||
{
|
||||
'@type': 'ListItem',
|
||||
position: 3,
|
||||
name: series.title,
|
||||
item: `${siteUrl}/blog/serie/${serieId}`,
|
||||
},
|
||||
{
|
||||
'@type': 'ListItem',
|
||||
position: 4,
|
||||
name: frontmatter.title,
|
||||
item: postUrl,
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const colorStyles = {
|
||||
teal: {
|
||||
badge: 'bg-teal-100 text-teal-700 border-teal-200',
|
||||
@@ -74,6 +174,16 @@ export default async function PostPage({ params }: PostPageProps) {
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-white pb-16">
|
||||
{/* Structured Data for SEO */}
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(articleSchema) }}
|
||||
/>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbSchema) }}
|
||||
/>
|
||||
|
||||
<article className="max-w-3xl mx-auto px-4 md:px-8">
|
||||
{/* Back link */}
|
||||
<div className="pt-20 md:pt-24 mb-6">
|
||||
|
||||
@@ -25,9 +25,27 @@ export async function generateMetadata({ params }: SeriesPageProps) {
|
||||
return { title: 'Serie niet gevonden' }
|
||||
}
|
||||
|
||||
const siteUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://aispeedrun.vercel.app'
|
||||
const seriesUrl = `${siteUrl}/blog/serie/${serieId}`
|
||||
|
||||
return {
|
||||
title: `${series.title} - Blog`,
|
||||
title: `${series.title} - Blog | AI Speedrun`,
|
||||
description: series.description,
|
||||
openGraph: {
|
||||
title: series.title,
|
||||
description: series.description,
|
||||
type: 'website',
|
||||
siteName: 'AI Speedrun',
|
||||
locale: 'nl_NL',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary',
|
||||
title: series.title,
|
||||
description: series.description,
|
||||
},
|
||||
alternates: {
|
||||
canonical: seriesUrl,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
import type { MetadataRoute } from 'next'
|
||||
import { getAllReleases } from '@/lib/mdx/documentatie'
|
||||
import { getAllPosts, getAllSeries } from '@/lib/mdx/blog'
|
||||
|
||||
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
const baseUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://aispeedrun.vercel.app'
|
||||
@@ -27,6 +28,29 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
}
|
||||
})
|
||||
|
||||
// Fetch all blog posts dynamically
|
||||
const posts = await getAllPosts()
|
||||
const postUrls: MetadataRoute.Sitemap = posts.map((post) => {
|
||||
const postDate = new Date(post.frontmatter.date)
|
||||
const isValidDate = !isNaN(postDate.getTime())
|
||||
|
||||
return {
|
||||
url: `${baseUrl}/blog/serie/${post.seriesId}/${post.slug}`,
|
||||
lastModified: isValidDate ? postDate : currentDate,
|
||||
changeFrequency: 'monthly',
|
||||
priority: 0.7,
|
||||
}
|
||||
})
|
||||
|
||||
// Fetch all blog series
|
||||
const series = await getAllSeries()
|
||||
const seriesUrls: MetadataRoute.Sitemap = series.map((serie) => ({
|
||||
url: `${baseUrl}/blog/serie/${serie.id}`,
|
||||
lastModified: currentDate,
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.8,
|
||||
}))
|
||||
|
||||
return [
|
||||
{
|
||||
url: baseUrl,
|
||||
@@ -34,12 +58,20 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
changeFrequency: 'weekly',
|
||||
priority: 1.0,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/blog`,
|
||||
lastModified: currentDate,
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.9,
|
||||
},
|
||||
{
|
||||
url: `${baseUrl}/documentatie`,
|
||||
lastModified: currentDate,
|
||||
changeFrequency: 'weekly',
|
||||
priority: 0.9,
|
||||
},
|
||||
...seriesUrls,
|
||||
...postUrls,
|
||||
...releaseUrls,
|
||||
{
|
||||
url: `${baseUrl}/contact`,
|
||||
|
||||
33
content/nl/blog/ai-speedrun/01-kickoff.mdx
Normal file
33
content/nl/blog/ai-speedrun/01-kickoff.mdx
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
title: "Kijk mee hoe ik live bouw aan EPD-systeem voor de GGZ!"
|
||||
description: "Hoelang wacht jij nog op die ene feature die je EPD écht bruikbaar maakt? Ik start een experiment: in 4 weken een EPD bouwen met AI."
|
||||
date: "2024-11-19"
|
||||
published: true
|
||||
seriesOrder: 1
|
||||
tags:
|
||||
- EPD
|
||||
- GGZ
|
||||
- AI
|
||||
- Build in Public
|
||||
---
|
||||
|
||||
*Hoelang wacht jij nog op die ene feature die je EPD écht bruikbaar maakt?*
|
||||
|
||||
18 maanden? 2 jaar? Of hoor je gewoon: "*Staat op de roadmap*"?
|
||||
|
||||
Ik ken het verhaal. Ik draai er tenslotte al meer dan 15 jaar in mee. Dure systemen die net niet doen wat je nodig hebt. Software die je dwingt om anders te werken, in plaats van andersom.
|
||||
|
||||
Daarom ben ik begonnen met experiment: de komende weken bouw ik live aan een EPD-systeem voor de GGZ. Niet als product dat je morgen koopt, maar om te laten zien wat er mogelijk is als je anders werkt.
|
||||
|
||||
Geen team van developers. Geen budget van 6 ton. Gewoon ik, moderne AI-tools, en 4 weken tijd. Van leeg scherm naar werkende software die je van intake tot behandelplan brengt.
|
||||
|
||||
Ik wil laten zien dat het anders kán. Sneller. Goedkoper. En belangrijker: **software die wél aansluit op hoe jij werkt**.
|
||||
|
||||
Ik bouw in het openbaar op aispeedrun.nl. Elke stap, elke keuze, elke fout. Zodat je zelf kunt zien wat er mogelijk is.
|
||||
|
||||
Meekijken mag. Meedenken ook. Als je ooit hebt gedacht: "*Waarom kan mijn EPD niet gewoon X doen*" - drop het in de comments. Ik neem de beste ideeën mee in de build!
|
||||
|
||||
Volg de speedrun: [aispeedrun.nl](https://aispeedrun.nl)
|
||||
|
||||
Laten we samen uitvinden hoe ver we komen. En als het mislukt? Dan weten we in ieder geval waarom je leverancier nóg 18 maanden nodig heeft voor die killer feature.
|
||||
|
||||
48
content/nl/blog/ai-speedrun/02-authentication-docs.mdx
Normal file
48
content/nl/blog/ai-speedrun/02-authentication-docs.mdx
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: "Dag 2: Authentication, docs en eerste workflows"
|
||||
description: "14 nieuwe accounts na de launch en genoeg reacties om gemotiveerd te blijven. Vandaag: authentication, live documentatie en two-level interface design."
|
||||
date: "2024-11-20"
|
||||
published: true
|
||||
seriesOrder: 2
|
||||
tags:
|
||||
- Authentication
|
||||
- Supabase
|
||||
- Documentation
|
||||
- UI Design
|
||||
---
|
||||
|
||||
14 nieuwe accounts na de launch gisteren en genoeg reacties om mij gemotiveerd te houden. Thanks daarvoor!
|
||||
|
||||
Dat triggerde me om meteen van die simpele demo-link af te stappen en het wat steviger te maken.
|
||||
|
||||
## Vandaag gebouwd
|
||||
|
||||
### Authentication die werkt
|
||||
|
||||
Email/password + demo account voor quick testing. Session management met Supabase Auth (JWT-based), password reset flow, en RLS policies voor data security. Basis staat.
|
||||
|
||||
### Live documentatie systeem
|
||||
|
||||
Een volledig docs platform waar je elke feature, elke commit, elke keuze kunt volgen. Op thema georganiseerd, zodat je precies kunt zien hoe bepaalde delen zijn gebouwd.
|
||||
|
||||
💡 **Waarom dit belangrijk is**: traditionele systemen zijn vaak black boxes. Documentatie is vaak slecht te vinden en/of achterhaald, waardoor je niet weet waarom het werkt zoals het werkt.
|
||||
|
||||
Dit experiment laat zien dat het anders kan. Transparant bouwen én gebruikers vanaf dag 1 betrekken bij de voortgang van je roadmap.
|
||||
|
||||
### Two-level interface design
|
||||
|
||||
- **Level 1**: Behandelaar context (dashboard, caseload, agenda, rapportage)
|
||||
- **Level 2**: Cliënt dossier (intake, diagnose, behandelplan, voortgang)
|
||||
|
||||
Je klikt van je caseload overzicht door naar een specifiek dossier. Net zoals je werkt.
|
||||
|
||||
## De eerste bugs
|
||||
|
||||
Webpack vloekte bij de MDX integratie. AI hielp met debuggen. We draaien weer.
|
||||
|
||||
Dit gaat sneller dan ik had verwacht. De energie van de reacties maakt het een stuk leuker!
|
||||
|
||||
Volg live en bekijk de docs: [aispeedrun.nl](https://aispeedrun.nl) 🔧
|
||||
|
||||
Op naar de volgende, let's go! 🏃♂️➡️
|
||||
|
||||
56
content/nl/blog/ai-speedrun/03-fhir-datamodel.mdx
Normal file
56
content/nl/blog/ai-speedrun/03-fhir-datamodel.mdx
Normal file
@@ -0,0 +1,56 @@
|
||||
---
|
||||
title: "Dag 5: Data die meegaat, nu echte workflows"
|
||||
description: "Een cliënt verhuist. Nieuwe behandelaar. Weer vanaf nul beginnen. Dit gebeurt elke dag in de GGZ. En het hoeft niet zo te zijn."
|
||||
date: "2024-11-21"
|
||||
published: true
|
||||
seriesOrder: 3
|
||||
tags:
|
||||
- FHIR
|
||||
- MedMIJ
|
||||
- Data Exchange
|
||||
- Healthcare Standards
|
||||
---
|
||||
|
||||
Een cliënt verhuist. Nieuwe behandelaar. Weer vanaf nul beginnen. "*Vertel nog eens wat je al geprobeerd hebt...*"
|
||||
|
||||
Dit gebeurt elke dag in de GGZ. En het hoeft niet zo te zijn.
|
||||
|
||||
## Dit is er vandaag gebouwd
|
||||
|
||||
### Data die echt uitwisselbaar is
|
||||
|
||||
Misschien niet direct de killer feature waar je als zorgprofessional op zit te wachten, maar wel een belangrijke basis.
|
||||
|
||||
Gebouwd op FHIR, de taal die ziekenhuizen en huisartsen wereldwijd gebruiken. Betekent dat het dossier straks gewoon praat met elke ROM-tool, PGO-app of eHealth module. Zonder gedoe.
|
||||
|
||||
Patient, Practitioner, CarePlan, Observations, Conditions, alles conform de internationale zorgtaal.
|
||||
|
||||
## Wat dit mogelijk maakt
|
||||
|
||||
**Inzage voor cliënten** - Via MedMIJ zie je straks je eigen behandelplan, diagnoses en ROM-scores in je PGO-app. Jouw data, jouw regie.
|
||||
|
||||
**Continuïteit die werkt** - Verhuizing? Doorverwijzing? Je complete dossier gaat mee. Inclusief wat werkte, ROM-trends, SMART doelen. Niet opnieuw beginnen.
|
||||
|
||||
**Blended care zonder gedoe** - Mindfulness app, dagboek, oefeningen - allemaal gekoppeld aan het behandelplan. Voortgang komt automatisch terug in het dossier.
|
||||
|
||||
## Voor de professional
|
||||
|
||||
- ROM-metingen automatisch naar LSP
|
||||
- Behandelplannen delen met één klik
|
||||
- Koppeltaal integraties voor eHealth
|
||||
- Bij overdracht zie je direct: wat is geprobeerd, wat werkte, welke ROM-scores
|
||||
|
||||
## Wat nu komt
|
||||
|
||||
Nu het datamodel staat, kunnen we aan de slag met echte workflows:
|
||||
|
||||
→ Screening & intake flow met spraak-naar-tekst
|
||||
→ Ondersteuning voor verschillende disciplines (psycholoog, psychiater, vaktherapeut)
|
||||
→ AI-assistentie voor diagnostiek en behandelplannen
|
||||
|
||||
De eerste wensen van jullie staan op de roadmap. De eerste bugs zijn gefixt. En het tempo blijft hoog 🚀
|
||||
|
||||
Werk je in de GGZ? Wat zou jou helpen om zo'n systeem écht te gebruiken in je praktijk?
|
||||
|
||||
Volg live: [aispeedrun.nl](https://aispeedrun.nl)
|
||||
|
||||
62
content/nl/blog/ai-speedrun/04-de-valkuil.mdx
Normal file
62
content/nl/blog/ai-speedrun/04-de-valkuil.mdx
Normal file
@@ -0,0 +1,62 @@
|
||||
---
|
||||
title: "Dag 7: De valkuil"
|
||||
description: "Zes tabs, twaalf subtabs, formulieren voor alles. Tijdens het bouwen besef ik me: ik bouw het exact zoals ik het zelf 15 jaar lang heb gezien."
|
||||
date: "2024-11-23"
|
||||
published: true
|
||||
seriesOrder: 4
|
||||
tags:
|
||||
- Intake
|
||||
- Process Design
|
||||
- Reflection
|
||||
- GGZ
|
||||
---
|
||||
|
||||
Dit weekend begon ik met bouwen van het screening- en intakeproces. Zes tabs, twaalf subtabs, formulieren voor alles.
|
||||
|
||||
Hulpvraag, contactmomenten, kindcheck, risicotaxatie, anamnese, ROM, diagnose, behandeladvies etc.
|
||||
|
||||
Tijdens dit proces komen heel veel onderdelen samen: registratie van de cliënt, verwerken administratieve gegevens, contact met huisarts en/of omgeving, eerste afspraken plannen, financiering starten en als kers op de taart ook nog doorverwijs- en wachtlijstproblematiek.
|
||||
|
||||
Wanneer je in de GGZ besluit om je werkproces te documenteren, is dit één van de lastigste onderdelen weet ik uit eigen ervaring. Tijdens het bouwen besef ik me: ik bouw het exact zoals ik het zelf 15 jaar lang heb gezien.
|
||||
|
||||
## De verdeling van een intakegesprek
|
||||
|
||||
Hieronder mijn achter-op-het-bierviltje-analyse:
|
||||
|
||||
- **30% administratie** – gegevens die al ergens bestaan, maar die we opnieuw invullen omdat systemen niet praten
|
||||
- **40% voorgeschreven documentatie** – anamnese invullen in 47 tekstvakken terwijl je het gesprek al hebt gevoerd
|
||||
- **20% risicomanagement** – risicotaxaties die belangrijk zijn, maar waar je dezelfde vragen drie keer op verschillende plekken invult
|
||||
- **10% luisteren naar de cliënt** – het enige waar het eigenlijk om gaat
|
||||
|
||||
En dus bouw ik nu precies wat ik ken. Zes tabs. Twaalf subtabs. Ik digitaliseer het bekende.
|
||||
|
||||
## Wat ik ga doen
|
||||
|
||||
Ik ga deze module afmaken. Zoals ik 'm nu bouw. Omdat het een goede benchmark is en zodat we zien hoe het nu werkt.
|
||||
|
||||
Maar ik wil dit ook transformeren naar een alternatieve intake-flow. Eentje die uitgaat van menselijk contact + AI-assistentie. Eentje die begint bij de cliënt, niet bij het protocol. Een EPD dat je dwingt om eerst te luisteren.
|
||||
|
||||
En dan kijken we welke beter werkt. Want misschien is "hoe het altijd ging" niet hetzelfde als "hoe het moet".
|
||||
|
||||
## Wat er nu staat
|
||||
|
||||
Screening & intake module:
|
||||
|
||||
✅ Basisregistratie (cliëntgegevens, contactpersonen)
|
||||
✅ Hulpvraag & activiteitenlog
|
||||
✅ Risicotaxatie (suïcide, agressie, kindveiligheid)
|
||||
✅ Anamnese (psychiatrisch, sociaal, lichamelijk)
|
||||
✅ ROM-onderzoeken
|
||||
✅ Diagnose met DSM-5 codes
|
||||
✅ Behandeladvies + text editor
|
||||
|
||||
Volgende week:
|
||||
→ Voice-to-text integratie voor intake gesprekken
|
||||
→ AI samenvatting van gesprekken
|
||||
|
||||
## Mijn vraag aan jou
|
||||
|
||||
Welke onderdelen van jouw intake kosten jou de meeste tijd? En welke zou je schrappen als je mocht kiezen?
|
||||
|
||||
Volg live: [aispeedrun.nl](https://aispeedrun.nl)
|
||||
|
||||
33
content/nl/blog/ai-speedrun/05-spraakherkenning.mdx
Normal file
33
content/nl/blog/ai-speedrun/05-spraakherkenning.mdx
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
title: "Week 2: Demo time - spraakherkenning en verslaglegging"
|
||||
description: "30 minuten typen na elk gesprek. Herkenbaar? Deze week heb ik spraak-naar-tekst ingebouwd. Gewoon praten na je gesprek, en het verslag schrijft zichzelf."
|
||||
date: "2024-11-26"
|
||||
published: true
|
||||
seriesOrder: 5
|
||||
tags:
|
||||
- Speech-to-Text
|
||||
- AI
|
||||
- Demo
|
||||
- Verslaglegging
|
||||
---
|
||||
|
||||
30 minuten typen na elk gesprek. Herkenbaar?
|
||||
|
||||
In week 2 van deze AI Speedrun heb ik spraak-naar-tekst ingebouwd. Gewoon praten na je gesprek, en het verslag schrijft zichzelf.
|
||||
|
||||
## In de demo zie je
|
||||
|
||||
→ Live transcriptie terwijl je praat
|
||||
→ Stopwoordjes worden automatisch gefilterd
|
||||
→ Tekst direct in het dossier
|
||||
|
||||
Geen formulieren. Geen klikken door tien schermen. Gewoon praten.
|
||||
|
||||
Het behandeladvies voor de cliënt in deze demo: *laptop-exposure met geleidelijke afbouw*. Herkenbaar voor sommigen? 😅
|
||||
|
||||
## Volgende stap
|
||||
|
||||
AI die je verslag ook nog structureert naar hoofdklacht, anamnese en behandeladvies.
|
||||
|
||||
Hoeveel tijd ben jij kwijt aan verslaglegging per dag?
|
||||
|
||||
45
content/nl/blog/ai-speedrun/06-ai-tool-of-baas.mdx
Normal file
45
content/nl/blog/ai-speedrun/06-ai-tool-of-baas.mdx
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: "AI als tool of als baas?"
|
||||
description: "Josh ging 3 maanden all-in met AI. Product shipte en werkte. Maar toen hij een kleine wijziging wilde maken, snapte hij zijn eigen code niet meer."
|
||||
date: "2024-11-30"
|
||||
published: true
|
||||
seriesOrder: 6
|
||||
tags:
|
||||
- AI
|
||||
- Reflection
|
||||
- Augmentation
|
||||
- Development
|
||||
---
|
||||
|
||||
Merijn van der Zalm stuurde me gisteren Josh Anderson's verhaal door.
|
||||
|
||||
Josh (Product-Focused CTO, 25 jaar ervaring) ging 3 maanden all-in met AI. Product shipte en werkte. Maar toen hij een kleine wijziging wilde maken, snapte hij zijn eigen code niet meer.
|
||||
|
||||
Zijn collega vroeg: "*Who owns that product? You or Claude Code?*"
|
||||
|
||||
Zijn antwoord: *Claude Code*.
|
||||
|
||||
Josh was passagier geworden in zijn eigen product.
|
||||
|
||||
## Waarom ik dit experiment doe
|
||||
|
||||
Dit is waarom ik mijn eigen experiment doe. Die grens tussen "productief met AI" en "passagier in je project" ligt ergens en ik wil uitzoeken waar.
|
||||
|
||||
## Josh's inzicht: Augmentation vs Abdication
|
||||
|
||||
- **Augmentation** = AI helpt, jij blijft eigenaar
|
||||
- **Abdication** = AI beslist, jij knikt
|
||||
|
||||
MIT studie: 95% van AI-initiatieven faalt. Dat is abdication.
|
||||
De 5% die werkt? Augmentation.
|
||||
|
||||
## De realiteit
|
||||
|
||||
Ik ben geen developer. Wel 15 jaar GGZ-domeinkennis en begrip van software processen. Als ík al in staat ben om werkende functionaliteit te bouwen - solo, geen dev-achtergrond - hoe ver kun je dan als volledig dev-team komen?
|
||||
|
||||
Speedrun dag 12. Ik zoek die grens tussen AI als tool en AI als baas.
|
||||
|
||||
Thanks Merijn voor de reality check 👊
|
||||
|
||||
Herken je dit? Waar merk jij het verschil tussen "AI helpt je" en "AI heeft je overgenomen"?
|
||||
|
||||
54
content/nl/blog/ai-speedrun/07-ai-assistent.mdx
Normal file
54
content/nl/blog/ai-speedrun/07-ai-assistent.mdx
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: "Het is 13:45 uur. Je volgende cliënt komt om 14:00."
|
||||
description: "Je weet dat je een intake moet starten, maar je zit naar je scherm te staren. Waar was die knop ook alweer? Deze week bouwde ik daar een oplossing voor."
|
||||
date: "2024-12-02"
|
||||
published: true
|
||||
seriesOrder: 7
|
||||
tags:
|
||||
- AI Assistant
|
||||
- UX
|
||||
- Hulp
|
||||
- EPD
|
||||
---
|
||||
|
||||
Je weet dat je een intake moet starten, maar je zit naar je scherm te staren. Waar was die knop ook alweer? Cliënten? Dossier? Of toch via het menu rechtsboven?
|
||||
|
||||
## Je hebt vier opties
|
||||
|
||||
1. Een collega vragen - maar die zit zelf in gesprek.
|
||||
2. De handleiding openen - tig pagina's en sheets scrollen, als je de instructie überhaupt al kan vinden
|
||||
3. De servicedesk bellen - gemiddelde wachttijd 15 minuten.
|
||||
4. Of mijn persoonlijke favoriet: gewoon maar wat klikken en hopen dat het goed gaat.
|
||||
|
||||
Geen van deze opties is ideaal. En dit gebeurt meerdere keren per dag.
|
||||
|
||||
## Deze week bouwde ik daar een oplossing voor
|
||||
|
||||
Een AI-assistent die gewoon daar zit, rechtsonder in je scherm. **Altijd beschikbaar**.
|
||||
|
||||
Je klikt erop en typt: "Hoe start ik een intake?"
|
||||
|
||||
Binnen twee seconden krijg je antwoord. In gewoon Nederlands. Precies wat je nodig hebt.
|
||||
|
||||
En het mooie is: je kunt doorvragen. "En hoe voeg ik daar notities aan toe?" De assistent begrijpt dat je het nog steeds over die intake hebt. Je hoeft niet steeds opnieuw te beginnen met zoeken.
|
||||
|
||||
## Waarom dit ertoe doet
|
||||
|
||||
Elk moment dat je zoekt naar een knop, is een moment dat je niet bezig bent met je cliënt.
|
||||
|
||||
Ik heb collega's zien huilen van frustratie. Niet omdat ze dom waren of lui. Maar omdat het systeem onduidelijk was, de tijd ontbrak om het te leren, en de druk om gewoon door te werken altijd aanwezig was.
|
||||
|
||||
Dat is het echte probleem. Niet de minuten. Maar de frustratie. De stress. Het gevoel dat je tekort schiet terwijl je gewoon je werk wilt doen.
|
||||
|
||||
## De echte reden waarom systemen falen
|
||||
|
||||
Het ligt niet aan de behandelaren. Het ligt ook niet altijd aan het systeem. Het ligt aan het moment waarop je hulp nodig hebt.
|
||||
|
||||
Die handleiding die de implementatieconsultant tijdens de training uitdeelde? Die ligt in een bureaula. Of op een netwerkschijf die je niet zo vaak opent. Of het is een PDF waarvan je niet meer weet hoe die heet.
|
||||
|
||||
En dan zit je daar, om 13:45, en je hebt gewoon direct antwoord nodig.
|
||||
|
||||
Dus bouwde ik een systeem dat uitleg geeft op het moment dat je het nodig hebt. Geen apart venster. Geen tabblad erbij. Gewoon daar, in het scherm waar je toch al bent.
|
||||
|
||||
Wat is het meest frustrerende moment in jouw EPD? Waar loop je tegenaan? Wat kost je elke dag weer onnodig tijd? Ik ben benieuwd!
|
||||
|
||||
49
content/nl/blog/ai-speedrun/08-week-4-spruitjes.mdx
Normal file
49
content/nl/blog/ai-speedrun/08-week-4-spruitjes.mdx
Normal file
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: "Week 4: Tussen de aardappelen en de spruitjes door"
|
||||
description: "In 4 weken een compleet EPD bouwen met AI! Kleine reality check: het zijn geen 28 dagen van 8 uur programmeren. Dit is bouwen aan de keukentafel."
|
||||
date: "2024-12-06"
|
||||
published: true
|
||||
seriesOrder: 8
|
||||
tags:
|
||||
- Reality Check
|
||||
- Work-Life Balance
|
||||
- EPD
|
||||
- Progress
|
||||
---
|
||||
|
||||
"In 4 weken een compleet EPD bouwen met AI!"
|
||||
|
||||
Klinkt goed, toch? Sexy headline. Lekker disruptief.
|
||||
|
||||
## Kleine reality check
|
||||
|
||||
Het zijn inderdaad 4 weken. Maar geen 28 dagen van 8 uur programmeren. Eerder: een uurtje 's avonds als de kids slapen, zondagochtend vroeg, en tussen de sinterklaassurprises door.
|
||||
|
||||
Dit is geen Silicon Valley-fantasie. Dit is bouwen aan de keukentafel, tussen de aardappelen en de spruitjes door.
|
||||
|
||||
En het werkt... Na 3 weken staat er een EPD. Met intake, screenings, AI-behandelplannen, spraak-naar-tekst, de hele reutemeteut. FHIR-compliant, werkend, bruikbaar.
|
||||
|
||||
## Het contrast
|
||||
|
||||
Traditionele enterprise software? Een jaar implementeren voor €500k+. Met consultants die je vertellen dat het écht niet sneller kan. Change management, migratie-drama's, vendor lock-in voor 5 jaar.
|
||||
|
||||
En dan bouw ik (bijna) hetzelfde in 4 weken. Solo, tussen gezin en werk door.
|
||||
|
||||
"*Maar AVG dan? NEN7510? Integratie met bestaande systemen?*"
|
||||
|
||||
Terechte vragen. En nee, dat is niet niks. Dat zijn serieuze uitdagingen die tijd en geld kosten.
|
||||
|
||||
Maar: Je kunt nu beginnen met een werkend fundament in weken. De compliance, integraties, beveiliging – dat bouw je erop. Iteratief.
|
||||
|
||||
In plaats van een jaar wachten op big bang, heb je in week 4 al iets werkends. Dat is het verschil.
|
||||
|
||||
## Geen hustle porn
|
||||
|
||||
Dit is geen "rise and grind" verhaal. Ik slaap gewoon. Om 18u kijk ik het Sinterklaasjournaal met de kids.
|
||||
|
||||
Maar moderne AI-tools + 15 jaar domeinkennis + gefocuste sessies = plots is er veel mogelijk. Niet omdat ik zo goed ben. Maar omdat de tools volwassen zijn.
|
||||
|
||||
Software hoeft niet meer onbereikbaar duur en traag te zijn. Het kan ook gewoon. Tussen de spruitjes door.
|
||||
|
||||
Week 4: demo's, behandelplan UI. Laatste week. Volg je mee? 👉 [aispeedrun.nl](https://aispeedrun.nl)
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: "De verpleegkundige overdracht"
|
||||
description: "Kun je iets slims bouwen voor een verpleegkundige die 6 overdrachten heeft per dag aan artsen aan de volgende dienst?"
|
||||
date: "2024-12-08"
|
||||
published: true
|
||||
seriesOrder: 9
|
||||
tags:
|
||||
- Verpleegkunde
|
||||
- Overdracht
|
||||
- AI
|
||||
- Demo
|
||||
---
|
||||
|
||||
*"Kun je iets slims bouwen voor een verpleegkundige die 6 overdrachten heeft per dag aan artsen aan de volgende dienst en ondertussen ook allerlei metingen doet en moet opslaan?"*
|
||||
|
||||
Ja, dat kan ik!
|
||||
|
||||
## Het echte probleem
|
||||
|
||||
Verpleegkundigen lopen rondes langs 15 cliënten achter elkaar. Je wilt niet constant tussen dossiers heen en weer switchen, dat kost gewoon te veel tijd.
|
||||
|
||||
En de psychiater die 's ochtends binnenkomt moet nu alle 15 dossiers openen om te checken of er vannacht iets gebeurd is. Dat is 30-45 minuten scanwerk voordat je überhaupt aan je dag begint.
|
||||
|
||||
Tijd die je liever besteedt aan cliënten, niet aan zoeken in systemen.
|
||||
|
||||
## Wat ik bouwde
|
||||
|
||||
Twee modules die samenwerken.
|
||||
|
||||
**Voor de verpleegkundige** een zorgnotities-module waar alle cliënten in één sidebar staan. Quick-switch tijdens je ronde, korte notities met categorieën (Medicatie, ADL/verzorging, Gedrag, Incident), en een toggle om te markeren wat belangrijk is voor overdracht. Achteraf bewerken kan natuurlijk ook nog.
|
||||
|
||||
**Voor artsen en de volgende dienst** een overdracht-module met direct overzicht: welke cliënten hadden iets vannacht? Je kunt filteren op alerts (rood voor hoge risico's, groen voor overdracht notities) en ziet een tijdlijn met alle rapportages per cliënt.
|
||||
|
||||
En als bonus een AI-samenvatting, maar wel met een cruciaal onderdeel: elk aandachtspunt is klikbaar en linkt direct naar de bronrapportage. Zodat we kunnen zien waar informatie vandaan komt. **Geen black box, maar transparantie.**
|
||||
|
||||
## Het verschil
|
||||
|
||||
- Van 2 uur dossiers doorzoeken, wisselen en informatie filteren naar 2 minuten scannen.
|
||||
- Van 15 dossiers openen naar direct zien waar je aandacht nodig is.
|
||||
- Van 6x per dag dezelfde info herhalen naar één keer documenteren en klaar.
|
||||
|
||||
## Waarom ik dit doe
|
||||
|
||||
Omdat ik zie hoe zorgverleners gefrustreerd raken door systemen die hun werk vertragen in plaats van ondersteunen. Die frustratie hoeft niet.
|
||||
|
||||
Traditionele EPD's kosten €500k+ en 12 maanden. **Ik bouwde deze verpleegrapportage en overdracht-module afgelopen weekend met AI.**
|
||||
|
||||
Software hoeft niet jaren te kosten. Het kan ook volgende week al werken.
|
||||
|
||||
Herken je dit? Heb je een collega die hier dagelijks mee worstelt? Stuur dit door. Ik ben benieuwd of deze oplossing helpt!
|
||||
|
||||
65
content/nl/blog/ai-speedrun/10-stop-met-klagen.mdx
Normal file
65
content/nl/blog/ai-speedrun/10-stop-met-klagen.mdx
Normal file
@@ -0,0 +1,65 @@
|
||||
---
|
||||
title: "Stop met klagen dat AI geen goede software bouwt"
|
||||
description: "Een one-shot-prompt geeft ook een one-shot-resultaat. En verrassing... dat is 9 van de 10x niet wat je wilde. De 5 gouden regels voor werken met AI agents."
|
||||
date: "2024-12-11"
|
||||
published: true
|
||||
seriesOrder: 10
|
||||
tags:
|
||||
- AI
|
||||
- Tips
|
||||
- Development
|
||||
- Best Practices
|
||||
---
|
||||
|
||||
"*Heb ik geprobeerd. Werkt niet.*"
|
||||
|
||||
Ah, de one-shot expert heeft gesproken. Een one-shot-prompt geeft ook een one-shot-resultaat. En verrassing... dat is 9 van de 10x niet wat je wilde.
|
||||
|
||||
Noem het one-shot-optimisme: de verwachting dat je in één vraag een werkend product krijgt. Ja, zo werkt het dus niet.
|
||||
|
||||
## De realiteit
|
||||
|
||||
En dan blijf je achter, want AI coding is geen hype meer. OpenRouter routeert miljarden AI-verzoeken voor developers. Begin dit jaar ging één op de tien over code. En nu in december de helft. Dit is mainstream, maar dan moet je wel weten hoe je ermee werkt.
|
||||
|
||||
AI agents zijn net hele eager juniors. Ze beginnen meteen met bouwen zonder enige context. Vraag om een login-pagina en je krijgt OAuth, 2FA, role-based access en een password recovery flow. Terwijl jij gewoon een simpel schermpje wilde.
|
||||
|
||||
## De 5 gouden regels voor werken met AI agents
|
||||
|
||||
### 1. Niet meteen programmeren
|
||||
|
||||
AI is getraind om *helpful* te zijn. En helpful voelt voor een AI als: snel iets opleveren. Geef een half zinnetje en er wordt al gebouwd.
|
||||
|
||||
Elke feature begin ik met: "Niet meteen programmeren." Eerst context, dan een plan en dan pas bouwen.
|
||||
|
||||
### 2. Geef altijd context
|
||||
|
||||
Elke chat begint voor AI als een leeg blad. Geen geheugen van wat je gisteren bouwde. Dus ja, er wordt vrolijk een nieuwe functie geschreven terwijl je die al hebt.
|
||||
|
||||
Daarom werk ik altijd met een PRD, functioneel ontwerp en technisch ontwerp. Voor mezelf én als context voor de AI.
|
||||
|
||||
### 3. Denk MVP
|
||||
|
||||
Vraag om een zoekfunctie en AI bouwt meteen filters, sortering, fuzzy matching, zoeksuggesties en een volledige Elasticsearch-integratie.
|
||||
|
||||
Ik vertel de agent altijd: "We bouwen een prototype, een MVP." Prioriteer in MVP en post-MVP. Houd het klein en bouw uit. Dit zorgt ervoor dat je niet direct 100 features tegelijk bouwt, wat je sowieso niet direct wil.
|
||||
|
||||
### 4. Werk in iteraties
|
||||
|
||||
AI probeert altijd in één keer een "compleet" antwoord te geven. Maar software bouwen is geen one-shot game.
|
||||
|
||||
Mijn bouwplan is geen "start met bouwen", maar een gefaseerd plan met epics en stories. De opdracht is "Maak Epic 1, Story 1."
|
||||
|
||||
### 5. Jij blijft de baas
|
||||
|
||||
AI is een eager junior, geen architect. Slim, snel, maar zonder sturing wordt er de verkeerde kant op gebouwd.
|
||||
|
||||
Ik ben geen programmeur, maar wel de product owner. Ik bepaal de richting, AI voert uit.
|
||||
|
||||
## Bonus tip
|
||||
|
||||
Tools zoals Claude Code en Cursor hebben een "Plan" en "Ask" modus. Gebruik dit! Laat AI eerst denken voordat je 'm laat bouwen.
|
||||
|
||||
Die eager junior kan heel veel. Tenminste, als je 'm goed begeleidt. Net als in het echt. 😉
|
||||
|
||||
Meer weten over de AI Speedrun? 👉 [aispeedrun.nl](https://aispeedrun.nl)
|
||||
|
||||
47
content/nl/blog/ai-speedrun/11-performance-optimalisatie.mdx
Normal file
47
content/nl/blog/ai-speedrun/11-performance-optimalisatie.mdx
Normal file
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: "Dag 28: 'Dat stond niet op mijn lijstje' is geen excuus meer"
|
||||
description: "Toen oud-collega Edwin zei dat mijn EPD-prototype wat traag aanvoelde, was mijn eerste reactie defensief. Na een nachtje slapen kon ik de feedback beter waarderen."
|
||||
date: "2024-12-12"
|
||||
published: true
|
||||
seriesOrder: 11
|
||||
tags:
|
||||
- Performance
|
||||
- Feedback
|
||||
- AI
|
||||
- Optimization
|
||||
---
|
||||
|
||||
Toen oud-collega Edwin zei dat mijn EPD-prototype wat traag aanvoelde, was mijn eerste reactie defensief. "*Ja, dat was ook niet echt het doel.* 😤" Performance optimalisatie stond niet op mijn lijstje. Ik was bezig met features bouwen, niet met milliseconden tellen.
|
||||
|
||||
Na een nachtje slapen kon ik de feedback beter waarderen. Want iedereen die met enterprise software werkt (zeker EPD's) weet dat trage systemen de realiteit zijn. Eindeloos wachten op schermen die laden, rapportages die vastlopen, behandelaren die gefrustreerd afhaken. Ik ken het uit eigen ervaring. 😞
|
||||
|
||||
Maar wat verwacht je? Ik draai op de gratis tier van Vercel en Supabase. Geen dedicated servers, geen geoptimaliseerde database clusters. Dit is een prototype op een hobby-budget.
|
||||
|
||||
## Toch opende ik Claude
|
||||
|
||||
"*Review deze codebase op performance en geef concrete verbetervoorstellen.*"
|
||||
|
||||
Wat volgde was een masterclass die ik niet had verwacht. Baseline metingen. Bottleneck-analyse. Vier iteraties van optimalisaties: parallel data fetching, server-side pagination, database indexes, lazy loading.
|
||||
|
||||
## Het resultaat
|
||||
|
||||
| Component | Voor | Na |
|
||||
|-----------|------|-----|
|
||||
| Patient Dashboard | 800ms | 440ms |
|
||||
| Rapportage API | 1.67s | 188ms |
|
||||
| Rapportage pagina | 2.05s | 343ms |
|
||||
|
||||
## Maar dit gaat niet over milliseconden
|
||||
|
||||
AI versnelt niet alleen het typen van code. Het versnelt het denken over code. De drempel om iets te fixen is nu zo laag geworden dat feedback negeren een bewuste keuze wordt, niet een praktische beperking.
|
||||
|
||||
Dat verandert alles. Niet alleen hoe je software bouwt, maar ook hoe je feedback ontvangt.
|
||||
|
||||
"*Daar heb ik nu geen tijd voor*" betekent nu eigenlijk: "*Dat vind ik niet belangrijk genoeg.*"
|
||||
|
||||
Eerlijker, maar ook confronterender.
|
||||
|
||||
*(Oh, en deze week ook gebouwd: agenda-verbeteringen met drag & drop, behandelplan uitgebreid, en een volledige diagnose-module. Alleen nog geen tijd gehad om er een nette post van te maken.)*
|
||||
|
||||
Volgende week: de eindbalans. Kan AI een EPD bouwen? Het antwoord is genuanceerder dan ik vier weken geleden dacht.
|
||||
|
||||
59
content/nl/blog/ai-speedrun/12-de-cijfers.mdx
Normal file
59
content/nl/blog/ai-speedrun/12-de-cijfers.mdx
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: "De Cijfers"
|
||||
description: "Vier weken geleden startte ik een experiment: hoe ver kom je met AI-tooling als je een compleet EPD-systeem wil bouwen voor de GGZ? Nu heb ik een antwoord en de cijfers."
|
||||
date: "2024-12-18"
|
||||
published: true
|
||||
seriesOrder: 12
|
||||
tags:
|
||||
- Results
|
||||
- Statistics
|
||||
- EPD
|
||||
- Conclusion
|
||||
---
|
||||
|
||||
Vier weken geleden startte ik een experiment: hoe ver kom je met AI-tooling als je een compleet EPD-systeem wil bouwen voor de GGZ?
|
||||
|
||||
Nu heb ik een antwoord en de cijfers.
|
||||
|
||||
Mijn eerste conclusie: Met AI kun je volwaardige functionaliteit snel opleveren. Maar, en dit is belangrijk, AI verzint geen goede oplossing. Jij moet zelf bedenken waar de waarde zit.
|
||||
|
||||
## De cijfers
|
||||
|
||||
- 95 commits
|
||||
- ~118.000 regels code
|
||||
- 140+ documenten (waarvan 75 formele specs: PRD, FO, TO, Bouwplannen)
|
||||
- 17 gebruikersdocumentatie pagina's
|
||||
- 4 release notes
|
||||
- 1 developer + Claude Code
|
||||
- €200 budget
|
||||
|
||||
## 7 complete modules
|
||||
|
||||
1. **Authenticatie met Supabase** - login, signup, wachtwoordreset, email confirmatie
|
||||
2. **Screening & intake systeem** - hulpvraag, besluitvorming en risicotaxatie
|
||||
3. **Diagnose module** - ICD-10 codering en zoekfunctie
|
||||
4. **Agenda** - FullCalendar (dag/week/maand views)
|
||||
5. **Verpleegkundige rapportage** - met overdracht
|
||||
6. **Behandelplan module** - SMART doelen en leefgebieden
|
||||
7. **Client management** - CRUD operations
|
||||
|
||||
## 3 AI-integraties
|
||||
|
||||
1. **Spraakgestuurde verslaglegging** via Deepgram - gewoon dicteren in plaats van typen
|
||||
2. **AI-gegenereerde samenvattingen** voor dienstoverdracht
|
||||
3. **AI-assistent** die zowel helpt met systeemgebruik als inhoudelijke vragen over het dossier kan beantwoorden
|
||||
|
||||
## Technisch
|
||||
|
||||
En voor de '*het-is-vast-spaghetti-code*' critici: dit draait op Next.js 14, TypeScript, Supabase met Row Level Security, een FHIR-compliant datamodel, en production-ready componenten. Volledig Nederlandse UI. Op een hobby-project budget.
|
||||
|
||||
## De realisatie
|
||||
|
||||
Dit waren de cijfers. Experiment geslaagd zou je zeggen.
|
||||
|
||||
Alleen, tijdens het bouwen realiseerde ik me dat ik nog steeds een vrij traditioneel systeem aan het bouwen was. Weliswaar met slimme AI-handigheidjes, maar in de kern? Hetzelfde EPD-denken als de afgelopen 15 jaar.
|
||||
|
||||
Mijn aanpak is innovatief, het product eerlijk gezegd niet heel erg. AI versnelt wat je bouwt, maar wát je bouwt, dat bepaal jij. Domeinkennis wordt meer en meer relevanter dan de technische skills.
|
||||
|
||||
Ik heb inmiddels een idee over hoe het EPD van de toekomst eruit moet zien en dat is niet wat er nu staat.
|
||||
|
||||
134
content/nl/blog/ai-speedrun/13-learnings.mdx
Normal file
134
content/nl/blog/ai-speedrun/13-learnings.mdx
Normal file
@@ -0,0 +1,134 @@
|
||||
---
|
||||
title: "10 dingen die ik leerde van 4 weken bouwen met AI"
|
||||
description: "Gisteren de cijfers. Vandaag de learnings. Over AI als tool, over mijzelf als bouwer, en over waarom de zorg meer moet experimenteren."
|
||||
date: "2024-12-19"
|
||||
published: true
|
||||
seriesOrder: 13
|
||||
tags:
|
||||
- Learnings
|
||||
- AI
|
||||
- Reflection
|
||||
- Healthcare
|
||||
---
|
||||
|
||||
Gisteren de cijfers. Vandaag de learnings.
|
||||
|
||||
10 dingen die ik leerde van 4 weken bouwen met AI. Over AI als tool, over mijzelf als bouwer, en over waarom de zorg meer moet experimenteren.
|
||||
|
||||
**De belangrijkste inzichten?**
|
||||
|
||||
→ AI verzint geen goede oplossing. Jij moet zelf bedenken waar de waarde zit.
|
||||
→ Domeinkennis weegt zwaarder dan technische skills.
|
||||
→ Met alle moderne tooling bouw ik nog steeds traditioneel EPD-denken.
|
||||
|
||||
Dat laatste was een ontnuchterende realisatie.
|
||||
|
||||
---
|
||||
|
||||
## De aanleiding
|
||||
|
||||
Vier weken geleden startte ik een experiment: hoe ver kom je met AI-tooling als je een compleet EPD-systeem wil bouwen voor de GGZ?
|
||||
|
||||
Twee dingen waren de aanleiding. Jaren van frustratie over EPD's die nét niet werken zoals de zorg werkt. En de vraag die ik steeds vaker hoorde: "*Maar kun je met AI écht software bouwen?*" Ik besloot het uit te zoeken.
|
||||
|
||||
Meer dan 15 jaar werk ik nu in de GGZ. En al die tijd hoor ik hetzelfde verhaal. Van collega's, van behandelaren, van managers: het EPD werkt niet zoals wij werken. Die ene feature die we nodig hebben? Staat op de roadmap. Al 18 maanden. Het budget voor aanpassingen? Tonnen. En dan nog is het niet zeker dat het komt.
|
||||
|
||||
Ik weet dit uit eigen ervaring, want ik heb jarenlang bij een EPD-leverancier gewerkt als consultant en product owner. Dus ik begrijp de worsteling om goede, stabiele, functionele, veilige, schaalbare, gebruiksvriendelijke software te bouwen die voldoet aan alle wet en regelgeving. Maar toch, miljoenencontracten, jarenlange implementaties. En aan het eind van de rit nog steeds workarounds in Excel!
|
||||
|
||||
Tegelijkertijd zie ik wat er mogelijk is met moderne AI-tooling. Ik gebruik het dagelijks. Maar om me heen zie ik collega's die sceptisch blijven. "*Leuk voor prototypes, niet voor echte software.*" "*AI-code is niet production-ready.*" "*Eén uur coden met AI is drie uur debuggen.*"
|
||||
|
||||
Ik wilde het tegenovergestelde bewijzen. De scepsis snap ik, maar die is gebaseerd op hoe AI een jaar of twee geleden werkte. De techniek gaat sneller dan wij ons aanpassen. Dus: niet praten, maar bouwen. In het openbaar. Documenteren wat werkt en wat niet. En kijken hoe ver ik kom, als niet-programmeur.
|
||||
|
||||
## Het resultaat
|
||||
|
||||
- 118.000 regels code
|
||||
- 140+ documenten (waarvan 75 formele specs)
|
||||
- 7 complete modules
|
||||
- 3 AI-integraties
|
||||
- 95 GIT commits
|
||||
- alles op een hobby budget (+/- €200)
|
||||
|
||||
---
|
||||
|
||||
## Over AI als tool
|
||||
|
||||
### 1. Met AI kun je volwaardige functionaliteit snel opleveren
|
||||
|
||||
Dat is de belofte, en die klopt. Maar hier komt de nuance die niemand je vertelt: AI verzint geen goede oplossing. Jij moet zélf bedenken waar de waarde zit.
|
||||
|
||||
### 2. Verwacht niet dat het eerste antwoord het juiste is
|
||||
|
||||
Nooit, eigenlijk. Ga door. Hak in stukjes. Voeg samen. Ontleed totdat je iets hebt waarmee je verder komt. AI is geen orakel. Het is een klant die niet precies weet wat hij wil. Je moet doorvragen. Concretiseren. Stel je een vage vraag, dan krijg je een vaag antwoord. Wordt je scherper, geef je voorbeelden, dan wordt de output beter.
|
||||
|
||||
### 3. Gebruik AI als sparringpartner, niet alleen als programmeur
|
||||
|
||||
Laat Claude een probleem analyseren vanuit het perspectief van 'lead developer', 'product owner' én 'eindgebruiker'. Dat geeft je drie invalshoeken die helpen om blinde vlekken te spotten.
|
||||
|
||||
Of: simuleer een gesprek tussen consultant en klant om een pitch voor te bereiden. Of: "*Wat zou een verpleegkundige hiervan vinden?*" "*Waar zit het risico voor de psychiater?*"
|
||||
|
||||
Het gaat om meerdere perspectieven. Daar zit minstens zoveel waarde als in de gegenereerde code.
|
||||
|
||||
---
|
||||
|
||||
## Over mijzelf als bouwer
|
||||
|
||||
### 4. Domeinkennis weegt zwaarder dan technische skills
|
||||
|
||||
AI kan code genereren, maar je moet wel snappen wat er staat en weten hoe software werkt. Zeker bij enterprise software zoals een EPD. AI is hier de brug.
|
||||
|
||||
Wat AI niet kan: snappen waarom een verpleegkundige overdracht anders werkt dan een artsenbrief. Waarom een risicotaxatie op dát moment in het proces moet zitten. Waarom die ene checkbox er wel toe doet en die andere niet.
|
||||
|
||||
Die 15 jaar GGZ-ervaring? Die waren relevanter dan mijn technische skills.
|
||||
|
||||
### 5. Je proces blijft gewoon je proces
|
||||
|
||||
PRD, Functioneel Ontwerp, Technisch Ontwerp, dat sla je niet over omdat je AI gebruikt. Integendeel. Hoe beter je documentatie, hoe beter de AI-output. "*Garbage in, garbage out*" is nog steeds waar. Alleen nu op een hoger abstractieniveau.
|
||||
|
||||
### 6. Cognitive offloading? Ik had het tegenovergestelde
|
||||
|
||||
Er wordt gewaarschuwd dat je lui wordt als je alles aan AI overlaat. Misschien, als je besluit om zelf niet meer na te denken.
|
||||
|
||||
Maar ik had tijdens dit project juist cognitive overload, de productieve variant. Bouwen, demo's maken, content schrijven, contacten leggen. Alles tegelijk, in vier weken. AI maakt dat mogelijk. Niet door het denken over te nemen, maar door de executie te versnellen.
|
||||
|
||||
### 7. Met al die moderne tooling bouw ik nog steeds een vrij traditioneel systeem
|
||||
|
||||
De aanpak is innovatief. Het product? Eerlijk gezegd niet heel erg. Hetzelfde EPD-denken als de afgelopen 15 jaar. Dezelfde schermen. Dezelfde workflows. Dezelfde aannames.
|
||||
|
||||
Dat was een ontnuchterende realisatie.
|
||||
|
||||
---
|
||||
|
||||
## Over de zorg en organisaties
|
||||
|
||||
### 8. We moeten meer experimenteren
|
||||
|
||||
Uit gesprekken hoor ik steeds hetzelfde verhaal: pilots die blijven steken op governance. Op beleid. Op regels. Op commissies die eerst moeten vergaderen.
|
||||
|
||||
Allemaal relevant, daar is geen twijfel over. Maar ook allemaal redenen om níet te beginnen.
|
||||
|
||||
In een experiment bepaal je zelf de grenzen. Bouw eerst. Leer. En pas dán aan. Probeer niet alle kaders en risico's vooraf te bedenken. De wereld verandert snel en wacht niet op ons 100% waterdichte plan.
|
||||
|
||||
### 9. De waarde zit niet in de AI, maar in de data en integratie
|
||||
|
||||
De AI zelf is het makkelijke stuk, dat is een API call en een goede prompt. De uitdaging zit in de rest.
|
||||
|
||||
Specifiek voor de GGZ: waar somatische zorg veel objectieve datapunten heeft (labwaarden, vitals, scans) hebben we in de GGZ vooral ongestructureerde tekst. Behandelplannen. Decursus. Rapportages. Heteroanamneses. Observaties.
|
||||
|
||||
Dát is waar de complexiteit zit. En eerlijk gezegd ook waar het interessant wordt.
|
||||
|
||||
### 10. De toekomst is niet een beter scherm, maar geen scherm
|
||||
|
||||
Ephemeral UI, vergankelijke interfaces die gegenereerd worden op het moment dat je ze nodig hebt. De agent doet de rest. Geen vaste menu's, geen eindeloze klikpaden. Gewoon: zeg wat je nodig hebt, en het verschijnt.
|
||||
|
||||
Dat is niet wat ik gebouwd heb. Maar wel waar ik naartoe wil.
|
||||
|
||||
---
|
||||
|
||||
## Wat nu?
|
||||
|
||||
Dit is wat vier weken bouwen me geleerd heeft. Niet alleen over AI, maar over mijzelf als bouwer en over de zorg waar ik al 15 jaar in werk.
|
||||
|
||||
De volgende vraag ligt voor de hand: als ik met moderne tooling nog steeds traditioneel EPD-denken bouw, hoe ziet het EPD van de toekomst er dan wél uit?
|
||||
|
||||
Want dat is niet wat ik gebouwd heb (nog niet).
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
---
|
||||
title: "Week 1: De Kickoff"
|
||||
description: "Hoe bouw je een EPD in 4 weken? Het begin van de AI Speedrun reis."
|
||||
date: "2024-11-15"
|
||||
published: true
|
||||
seriesOrder: 1
|
||||
tags:
|
||||
- AI
|
||||
- Development
|
||||
- EPD
|
||||
---
|
||||
|
||||
## De Start
|
||||
|
||||
Placeholder voor je eerste AI Speedrun blogpost.
|
||||
|
||||
Vervang deze content met je LinkedIn post.
|
||||
|
||||
455
docs/blogs/blog-serie-speedrun.md
Normal file
455
docs/blogs/blog-serie-speedrun.md
Normal file
@@ -0,0 +1,455 @@
|
||||
𝗞𝗶𝗷𝗸 𝗺𝗲𝗲 𝗵𝗼𝗲 𝗶𝗸 𝗹𝗶𝘃𝗲 𝗯𝗼𝘂𝘄 𝗮𝗮𝗻 𝗘𝗣𝗗-𝘀𝘆𝘀𝘁𝗲𝗲𝗺 𝘃𝗼𝗼𝗿 𝗱𝗲 𝗚𝗚𝗭! datum post 19-11-2025
|
||||
Linkedin url: https://www.linkedin.com/feed/update/urn:li:activity:7396483447818723329/
|
||||
|
||||
𝑯𝒐𝒆𝒍𝒂𝒏𝒈 𝒘𝒂𝒄𝒉𝒕 𝒋𝒊𝒋 𝒏𝒐𝒈 𝒐𝒑 𝒅𝒊𝒆 𝒆𝒏𝒆 𝒇𝒆𝒂𝒕𝒖𝒓𝒆 𝒅𝒊𝒆 𝒋𝒆 𝑬𝑷𝑫 𝒆́𝒄𝒉𝒕 𝒃𝒓𝒖𝒊𝒌𝒃𝒂𝒂𝒓 𝒎𝒂𝒂𝒌𝒕?
|
||||
18 maanden? 2 jaar? Of hoor je gewoon: "𝑆𝑡𝑎𝑎𝑡 𝑜𝑝 𝑑𝑒 𝑟𝑜𝑎𝑑𝑚𝑎𝑝"?
|
||||
Ik ken het verhaal. Ik draai er tenslotte al meer dan 15 jaar in mee. Dure systemen die net niet doen wat je nodig hebt. Software die je dwingt om anders te werken, in plaats van andersom.
|
||||
|
||||
Daarom ben ik begonnen met experiment: de komende weken bouw ik live aan een EPD-systeem voor de GGZ. Niet als product dat je morgen koopt, maar om te laten zien wat er mogelijk is als je anders werkt.
|
||||
Geen team van developers. Geen budget van 6 ton. Gewoon ik, moderne AI-tools, en 4 weken tijd. Van leeg scherm naar werkende software die je van intake tot behandelplan brengt.
|
||||
|
||||
Ik wil laten zien dat het anders kán. Sneller. Goedkoper. En belangrijker: 𝐬𝐨𝐟𝐭𝐰𝐚𝐫𝐞 𝐝𝐢𝐞 𝐰𝐞́𝐥 𝐚𝐚𝐧𝐬𝐥𝐮𝐢𝐭 𝐨𝐩 𝐡𝐨𝐞 𝐣𝐢𝐣 𝐰𝐞𝐫𝐤𝐭.
|
||||
|
||||
Ik bouw in het openbaar op aispeedrun.nl. Elke stap, elke keuze, elke fout. Zodat je zelf kunt zien wat er mogelijk is.
|
||||
Meekijken mag. Meedenken ook. Als je ooit hebt gedacht: "𝑾𝒂𝒂𝒓𝒐𝒎 𝒌𝒂𝒏 𝒎𝒊𝒋𝒏 𝑬𝑷𝑫 𝒏𝒊𝒆𝒕 𝒈𝒆𝒘𝒐𝒐𝒏 𝑿 𝒅𝒐𝒆𝒏" - drop het in de comments. Ik neem de beste ideeën mee in de build!
|
||||
|
||||
Volg de speedrun: aispeedrun.nl
|
||||
Laten we samen uitvinden hoe ver we komen. En als het mislukt? Dan weten we in ieder geval waarom je leverancier nóg 18 maanden nodig heeft voor die killer feature.
|
||||
|
||||
|
||||
|
||||
--------------------
|
||||
|
||||
𝑨𝑰 𝑺𝒑𝒆𝒆𝒅𝒓𝒖𝒏 𝒅𝒂𝒈 𝟮: 𝑨𝒖𝒕𝒉𝒆𝒏𝒕𝒊𝒄𝒂𝒕𝒊𝒐𝒏, 𝒅𝒐𝒄𝒔 𝒆𝒏 𝒆𝒆𝒓𝒔𝒕𝒆 𝒘𝒐𝒓𝒌𝒇𝒍𝒐𝒘𝒔 - postdatum 20-11-2025
|
||||
Linkedin url: https://www.linkedin.com/feed/update/urn:li:activity:7397166862804951041/
|
||||
|
||||
14 nieuwe accounts na de launch gisteren en genoeg reacties om mij gemotiveerd te houden. Thanks daarvoor!
|
||||
Dat triggerde me om meteen van die simpele demo-link af te stappen en het wat steviger te maken.
|
||||
|
||||
Vandaag gebouwd:
|
||||
𝐀𝐮𝐭𝐡𝐞𝐧𝐭𝐢𝐜𝐚𝐭𝐢𝐨𝐧 𝐝𝐢𝐞 𝐰𝐞𝐫𝐤𝐭
|
||||
Email/password + demo account voor quick testing. Session management met Supabase Auth (JWT-based), password reset flow, en RLS policies voor data security. Basis staat.
|
||||
|
||||
𝐋𝐢𝐯𝐞 𝐝𝐨𝐜𝐮𝐦𝐞𝐧𝐭𝐚𝐭𝐢𝐞 𝐬𝐲𝐬𝐭𝐞𝐞𝐦
|
||||
Een volledig docs platform waar je elke feature, elke commit, elke keuze kunt volgen. Op thema georganiseerd, zodat je precies kunt zien hoe bepaalde delen zijn gebouwd. 💡𝑾𝒂𝒂𝒓𝒐𝒎 𝒅𝒊𝒕 𝒃𝒆𝒍𝒂𝒏𝒈𝒓𝒊𝒋𝒌 𝒊𝒔: traditionele systemen zijn vaak black boxes. Documentatie is vaak slecht te vinden en/of achterhaald, waardoor je niet weet waarom het werkt zoals het werkt.
|
||||
Dit experiment laat zien dat het anders kan. Transparant bouwen én gebruikers vanaf dag 1 betrekken bij de voortgang van je roadmap.
|
||||
|
||||
𝐓𝐰𝐨-𝐥𝐞𝐯𝐞𝐥 𝐢𝐧𝐭𝐞𝐫𝐟𝐚𝐜𝐞 𝐝𝐞𝐬𝐢𝐠𝐧
|
||||
Level 1: Behandelaar context (dashboard, caseload, agenda, rapportage)
|
||||
Level 2: Cliënt dossier (intake, diagnose, behandelplan, voortgang)
|
||||
Je klikt van je caseload overzicht door naar een specifiek dossier. Net zoals je werkt.
|
||||
|
||||
De eerste wensen van Eelco Stieltjes en Sterrin Steenks staan op de roadmap 👍
|
||||
En natuurlijk ook de eerste bugs:
|
||||
Webpack vloekte bij de MDX integratie. AI hielp met debuggen. We draaien weer.
|
||||
|
||||
Dit gaat sneller dan ik had verwacht. De energie van de reacties maakt het een stuk leuker!
|
||||
Volg live en bekijk de docs: https://lnkd.in/eVsQs6zh 🔧
|
||||
Op naar de volgende, let's go! 🏃♂️➡️
|
||||
|
||||
------
|
||||
|
||||
𝑨𝑰 𝑺𝒑𝒆𝒆𝒅𝒓𝒖𝒏 𝒅𝒂𝒈 𝟱: 𝑫𝒂𝒕𝒂 𝒅𝒊𝒆 𝒎𝒆𝒆𝒈𝒂𝒂𝒕, 𝒏𝒖 𝒆𝒄𝒉𝒕𝒆 𝒘𝒐𝒓𝒌𝒇𝒍𝒐𝒘𝒔
|
||||
datum post: 21-11-2025
|
||||
Linkedin Url: https://www.linkedin.com/feed/update/urn:li:activity:7397754016824467456
|
||||
|
||||
Een cliënt verhuist. Nieuwe behandelaar. Weer vanaf nul beginnen. "Vertel nog eens wat je al geprobeerd hebt..."
|
||||
Dit gebeurt elke dag in de GGZ. En het hoeft niet zo te zijn.
|
||||
|
||||
Dit is er vandaag gebouwd in de speedrun:
|
||||
|
||||
𝐃𝐚𝐭𝐚 𝐝𝐢𝐞 𝐞𝐜𝐡𝐭 𝐮𝐢𝐭𝐰𝐢𝐬𝐬𝐞𝐥𝐛𝐚𝐚𝐫 𝐢𝐬
|
||||
Misschien niet direct de killer feature waar je als zorgprofessional op zit te wachten, maar wel een belangrijke basis.
|
||||
Gebouwd op FHIR, de taal die ziekenhuizen en huisartsen wereldwijd gebruiken. Betekent dat het dossier straks gewoon praat met elke ROM-tool, PGO-app of eHealth module. Zonder gedoe.
|
||||
Patient, Practitioner, CarePlan, Observations, Conditions, alles conform de internationale zorgtaal.
|
||||
|
||||
𝐖𝐚𝐭 𝐝𝐢𝐭 𝐦𝐨𝐠𝐞𝐥𝐢𝐣𝐤 𝐦𝐚𝐚𝐤𝐭:
|
||||
𝐈𝐧𝐳𝐚𝐠𝐞 𝐯𝐨𝐨𝐫 𝐜𝐥𝐢𝐞̈𝐧𝐭𝐞𝐧 - Via MedMIJ zie je straks je eigen behandelplan, diagnoses en ROM-scores in je PGO-app. Jouw data, jouw regie.
|
||||
𝐂𝐨𝐧𝐭𝐢𝐧𝐮𝐢̈𝐭𝐞𝐢𝐭 𝐝𝐢𝐞 𝐰𝐞𝐫𝐤𝐭 - Verhuizing? Doorverwijzing? Je complete dossier gaat mee. Inclusief wat werkte, ROM-trends, SMART doelen. Niet opnieuw beginnen.
|
||||
𝐁𝐥𝐞𝐧𝐝𝐞𝐝 𝐜𝐚𝐫𝐞 𝐳𝐨𝐧𝐝𝐞𝐫 𝐠𝐞𝐝𝐨𝐞 - Mindfulness app, dagboek, oefeningen - allemaal gekoppeld aan het behandelplan. Voortgang komt automatisch terug in het dossier.
|
||||
𝐕𝐨𝐨𝐫 𝐝𝐞 𝐩𝐫𝐨𝐟𝐞𝐬𝐬𝐢𝐨𝐧𝐚𝐥:
|
||||
- ROM-metingen automatisch naar LSP
|
||||
- Behandelplannen delen met één klik
|
||||
- Koppeltaal integraties voor eHealth
|
||||
- Bij overdracht zie je direct: wat is geprobeerd, wat werkte, welke ROM-scores
|
||||
|
||||
𝐖𝐚𝐭 𝐧𝐮 𝐤𝐨𝐦𝐭:
|
||||
Nu het datamodel staat, kunnen we aan de slag met echte workflows:
|
||||
→ Screening & intake flow met spraak-naar-tekst
|
||||
→ Ondersteuning voor verschillende disciplines (psycholoog, psychiater, vaktherapeut)
|
||||
→ AI-assistentie voor diagnostiek en behandelplannen
|
||||
|
||||
De eerste wensen van jullie staan op de roadmap. De eerste bugs zijn gefixt. En het tempo blijft hoog 🚀
|
||||
Werk je in de GGZ? Wat zou jou helpen om zo'n systeem écht te gebruiken in je praktijk?
|
||||
Volg live: https://www.aispeedrun.nl/
|
||||
|
||||
hashtag#GGZ hashtag#FHIR hashtag#MedMIJ hashtag#ContinuïteitVanZorg hashtag#EPD
|
||||
|
||||
|
||||
----
|
||||
|
||||
𝑨𝑰 𝑺𝒑𝒆𝒆𝒅𝒓𝒖𝒏 𝐝𝐚𝐠 𝟕: 𝐃𝐞 𝐯𝐚𝐥𝐤𝐮𝐢𝐥
|
||||
post datum: 23-11-2025
|
||||
Linkedinurl: https://www.linkedin.com/feed/update/urn:li:activity:7398370276373311488
|
||||
|
||||
|
||||
Dit weekend begon ik met bouwen van het screening- en intakeproces. Zes tabs, twaalf subtabs, formulieren voor alles.
|
||||
Hulpvraag, contactmomenten, kindcheck, risicotaxatie, anamnese, ROM, diagnose, behandeladvies etc.
|
||||
|
||||
Tijdens dit proces komen heel veel onderdelen samen: registratie van de cliënt, verwerken administratieve gegevens, contact met huisarts en/of omgeving, eerste afspraken plannen, financiering starten en als kers op de taart ook nog doorverwijs- en wachtlijstproblematiek.
|
||||
|
||||
Wanneer je in de GGZ besluit om je werkproces te documenteren, is dit één van de lastigste onderdelen weet ik uit eigen ervaring. Tijdens het bouwen besef ik me: ik bouw het exact zoals ik het zelf 15 jaar lang heb gezien.
|
||||
|
||||
𝐃𝐞 𝐯𝐞𝐫𝐝𝐞𝐥𝐢𝐧𝐠 𝐯𝐚𝐧 𝐞𝐞𝐧 𝐢𝐧𝐭𝐚𝐤𝐞𝐠𝐞𝐬𝐩𝐫𝐞𝐤
|
||||
Hieronder mijn achter-op-het-bierviltje-analyse:
|
||||
𝟑𝟎% 𝐚𝐝𝐦𝐢𝐧𝐢𝐬𝐭𝐫𝐚𝐭𝐢𝐞 – gegevens die al ergens bestaan, maar die we opnieuw invullen omdat systemen niet praten
|
||||
𝟒𝟎% 𝐯𝐨𝐨𝐫𝐠𝐞𝐬𝐜𝐡𝐫𝐞𝐯𝐞𝐧 𝐝𝐨𝐜𝐮𝐦𝐞𝐧𝐭𝐚𝐭𝐢𝐞 – anamnese invullen in 47 tekstvakken terwijl je het gesprek al hebt gevoerd
|
||||
𝟐𝟎% 𝐫𝐢𝐬𝐢𝐜𝐨𝐦𝐚𝐧𝐚𝐠𝐞𝐦𝐞𝐧𝐭 – risicotaxaties die belangrijk zijn, maar waar je dezelfde vragen drie keer op verschillende plekken invult
|
||||
𝟏𝟎% 𝐥𝐮𝐢𝐬𝐭𝐞𝐫𝐞𝐧 𝐧𝐚𝐚𝐫 𝐝𝐞 𝐜𝐥𝐢ë𝐧𝐭 – het enige waar het eigenlijk om gaat
|
||||
En dus bouw ik nu precies wat ik ken. Zes tabs. Twaalf subtabs. Ik digitaliseer het bekende.
|
||||
|
||||
𝐖𝐚𝐭 𝐢𝐤 𝐠𝐚 𝐝𝐨𝐞𝐧
|
||||
Ik ga deze module afmaken. Zoals ik 'm nu bouw. Omdat het een goede benchmark is en zodat we zien hoe het nu werkt.
|
||||
Maar ik wil dit ook transformeren naar een alternatieve intake-flow. Eentje die uitgaat van menselijk contact + AI-assistentie. Eentje die begint bij de cliënt, niet bij het protocol. Een EPD dat je dwingt om eerst te luisteren.
|
||||
|
||||
En dan kijken we welke beter werkt. Want misschien is "hoe het altijd ging" niet hetzelfde als "hoe het moet".
|
||||
|
||||
𝐖𝐚𝐭 𝐞𝐫 𝐧𝐮 𝐬𝐭𝐚𝐚𝐭
|
||||
Screening & intake module:
|
||||
✅ Basisregistratie (cliëntgegevens, contactpersonen)
|
||||
✅ Hulpvraag & activiteitenlog
|
||||
✅ Risicotaxatie (suïcide, agressie, kindveiligheid)
|
||||
✅ Anamnese (psychiatrisch, sociaal, lichamelijk)
|
||||
✅ ROM-onderzoeken
|
||||
✅ Diagnose met DSM-5 codes
|
||||
✅ Behandeladvies + text editor
|
||||
Volgende week:
|
||||
→ Voice-to-text integratie voor intake gesprekken
|
||||
→ AI samenvatting van gesprekken
|
||||
|
||||
𝐌𝐢𝐣𝐧 𝐯𝐫𝐚𝐚𝐠 𝐚𝐚𝐧 𝐣𝐨𝐮
|
||||
Welke onderdelen van jouw intake kosten jou de meeste tijd?
|
||||
En welke zou je schrappen als je mocht kiezen?
|
||||
|
||||
Volg live: 𝐡𝐭𝐭𝐩𝐬://𝐰𝐰𝐰.𝐚𝐢𝐬𝐩𝐞𝐞𝐝𝐫𝐮𝐧.𝐧𝐥
|
||||
|
||||
hashtag#GGZ hashtag#Healthcare hashtag#AISpeedrun hashtag#BuildInPublic hashtag#ProcessInnovation hashtag#EPD
|
||||
|
||||
|
||||
---
|
||||
|
||||
𝐀𝐈 𝐒𝐩𝐞𝐞𝐝𝐫𝐮𝐧 𝐖𝐞𝐞𝐤 𝟐. 𝐃𝐞𝐦𝐨 𝐭𝐢𝐦𝐞: 𝐬𝐩𝐫𝐚𝐚𝐤𝐡𝐞𝐫𝐤𝐞𝐧𝐧𝐢𝐧𝐠 𝐞𝐧 𝐯𝐞𝐫𝐬𝐥𝐚𝐠𝐥𝐞𝐠𝐠𝐢𝐧𝐠
|
||||
postdatum 26-11-2025
|
||||
Linkedin url: http://linkedin.com/feed/update/urn:li:activity:7399337403632590848/
|
||||
|
||||
30 minuten typen na elk gesprek. Herkenbaar?
|
||||
|
||||
In week 2 van deze AI Speedrun heb ik spraak-naar-tekst ingebouwd. Gewoon praten na je gesprek, en het verslag schrijft zichzelf.
|
||||
In de demo zie je:
|
||||
→ Live transcriptie terwijl je praat
|
||||
→ Stopwoordjes worden automatisch gefilterd
|
||||
→ Tekst direct in het dossier
|
||||
Geen formulieren. Geen klikken door tien schermen. Gewoon praten.
|
||||
Het behandeladvies voor de cliënt in deze demo: 𝑙𝑎𝑝𝑡𝑜𝑝-𝑒𝑥𝑝𝑜𝑠𝑢𝑟𝑒 𝑚𝑒𝑡 𝑔𝑒𝑙𝑒𝑖𝑑𝑒𝑙𝑖𝑗𝑘𝑒 𝑎𝑓𝑏𝑜𝑢𝑤. 𝐻𝑒𝑟𝑘𝑒𝑛𝑏𝑎𝑎𝑟 𝑣𝑜𝑜𝑟 𝑠𝑜𝑚𝑚𝑖𝑔𝑒𝑛?😅
|
||||
|
||||
Volgende stap: AI die je verslag ook nog structureert naar hoofdklacht, anamnese en behandeladvies.
|
||||
Hoeveel tijd ben jij kwijt aan verslaglegging per dag?
|
||||
|
||||
|
||||
----
|
||||
|
||||
𝐀𝐈 𝐒𝐩𝐞𝐞𝐝𝐫𝐮𝐧: 𝐀𝐈 𝐚𝐥𝐬 𝐭𝐨𝐨𝐥 𝐨𝐟 𝐚𝐥𝐬 𝐛𝐚𝐚𝐬?
|
||||
postdatum:" 30-11-2025
|
||||
linkedinurl: https://www.linkedin.com/feed/update/urn:li:activity:7400873154283261952
|
||||
|
||||
Merijn van der Zalm stuurde me gisteren Josh Anderson's verhaal door → https://lnkd.in/eqyHrJRS
|
||||
|
||||
Josh (Product-Focused CTO, 25 jaar ervaring) ging 3 maanden all-in met AI. Product shipte en werkte. Maar toen hij een kleine wijziging wilde maken, snapte hij zijn eigen code niet meer.
|
||||
Zijn collega vroeg: "𝑾𝒉𝒐 𝒐𝒘𝒏𝒔 𝒕𝒉𝒂𝒕 𝒑𝒓𝒐𝒅𝒖𝒄𝒕? 𝒀𝒐𝒖 𝒐𝒓 𝑪𝒍𝒂𝒖𝒅𝒆 𝑪𝒐𝒅𝒆?"
|
||||
Zijn antwoord: 𝑪𝒍𝒂𝒖𝒅𝒆 𝑪𝒐𝒅𝒆. Josh was passagier geworden in zijn eigen product. Dit is waarom ik mijn eigen experiment doe. Die grens tussen "productief met AI" en "passagier in je project" ligt ergens en ik wil uitzoeken waar.
|
||||
|
||||
Josh's inzicht: Augmentation vs Abdication
|
||||
Augmentation = AI helpt, jij blijft eigenaar
|
||||
Abdication = AI beslist, jij knikt
|
||||
MIT studie: 95% van AI-initiatieven faalt. Dat is abdication.
|
||||
De 5% die werkt? Augmentation.
|
||||
|
||||
Ik ben geen developer. Wel 15 jaar GGZ-domeinkennis en begrip van software processen. Als ík al in staat ben om werkende functionaliteit te bouwen - solo, geen dev-achtergrond - hoe ver kun je dan als volledig dev-team komen?
|
||||
|
||||
Speedrun dag 12 . Ik zoek die grens tussen AI als tool en AI als baas.
|
||||
Thanks Merijn voor de reality check 👊
|
||||
|
||||
Herken je dit? Waar merk jij het verschil tussen "AI helpt je" en "AI heeft je overgenomen"?
|
||||
|
||||
Het volledige artikel van Josh kun je hier teruglezen: https://lnkd.in/e7ZE7VgB
|
||||
|
||||
|
||||
-----
|
||||
|
||||
𝐀𝐈 𝐒𝐏𝐄𝐄𝐃𝐑𝐔𝐍 - 𝐇𝐞𝐭 𝐢𝐬 𝟏𝟑:𝟒𝟓 𝐮𝐮𝐫. 𝐉𝐞 𝐯𝐨𝐥𝐠𝐞𝐧𝐝𝐞 𝐜𝐥𝐢𝐞̈𝐧𝐭 𝐤𝐨𝐦𝐭 𝐨𝐦 𝟏𝟒:𝟎𝟎.🏃♂️
|
||||
postdatum: 2-12-2025
|
||||
linkedinurl: https://www.linkedin.com/feed/update/urn:li:activity:7401515638076157953/
|
||||
|
||||
Je weet dat je een intake moet starten, maar je zit naar je scherm te staren. Waar was die knop ook alweer? Cliënten? Dossier? Of toch via het menu rechtsboven?
|
||||
|
||||
Je hebt vier opties:
|
||||
- Een collega vragen - maar die zit zelf in gesprek.
|
||||
- De handleiding openen - tig pagina's en sheets scrollen, als je de instructie überhaupt al kan vinden
|
||||
- De servicedesk bellen - gemiddelde wachttijd 15 minuten.
|
||||
- Of mijn persoonlijke favoriet, gewoon maar wat klikken en hopen dat het goed gaat.
|
||||
Geen van deze opties is ideaal. En dit gebeurt meerdere keren per dag.
|
||||
|
||||
𝐃𝐞𝐳𝐞 𝐰𝐞𝐞𝐤 𝐛𝐨𝐮𝐰𝐝𝐞 𝐢𝐤 𝐝𝐚𝐚𝐫 𝐞𝐞𝐧 𝐨𝐩𝐥𝐨𝐬𝐬𝐢𝐧𝐠 𝐯𝐨𝐨𝐫.
|
||||
Een AI-assistent die gewoon daar zit, rechtsonder in je scherm. 𝐀𝐥𝐭𝐢𝐣𝐝 𝐛𝐞𝐬𝐜𝐡𝐢𝐤𝐛𝐚𝐚𝐫
|
||||
Je klikt erop en typt: "Hoe start ik een intake?"
|
||||
Binnen twee seconden krijg je antwoord. In gewoon Nederlands. Precies wat je nodig hebt.
|
||||
En het mooie is: je kunt doorvragen. "En hoe voeg ik daar notities aan toe?" De assistent begrijpt dat je het nog steeds over die intake hebt. Je hoeft niet steeds opnieuw te beginnen met zoeken.
|
||||
|
||||
𝐖𝐚𝐚𝐫𝐨𝐦 𝐝𝐢𝐭 𝐞𝐫𝐭𝐨𝐞 𝐝𝐨𝐞𝐭?
|
||||
Elk moment dat je zoekt naar een knop, is een moment dat je niet bezig bent met je cliënt. Ik heb collega's zien huilen van frustratie. Niet omdat ze dom waren of lui. Maar omdat het systeem onduidelijk was, de tijd ontbrak om het te leren, en de druk om gewoon door te werken altijd aanwezig was.
|
||||
|
||||
Dat is het echte probleem. Niet de minuten. Maar de frustratie. De stress. Het gevoel dat je tekort schiet terwijl je gewoon je werk wilt doen.
|
||||
|
||||
De echte reden waarom systemen falen:
|
||||
Het ligt niet aan de behandelaren. Het ligt ook niet altijd aan het systeem. Het ligt aan het moment waarop je hulp nodig hebt.
|
||||
|
||||
Die handleiding die de implementatieconsultant tijdens de training uitdeelde? Die ligt in een bureaula. Of op een netwerkschijf die je niet zo vaak opent. Of het is een PDF waarvan je niet meer weet hoe die heet.
|
||||
En dan zit je daar, om 13:45, en je hebt gewoon direct antwoord nodig.
|
||||
Dus bouwde ik een systeem dat uitleg geeft op het moment dat je het nodig hebt. Geen apart venster. Geen tabblad erbij. Gewoon daar, in het scherm waar je toch al bent.
|
||||
|
||||
Wat is het meest frustrerende moment in jouw EPD? Waar loop je tegenaan? Wat kost je elke dag weer onnodig tijd? Ik ben benieuwd!
|
||||
|
||||
hashtag#AISpeedrun hashtag#GGZ hashtag#EPD hashtag#ZorgInnovatie hashtag#DigitaleZorg
|
||||
|
||||
|
||||
----
|
||||
|
||||
𝐀𝐈 𝐒𝐩𝐞𝐞𝐝𝐫𝐮𝐧 𝐄𝐏𝐃 - 𝐖𝐞𝐞𝐤 𝟒: 𝐓𝐮𝐬𝐬𝐞𝐧 𝐝𝐞 𝐚𝐚𝐫𝐝𝐚𝐩𝐩𝐞𝐥𝐞𝐧 𝐞𝐧 𝐝𝐞 𝐬𝐩𝐫𝐮𝐢𝐭𝐣𝐞𝐬 𝐝𝐨𝐨𝐫
|
||||
postdatum 6-12-2025
|
||||
Linkedin url: https://www.linkedin.com/feed/update/urn:li:activity:7402972614106755072/
|
||||
|
||||
|
||||
"In 4 weken een compleet EPD bouwen met AI!"
|
||||
Klinkt goed, toch? Sexy headline. Lekker disruptief.
|
||||
|
||||
𝐊𝐥𝐞𝐢𝐧𝐞 𝐫𝐞𝐚𝐥𝐢𝐭𝐲 𝐜𝐡𝐞𝐜𝐤: Het zijn inderdaad 4 weken. Maar geen 28 dagen van 8 uur programmeren. Eerder: een uurtje 's avonds als de kids slapen, zondagochtend vroeg, en tussen de sinterklaassurprises door.
|
||||
Dit is geen Silicon Valley-fantasie. Dit is bouwen aan de keukentafel, tussen de aardappelen en de spruitjes door.
|
||||
En het werkt... Na 3 weken staat er een EPD. Met intake, screenings, AI-behandelplannen, spraak-naar-tekst, de hele reutemeteut. FHIR-compliant, werkend, bruikbaar.
|
||||
|
||||
𝐇𝐞𝐭 𝐜𝐨𝐧𝐭𝐫𝐚𝐬𝐭
|
||||
Traditionele enterprise software? Een jaar implementeren voor €500k+. Met consultants die je vertellen dat het écht niet sneller kan. Change management, migratie-drama's, vendor lock-in voor 5 jaar.
|
||||
En dan bouw ik (bijna) hetzelfde in 4 weken. Solo, tussen gezin en werk door.
|
||||
"Maar AVG dan? NEN7510? Integratie met bestaande systemen?"
|
||||
Terechte vragen. En nee, dat is niet niks. Dat zijn serieuze uitdagingen die tijd en geld kosten.
|
||||
|
||||
Maar: Je kunt nu beginnen met een werkend fundament in weken. De compliance, integraties, beveiliging – dat bouw je erop. Iteratief.
|
||||
In plaats van een jaar wachten op big bang, heb je in week 4 al iets werkends. Dat is het verschil.
|
||||
|
||||
𝐆𝐞𝐞𝐧 𝐡𝐮𝐬𝐭𝐥𝐞 𝐩𝐨𝐫𝐧
|
||||
Dit is geen "rise and grind" verhaal. Ik slaap gewoon. Om 18u kijk ik het Sinterklaasjournaal met de kids.
|
||||
Maar moderne AI-tools + 15 jaar domeinkennis + gefocuste sessies = plots is er veel mogelijk. Niet omdat ik zo goed ben. Maar omdat de tools volwassen zijn.
|
||||
Software hoeft niet meer onbereikbaar duur en traag te zijn. Het kan ook gewoon. Tussen de spruitjes door.
|
||||
|
||||
Week 4: demo's, behandelplan UI. Laatste week. Volg je mee? 👉 aispeedrun.nl
|
||||
|
||||
-----
|
||||
|
||||
𝐀𝐈 𝐒𝐏𝐄𝐄𝐃𝐑𝐔𝐍 - "𝐃𝐞 𝐯𝐞𝐫𝐩𝐥𝐞𝐞𝐠𝐤𝐮𝐧𝐝𝐢𝐠𝐞 𝐨𝐯𝐞𝐫𝐝𝐫𝐚𝐜𝐡𝐭"
|
||||
postdatum: 8-12-2025
|
||||
Linkedin url: https://www.linkedin.com/feed/update/urn:li:activity:7403823852570705920/
|
||||
|
||||
"𝘒𝘶𝘯 𝘫𝘦 𝘪𝘦𝘵𝘴 𝘴𝘭𝘪𝘮𝘴 𝘣𝘰𝘶𝘸𝘦𝘯 𝘷𝘰𝘰𝘳 𝘦𝘦𝘯 𝘷𝘦𝘳𝘱𝘭𝘦𝘦𝘨𝘬𝘶𝘯𝘥𝘪𝘨𝘦 𝘥𝘪𝘦 6 𝘰𝘷𝘦𝘳𝘥𝘳𝘢𝘤𝘩𝘵𝘦𝘯 𝘩𝘦𝘦𝘧𝘵 𝘱𝘦𝘳 𝘥𝘢𝘨 𝘢𝘢𝘯 𝘢𝘳𝘵𝘴𝘦𝘯 𝘢𝘢𝘯 𝘥𝘦 𝘷𝘰𝘭𝘨𝘦𝘯𝘥𝘦 𝘥𝘪𝘦𝘯𝘴𝘵 𝘦𝘯 𝘰𝘯𝘥𝘦𝘳𝘵𝘶𝘴𝘴𝘦𝘯 𝘰𝘰𝘬 𝘢𝘭𝘭𝘦𝘳𝘭𝘦𝘪 𝘮𝘦𝘵𝘪𝘯𝘨𝘦𝘯 𝘥𝘰𝘦𝘵 𝘦𝘯 𝘮𝘰𝘦𝘵 𝘰𝘱𝘴𝘭𝘢𝘢𝘯?"
|
||||
|
||||
Ja, dat kan ik!
|
||||
|
||||
𝐇𝐞𝐭 𝐞𝐜𝐡𝐭𝐞 𝐩𝐫𝐨𝐛𝐥𝐞𝐞𝐦
|
||||
Verpleegkundigen lopen rondes langs 15 cliënten achter elkaar. Je wilt niet constant tussen dossiers heen en weer switchen, dat kost gewoon te veel tijd. En de psychiater die 's ochtends binnenkomt moet nu alle 15 dossiers openen om te checken of er vannacht iets gebeurd is. Dat is 30-45 minuten scanwerk voordat je überhaupt aan je dag begint.
|
||||
Tijd die je liever besteedt aan cliënten, niet aan zoeken in systemen.
|
||||
|
||||
𝐖𝐚𝐭 𝐢𝐤 𝐛𝐨𝐮𝐰𝐝𝐞
|
||||
Twee modules die samenwerken. Voor de verpleegkundige een zorgnotities-module waar alle cliënten in één sidebar staan. Quick-switch tijdens je ronde, korte notities met categorieën (Medicatie, ADL/verzorging, Gedrag, Incident), en een toggle om te markeren wat belangrijk is voor overdracht. Achteraf bewerken kan natuurlijk ook nog.
|
||||
|
||||
Voor artsen en de volgende dienst een overdracht-module met direct overzicht: welke cliënten hadden iets vannacht? Je kunt filteren op alerts (rood voor hoge risico's, groen voor overdracht notities) en ziet een tijdlijn met alle rapportages per cliënt.
|
||||
|
||||
En als bonus een AI-samenvatting, maar wel met een cruciaal onderdeel: elk aandachtspunt is klikbaar en linkt direct naar de bronrapportage. Zodat we kunnen zien waar informatie vandaan komt. 𝑮𝒆𝒆𝒏 𝒃𝒍𝒂𝒄𝒌 𝒃𝒐𝒙, 𝒎𝒂𝒂𝒓 𝒕𝒓𝒂𝒏𝒔𝒑𝒂𝒓𝒂𝒏𝒕𝒊𝒆.
|
||||
|
||||
𝐇𝐞𝐭 𝐯𝐞𝐫𝐬𝐜𝐡𝐢𝐥
|
||||
- Van 2 uur dossiers doorzoeken, wisselen en informatie filteren naar 2 minuten scannen.
|
||||
- Van 15 dossiers openen naar direct zien waar je aandacht nodig is.
|
||||
- Van 6x per dag dezelfde info herhalen naar één keer documenteren en klaar.
|
||||
|
||||
𝐖𝐚𝐚𝐫𝐨𝐦 𝐢𝐤 𝐝𝐢𝐭 𝐝𝐨𝐞
|
||||
Omdat ik zie hoe zorgverleners gefrustreerd raken door systemen die hun werk vertragen in plaats van ondersteunen. Die frustratie hoeft niet. Traditionele EPD's kosten €500k+ en 12 maanden. 𝗜𝗸 𝗯𝗼𝘂𝘄𝗱𝗲 𝗱𝗲𝘇𝗲 𝘃𝗲𝗿𝗽𝗹𝗲𝗲𝗴𝗿𝗮𝗽𝗽𝗼𝗿𝘁𝗮𝗴𝗲 𝗲𝗻 𝗼𝘃𝗲𝗿𝗱𝗿𝗮𝗰𝗵𝘁-𝗺𝗼𝗱𝘂𝗹𝗲 𝗮𝗳𝗴𝗲𝗹𝗼𝗽𝗲𝗻 𝘄𝗲𝗲𝗸𝗲𝗻𝗱 𝗺𝗲𝘁 𝗔𝗜.
|
||||
|
||||
Software hoeft niet jaren te kosten. Het kan ook volgende week al werken.
|
||||
Check de video hieronder. Twee minuten demo hoe de verpleegkundige rapportage en overdracht werkt. 👇
|
||||
|
||||
Herken je dit? Heb je een collega die hier dagelijks mee worstelt? Stuur dit door. Ik ben benieuwd of deze oplossing helpt!
|
||||
|
||||
|
||||
---
|
||||
|
||||
postdatum: 11-12-2025
|
||||
linkedin url: https://www.linkedin.com/feed/update/urn:li:activity:7404958166985310208/
|
||||
|
||||
𝐒𝐭𝐨𝐩 𝐦𝐞𝐭 𝐤𝐥𝐚𝐠𝐞𝐧 𝐝𝐚𝐭 𝐀𝐈 𝐠𝐞𝐞𝐧 𝐠𝐨𝐞𝐝𝐞 𝐬𝐨𝐟𝐭𝐰𝐚𝐫𝐞 𝐛𝐨𝐮𝐰𝐭
|
||||
"𝐻𝑒𝑏 𝑖𝑘 𝑔𝑒𝑝𝑟𝑜𝑏𝑒𝑒𝑟𝑑. 𝑊𝑒𝑟𝑘𝑡 𝑛𝑖𝑒𝑡."
|
||||
|
||||
Ah, de one-shot expert heeft gesproken. Een one-shot-prompt geeft ook een one-shot-resultaat. En verrassing.. dat is 9 van de 10x niet wat je wilde. Noem het one-shot-optimisme: de verwachting dat je in één vraag een werkend product krijgt. Ja, zo werkt het dus niet.
|
||||
|
||||
En dan blijf je achter, want AI coding is geen hype meer. OpenRouter routeert miljarden AI-verzoeken voor developers. Begin dit jaar ging één op de tien over code. En nu in december de helft. (openrouter.ai/state-of-ai). Dit is mainstream, maar dan moet je wel weten hoe je ermee werkt.
|
||||
|
||||
AI agents zijn net hele eager juniors. Ze beginnen meteen met bouwen zonder enige context. Vraag om een login-pagina en je krijgt OAuth, 2FA, role-based access en een password recovery flow. Terwijl jij gewoon een simpel schermpje wilde.
|
||||
|
||||
𝐃𝐞 𝟓 𝐠𝐨𝐥𝐝𝐞𝐧 𝐫𝐮𝐥𝐞𝐬 𝐯𝐨𝐨𝐫 𝐰𝐞𝐫𝐤𝐞𝐧 𝐦𝐞𝐭 𝐀𝐈 𝐚𝐠𝐞𝐧𝐭𝐬:
|
||||
𝟏. 𝐍𝐢𝐞𝐭 𝐦𝐞𝐭𝐞𝐞𝐧 𝐩𝐫𝐨𝐠𝐫𝐚𝐦𝐦𝐞𝐫𝐞𝐧 - AI is getraind om ℎ𝑒𝑙𝑝𝑓𝑢𝑙 te zijn. En helpful voelt voor een AI als: snel iets opleveren. Geef een half zinnetje en er wordt al gebouwd. Elke feature begin ik met: "Niet meteen programmeren." Eerst context, dan een plan en dan pas bouwen.
|
||||
|
||||
𝟐. 𝐆𝐞𝐞𝐟 𝐚𝐥𝐭𝐢𝐣𝐝 𝐜𝐨𝐧𝐭𝐞𝐱𝐭 - Elke chat begint voor AI als een leeg blad. Geen geheugen van wat je gisteren bouwde. Dus ja, er wordt vrolijk een nieuwe functie geschreven terwijl je die al hebt. Daarom werk ik altijd met een PRD, functioneel ontwerp en technisch ontwerp. Voor mezelf én als context voor de AI.
|
||||
|
||||
𝟑. 𝐃𝐞𝐧𝐤 𝐌𝐕𝐏 - Vraag om een zoekfunctie en AI bouwt meteen filters, sortering, fuzzy matching, zoeksuggesties en een volledige Elasticsearch-integratie. Ik vertel de agent altijd: "We bouwen een prototype, een MVP." Prioriteer in MVP en post-MVP. Houd het klein en bouw uit. Dit zorgt ervoor dat je niet direct 100 features tegelijk bouwt, wat je sowieso niet direct wil.
|
||||
|
||||
𝟒. 𝐖𝐞𝐫𝐤 𝐢𝐧 𝐢𝐭𝐞𝐫𝐚𝐭𝐢𝐞𝐬 - AI probeert altijd in één keer een "compleet" antwoord te geven. Maar software bouwen is geen one-shot game. Mijn bouwplan is geen "start met bouwen", maar een gefaseerd plan met epics en stories. De opdracht is "Maak Epic 1, Story 1."
|
||||
|
||||
𝟓. 𝐉𝐢𝐣 𝐛𝐥𝐢𝐣𝐟𝐭 𝐝𝐞 𝐛𝐚𝐚𝐬 - AI is een eager junior, geen architect. Slim, snel, maar zonder sturing wordt er de verkeerde kant op gebouwd. Ik ben geen programmeur, maar wel de product owner. Ik bepaal de richting, AI voert uit.
|
||||
|
||||
𝐁𝐨𝐧𝐮𝐬 𝐭𝐢𝐩: Tools zoals Claude Code en Cursor hebben een "Plan" en "Ask" modus. Gebruik dit! Laat AI eerst denken voordat je 'm laat bouwen.
|
||||
|
||||
Die eager junior kan heel veel. Tenminste, als je 'm goed begeleidt. Net als in het echt. 😉
|
||||
|
||||
Hieronder een korte video waarin je ziet hoe Cursor realtime code generereerd! Meer weten over de AI Speedrun? 👉 aispeedrun.nl
|
||||
|
||||
hashtag#AISpeedrun hashtag#AICoding hashtag#Claude hashtag#Cursor hashtag#BuildingWithAI
|
||||
|
||||
|
||||
----
|
||||
|
||||
🚀 𝐀𝐈 𝐒𝐩𝐞𝐞𝐝𝐫𝐮𝐧 - 𝐃𝐚𝐠 𝟐𝟖
|
||||
"𝐃𝐚𝐭 𝐬𝐭𝐨𝐧𝐝 𝐧𝐢𝐞𝐭 𝐨𝐩 𝐦𝐢𝐣𝐧 𝐥𝐢𝐣𝐬𝐭𝐣𝐞" 𝐢𝐬 𝐠𝐞𝐞𝐧 𝐞𝐱𝐜𝐮𝐮𝐬 𝐦𝐞𝐞𝐫.
|
||||
Postdatum: 12-12-2025
|
||||
Linkedin url: https://www.linkedin.com/feed/update/urn:li:activity:7405271474250338304/
|
||||
Toen oud-collega Edwin zei dat mijn EPD-prototype wat traag aanvoelde, was mijn eerste reactie defensief. "𝐽𝑎, 𝑑𝑎𝑡 𝑤𝑎𝑠 𝑜𝑜𝑘 𝑛𝑖𝑒𝑡 𝑒𝑐ℎ𝑡 ℎ𝑒𝑡 𝑑𝑜𝑒𝑙. 😤 " Performance optimalisatie stond niet op mijn lijstje. Ik was bezig met features bouwen, niet met milliseconden tellen.
|
||||
|
||||
Na een nachtje slapen kon ik de feedback beter waarderen. Want iedereen die met enterprise software werkt (zeker EPD's) weet dat trage systemen de realiteit zijn. Eindeloos wachten op schermen die laden, rapportages die vastlopen, behandelaren die gefrustreerd afhaken. Ik ken het uit eigen ervaring. 😞
|
||||
|
||||
Maar wat verwacht je? Ik draai op de gratis tier van Vercel en Supabase. Geen dedicated servers, geen geoptimaliseerde database clusters. Dit is een prototype op een hobby-budget.
|
||||
|
||||
Toch opende ik Claude en typte: "𝑅𝑒𝑣𝑖𝑒𝑤 𝑑𝑒𝑧𝑒 𝑐𝑜𝑑𝑒𝑏𝑎𝑠𝑒 𝑜𝑝 𝑝𝑒𝑟𝑓𝑜𝑟𝑚𝑎𝑛𝑐𝑒 𝑒𝑛 𝑔𝑒𝑒𝑓 𝑐𝑜𝑛𝑐𝑟𝑒𝑡𝑒 𝑣𝑒𝑟𝑏𝑒𝑡𝑒𝑟𝑣𝑜𝑜𝑟𝑠𝑡𝑒𝑙𝑙𝑒𝑛." Wat volgde was een masterclass die ik niet had verwacht. Baseline metingen. Bottleneck-analyse. Vier iteraties van optimalisaties: parallel data fetching, server-side pagination, database indexes, lazy loading.
|
||||
|
||||
𝐇𝐞𝐭 𝐫𝐞𝐬𝐮𝐥𝐭𝐚𝐚𝐭:
|
||||
Patient Dashboard --> van 800ms naar 440ms
|
||||
Rapportage API --> van 1.67s naar 188ms
|
||||
Rapportage pagina --> van 2.05s naar 343ms
|
||||
|
||||
𝐌𝐚𝐚𝐫 𝐝𝐢𝐭 𝐠𝐚𝐚𝐭 𝐧𝐢𝐞𝐭 𝐨𝐯𝐞𝐫 𝐦𝐢𝐥𝐥𝐢𝐬𝐞𝐜𝐨𝐧𝐝𝐞𝐧.
|
||||
AI versnelt niet alleen het typen van code. Het versnelt het denken over code. De drempel om iets te fixen is nu zo laag geworden dat feedback negeren een bewuste keuze wordt, niet een praktische beperking.
|
||||
|
||||
Dat verandert alles. Niet alleen hoe je software bouwt, maar ook hoe je feedback ontvangt. "𝐷𝑎𝑎𝑟 ℎ𝑒𝑏 𝑖𝑘 𝑛𝑢 𝑔𝑒𝑒𝑛 𝑡𝑖𝑗𝑑 𝑣𝑜𝑜𝑟" betekent nu eigenlijk: "𝐷𝑎𝑡 𝑣𝑖𝑛𝑑 𝑖𝑘 𝑛𝑖𝑒𝑡 𝑏𝑒𝑙𝑎𝑛𝑔𝑟𝑖𝑗𝑘 𝑔𝑒𝑛𝑜𝑒𝑔." Eerlijker, maar ook confronterender.
|
||||
|
||||
(𝑂ℎ, 𝑒𝑛 𝑑𝑒𝑧𝑒 𝑤𝑒𝑒𝑘 𝑜𝑜𝑘 𝑔𝑒𝑏𝑜𝑢𝑤𝑑: 𝑎𝑔𝑒𝑛𝑑𝑎-𝑣𝑒𝑟𝑏𝑒𝑡𝑒𝑟𝑖𝑛𝑔𝑒𝑛 𝑚𝑒𝑡 𝑑𝑟𝑎𝑔 & 𝑑𝑟𝑜𝑝, 𝑏𝑒ℎ𝑎𝑛𝑑𝑒𝑙𝑝𝑙𝑎𝑛 𝑢𝑖𝑡𝑔𝑒𝑏𝑟𝑒𝑖𝑑, 𝑒𝑛 𝑒𝑒𝑛 𝑣𝑜𝑙𝑙𝑒𝑑𝑖𝑔𝑒 𝑑𝑖𝑎𝑔𝑛𝑜𝑠𝑒-𝑚𝑜𝑑𝑢𝑙𝑒. 𝐴𝑙𝑙𝑒𝑒𝑛 𝑛𝑜𝑔 𝑔𝑒𝑒𝑛 𝑡𝑖𝑗𝑑 𝑔𝑒ℎ𝑎𝑑 𝑜𝑚 𝑒𝑟 𝑒𝑒𝑛 𝑛𝑒𝑡𝑡𝑒 𝑝𝑜𝑠𝑡 𝑣𝑎𝑛 𝑡𝑒 𝑚𝑎𝑘𝑒𝑛.)
|
||||
|
||||
Volgende week: de eindbalans. Kan AI een EPD bouwen? Het antwoord is genuanceerder dan ik vier weken geleden dacht.
|
||||
|
||||
hashtag#AISpeedrun hashtag#HealthTech hashtag#BuildInPublic hashtag#EPD hashtag#GGZ hashtag#AI hashtag#SoftwareDevelopment hashtag#Claude hashtag#Startup
|
||||
|
||||
|
||||
-------
|
||||
𝐀𝐈 𝐒𝐩𝐞𝐞𝐝𝐫𝐮𝐧: 𝐃𝐞 𝐂𝐢𝐣𝐟𝐞𝐫𝐬
|
||||
postdatum: 18-12-2025
|
||||
Linkedin url: https://www.linkedin.com/feed/update/urn:li:activity:7407389687469809664/
|
||||
|
||||
Vier weken geleden startte ik een experiment: hoe ver kom je met AI-tooling als je een compleet EPD-systeem wil bouwen voor de GGZ?
|
||||
Nu heb ik een antwoord en de cijfers.
|
||||
Mijn eerste conclusie: Met AI kun je volwaardige functionaliteit snel opleveren. Maar, en dit is belangrijk, AI verzint geen goede oplossing. Jij moet zelf bedenken waar de waarde zit.
|
||||
|
||||
⚠️ 𝑫𝒐𝒐𝒓𝒔𝒄𝒓𝒐𝒍𝒍𝒆𝒏 𝒂𝒍𝒔 𝒋𝒆 𝒏𝒊𝒆𝒕 𝒗𝒂𝒏 𝒄𝒊𝒋𝒇𝒆𝒓𝒕𝒋𝒆𝒔 𝒉𝒐𝒖𝒅𝒕.
|
||||
𝐃𝐞 𝐜𝐢𝐣𝐟𝐞𝐫𝐬:
|
||||
- 95 commits
|
||||
- ~118.000 regels code
|
||||
- 140+ documenten (waarvan 75 formele specs: PRD, FO, TO, Bouwplannen)
|
||||
- 17 gebruikersdocumentatie pagina's
|
||||
- 4 release notes
|
||||
- 1 developer + Claude Code
|
||||
- €200 budget
|
||||
|
||||
𝟕 𝐜𝐨𝐦𝐩𝐥𝐞𝐭𝐞 𝐦𝐨𝐝𝐮𝐥𝐞𝐬: Authenticatie met Supabase (login, signup, wachtwoordreset, email confirmatie). Screening & intake systeem met hulpvraag, besluitvorming en risicotaxatie. Diagnose module met ICD-10 codering en zoekfunctie. Agenda met FullCalendar (dag/week/maand views). Verpleegkundige rapportage met overdracht. Behandelplan module met SMART doelen en leefgebieden.
|
||||
|
||||
𝟑 𝐀𝐈-𝐢𝐧𝐭𝐞𝐠𝐫𝐚𝐭𝐢𝐞𝐬: Spraakgestuurde verslaglegging via Deepgram - gewoon dicteren in plaats van typen. AI-gegenereerde samenvattingen voor dienstoverdracht. En een AI-assistent die zowel helpt met systeemgebruik als inhoudelijke vragen over het dossier kan beantwoorden.
|
||||
|
||||
𝐓𝐞𝐜𝐡𝐧𝐢𝐬𝐜𝐡:
|
||||
En voor de 'het-is-vast-spaghetti-code' critici: dit draait op Next.js 14, TypeScript, Supabase met Row Level Security, een FHIR-compliant datamodel, en production-ready componenten. Volledig Nederlandse UI. Op een hobby-project budget.
|
||||
|
||||
Dit waren de cijfers. Experiment geslaagd zou je zeggen. Alleen, tijdens het bouwen realiseerde ik me dat ik nog steeds een vrij traditioneel systeem aan het bouwen was. Weliswaar met slimme AI-handigheidjes, maar in de kern? Hetzelfde EPD-denken als de afgelopen 15 jaar.
|
||||
|
||||
Mijn aanpak is innovatief, het product eerlijk gezegd niet heel erg. AI versnelt wat je bouwt, maar wát je bouwt, dat bepaal jij. Domeinkennis wordt meer en meer relevanter dan de technische skills.
|
||||
|
||||
Ik heb inmiddels een idee over hoe het EPD van de toekomst eruit moet zien en dat is niet wat er nu staat.
|
||||
|
||||
|
||||
---
|
||||
|
||||
Gisteren de cijfers. Vandaag de learnings.
|
||||
Linkedin url: https://www.linkedin.com/feed/update/urn:li:activity:7407681351857942528/
|
||||
postdatum 19-12-2025
|
||||
|
||||
10 dingen die ik leerde van 4 weken bouwen met AI. Over AI als tool, over mijzelf als bouwer, en over waarom de zorg meer moet experimenteren.
|
||||
|
||||
De belangrijkste inzichten?
|
||||
→ AI verzint geen goede oplossing. Jij moet zelf bedenken waar de waarde zit.
|
||||
→ Domeinkennis weegt zwaarder dan technische skills.
|
||||
→ Met alle moderne tooling bouw ik nog steeds traditioneel EPD-denken.
|
||||
|
||||
Dat laatste was een ontnuchterende realisatie.
|
||||
Lees het volledige artikel 👇
|
||||
hashtag#AISpeedrun hashtag#EPD hashtag#GGZ hashtag#HealthTech hashtag#BuildInPublic hashtag#ZorgICT
|
||||
|
||||
## Hieronder volgt de tekst van het linkedin artikel waar de post naar verwijst
|
||||
Vier weken geleden startte ik een experiment: hoe ver kom je met AI-tooling als je een compleet EPD-systeem wil bouwen voor de GGZ?
|
||||
De aanleiding? Twee dingen. Jaren van frustratie over EPD's die nét niet werken zoals de zorg werkt. En de vraag die ik steeds vaker hoorde: "Maar kun je met AI écht software bouwen?" Ik besloot het uit te zoeken.
|
||||
|
||||
Meer dan 15 jaar werk ik nu in de GGZ. En al die tijd hoor ik hetzelfde verhaal. Van collega's, van behandelaren, van managers: het EPD werkt niet zoals wij werken. Die ene feature die we nodig hebben? Staat op de roadmap. Al 18 maanden. Het budget voor aanpassingen? Tonnen. En dan nog is het niet zeker dat het komt. Ik weet dit uit eigen ervaring, want ik heb jarenlang bij een EPD-leverancier gewerkt als consultant en product owner. Dus ik begrijp de worsteling om goede, stabiele, functionele, veilige, schaalbare, gebruiksvriendelijke software te bouwen die voldoet aan alle wet en regelgeving. Maar toch, miljoenencontracten, jarenlange implementaties. En aan het eind van de rit nog steeds workarounds in Excel!
|
||||
|
||||
Tegelijkertijd zie ik wat er mogelijk is met moderne AI-tooling. Ik gebruik het dagelijks. Maar om me heen zie ik collega's die sceptisch blijven. "Leuk voor prototypes, niet voor echte software." "AI-code is niet production-ready." "Eén uur coden met AI is drie uur debuggen."
|
||||
|
||||
Ik wilde het tegenovergestelde bewijzen. De scepsis snap ik, maar die is gebaseerd op hoe AI een jaar of twee geleden werkte. De techniek gaat sneller dan wij ons aanpassen. Dus: niet praten, maar bouwen. In het openbaar. Documenteren wat werkt en wat niet. En kijken hoe ver ik kom, als niet-programmeur.
|
||||
|
||||
Dus dat deed ik. Het resultaat na 4 weken:
|
||||
|
||||
118.000 regels code
|
||||
140+ documenten (waarvan 75 formele specs)
|
||||
7 complete modules
|
||||
3 AI-integraties
|
||||
95 GIT commits
|
||||
alles op een hobby budget (+/- €200)
|
||||
|
||||
De cijfers deelde ik gisteren. Vandaag de learnings. Want cijfers zijn leuk, maar wat heb ik er nou écht van geleerd?
|
||||
|
||||
|
||||
|
||||
Over AI als tool
|
||||
1. Met AI kun je volwaardige functionaliteit snel opleveren. Dat is de belofte, en die klopt. Maar hier komt de nuance die niemand je vertelt: AI verzint geen goede oplossing. Jij moet zélf bedenken waar de waarde zit.
|
||||
|
||||
2. Verwacht niet dat het eerste antwoord het juiste is. Nooit, eigenlijk. Ga door. Hak in stukjes. Voeg samen. Ontleed totdat je iets hebt waarmee je verder komt. AI is geen orakel. Het is een klant die niet precies weet wat hij wil. Je moet doorvragen. Concretiseren. Stel je een vage vraag, dan krijg je een vaag antwoord. Wordt je scherper, geef je voorbeelden, dan wordt de output beter.
|
||||
|
||||
3. Gebruik AI als sparringpartner, niet alleen als programmeur. Laat Claude een probleem analyseren vanuit het perspectief van 'lead developer', 'product owner' én 'eindgebruiker'. Dat geeft je drie invalshoeken die helpen om blinde vlekken te spotten. Of: simuleer een gesprek tussen consultant en klant om een pitch voor te bereiden. Of: "Wat zou een verpleegkundige hiervan vinden?" "Waar zit het risico voor de psychiater?" Het gaat om meerdere perspectieven. Daar zit minstens zoveel waarde als in de gegenereerde code.
|
||||
|
||||
Over mijzelf als bouwer
|
||||
4. Domeinkennis weegt zwaarder dan technische skills. AI kan code genereren, maar je moet wel snappen wat er staat en weten hoe software werkt. Zeker bij enterprise software zoals een EPD. AI is hier de brug. Wat AI niet kan: snappen waarom een verpleegkundige overdracht anders werkt dan een artsenbrief. Waarom een risicotaxatie op dát moment in het proces moet zitten. Waarom die ene checkbox er wel toe doet en die andere niet. Die 15 jaar GGZ-ervaring? Die waren relevanter dan mijn technische skills.
|
||||
|
||||
5. Je proces blijft gewoon je proces. PRD, Functioneel Ontwerp, Technisch Ontwerp, dat sla je niet over omdat je AI gebruikt. Integendeel. Hoe beter je documentatie, hoe beter de AI-output. "Garbage in, garbage out" is nog steeds waar. Alleen nu op een hoger abstractieniveau.
|
||||
|
||||
6. Cognitive offloading? Ik had het tegenovergestelde. Er wordt gewaarschuwd dat je lui wordt als je alles aan AI overlaat. Misschien, als je besluit om zelf niet meer na te denken. Maar ik had tijdens dit project juist cognitive overload, de productieve variant. Bouwen, demo's maken, content schrijven, contacten leggen. Alles tegelijk, in vier weken. AI maakt dat mogelijk. Niet door het denken over te nemen, maar door de executie te versnellen.
|
||||
|
||||
7. Met al die moderne tooling bouw ik nog steeds een vrij traditioneel systeem. De aanpak is innovatief. Het product? Eerlijk gezegd niet heel erg. Hetzelfde EPD-denken als de afgelopen 15 jaar. Dezelfde schermen. Dezelfde workflows. Dezelfde aannames. Dat was een ontnuchterende realisatie.
|
||||
|
||||
Over de zorg en organisaties
|
||||
8. We moeten meer experimenteren. Uit gesprekken hoor ik steeds hetzelfde verhaal: pilots die blijven steken op governance. Op beleid. Op regels. Op commissies die eerst moeten vergaderen. Allemaal relevant, daar is geen twijfel over. Maar ook allemaal redenen om níet te beginnen. In een experiment bepaal je zelf de grenzen. Bouw eerst. Leer. En pas dán aan. Probeer niet alle kaders en risico's vooraf te bedenken. De wereld verandert snel en wacht niet op ons 100% waterdichte plan.
|
||||
|
||||
9. De waarde zit niet in de AI, maar in de data en integratie. De AI zelf is het makkelijke stuk, dat is een API call en een goede prompt. De uitdaging zit in de rest. Specifiek voor de GGZ: waar somatische zorg veel objectieve datapunten heeft (labwaarden, vitals, scans) hebben we in de GGZ vooral ongestructureerde tekst. Behandelplannen. Decursus. Rapportages. Heteroanamneses. Observaties. Dát is waar de complexiteit zit. En eerlijk gezegd ook waar het interessant wordt.
|
||||
|
||||
10. De toekomst is niet een beter scherm, maar geen scherm. Ephemeral UI, vergankelijke interfaces die gegenereerd worden op het moment dat je ze nodig hebt. De agent doet de rest. Geen vaste menu's, geen eindeloze klikpaden. Gewoon: zeg wat je nodig hebt, en het verschijnt. Dat is niet wat ik gebouwd heb. Maar wel waar ik naartoe wil.
|
||||
|
||||
Wat nu?
|
||||
Dit is wat vier weken bouwen me geleerd heeft. Niet alleen over AI, maar over mijzelf als bouwer en over de zorg waar ik al 15 jaar in werk.
|
||||
|
||||
De volgende vraag ligt voor de hand: als ik met moderne tooling nog steeds traditioneel EPD-denken bouw, hoe ziet het EPD van de toekomst er dan wél uit? Want dat is niet wat ik gebouwd heb (nog niet).
|
||||
|
||||
256
docs/seo-audit-aanbevelingen.md
Normal file
256
docs/seo-audit-aanbevelingen.md
Normal file
@@ -0,0 +1,256 @@
|
||||
# SEO Audit & Aanbevelingen - AI Speedrun
|
||||
|
||||
**Datum:** 2025-01-27
|
||||
**Auditor:** SEO Specialist
|
||||
**Website:** aispeedrun.vercel.app
|
||||
|
||||
## Executive Summary
|
||||
|
||||
De website heeft een solide basis voor SEO met goede metadata, sitemap en robots.txt. Er zijn echter belangrijke verbeteringen mogelijk op het gebied van structured data, Open Graph images, en content optimalisatie.
|
||||
|
||||
---
|
||||
|
||||
## ✅ Wat Goed Is
|
||||
|
||||
1. **Basis Metadata**: Goede title templates en descriptions in root layout
|
||||
2. **Robots.txt**: Correct geconfigureerd met sitemap referentie
|
||||
3. **Sitemap**: Dynamisch gegenereerd met documentatie releases
|
||||
4. **Structured Data**: Basis Organization en WebSite schema aanwezig
|
||||
5. **Open Graph**: Basis OG tags aanwezig op homepage
|
||||
6. **Canonical URLs**: Aanwezig op homepage
|
||||
7. **Alt Tags**: Aanwezig op meeste images
|
||||
8. **Semantic HTML**: Goed gebruik van article, header, nav tags
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Kritieke Verbeteringen (Hoge Prioriteit)
|
||||
|
||||
### 1. Blog Posts Ontbreken in Sitemap
|
||||
**Probleem:** Blog posts worden niet toegevoegd aan de sitemap, waardoor ze mogelijk niet geïndexeerd worden.
|
||||
|
||||
**Impact:** Hoog - Blog content is belangrijk voor SEO
|
||||
|
||||
**Oplossing:** Update `app/sitemap.ts` om alle blog posts toe te voegen
|
||||
|
||||
### 2. Blog Posts Missen Open Graph Images
|
||||
**Probleem:** Blog posts hebben geen OG images, wat de social sharing vermindert.
|
||||
|
||||
**Impact:** Hoog - Slechte social previews = minder clicks
|
||||
|
||||
**Oplossing:** Voeg OG image support toe aan blog post metadata
|
||||
|
||||
### 3. Blog Posts Missen Canonical URLs
|
||||
**Probleem:** Geen canonical URLs op individuele blog posts.
|
||||
|
||||
**Impact:** Medium - Kan duplicate content issues veroorzaken
|
||||
|
||||
**Oplossing:** Voeg canonical URL toe aan blog post metadata
|
||||
|
||||
### 4. Blog Posts Missen Article Structured Data
|
||||
**Probleem:** Geen Article schema.org markup op blog posts.
|
||||
|
||||
**Probleem:** Hoog - Gemiste kans voor rich snippets in Google
|
||||
|
||||
**Oplossing:** Voeg Article schema toe aan blog post pages
|
||||
|
||||
### 5. Blog Posts Missen Author Metadata
|
||||
**Probleem:** Geen author informatie in blog post metadata.
|
||||
|
||||
**Impact:** Medium - Minder context voor zoekmachines
|
||||
|
||||
**Oplossing:** Voeg author metadata toe aan blog posts
|
||||
|
||||
---
|
||||
|
||||
## 🟡 Belangrijke Verbeteringen (Medium Prioriteit)
|
||||
|
||||
### 6. Breadcrumbs Structured Data
|
||||
**Probleem:** Geen breadcrumb navigation met structured data.
|
||||
|
||||
**Impact:** Medium - Kan rich snippets opleveren in Google
|
||||
|
||||
**Oplossing:** Implementeer breadcrumb component met BreadcrumbList schema
|
||||
|
||||
### 7. Blog Series Metadata
|
||||
**Probleem:** Blog series pagina's missen uitgebreide metadata.
|
||||
|
||||
**Impact:** Medium - Series pagina's kunnen beter ranken
|
||||
|
||||
**Oplossing:** Voeg uitgebreide metadata toe aan series pages
|
||||
|
||||
### 8. Documentatie Metadata
|
||||
**Probleem:** Documentatie pagina's missen mogelijk specifieke metadata.
|
||||
|
||||
**Impact:** Medium - Documentatie is waardevolle content
|
||||
|
||||
**Oplossing:** Controleer en verbeter documentatie metadata
|
||||
|
||||
### 9. Image Optimization
|
||||
**Probleem:** Mogelijk niet alle images hebben alt tags of zijn geoptimaliseerd.
|
||||
|
||||
**Impact:** Medium - Images zijn belangrijk voor SEO
|
||||
|
||||
**Oplossing:** Audit alle images en voeg alt tags toe waar nodig
|
||||
|
||||
### 10. Internal Linking
|
||||
**Probleem:** Mogelijk onvoldoende interne links tussen gerelateerde content.
|
||||
|
||||
**Impact:** Medium - Helpt met crawlability en ranking
|
||||
|
||||
**Oplossing:** Voeg gerelateerde posts/artikelen secties toe
|
||||
|
||||
---
|
||||
|
||||
## 🟢 Nice-to-Have Verbeteringen (Lage Prioriteit)
|
||||
|
||||
### 11. FAQ Structured Data
|
||||
**Probleem:** Geen FAQ schema waar relevant (bijv. op homepage of contact pagina).
|
||||
|
||||
**Impact:** Laag - Kan rich snippets opleveren
|
||||
|
||||
**Oplossing:** Voeg FAQ schema toe waar relevant
|
||||
|
||||
### 12. Review/Rating Schema
|
||||
**Probleem:** Geen review schema voor testimonials (als die er zijn).
|
||||
|
||||
**Impact:** Laag - Kan rich snippets opleveren
|
||||
|
||||
**Oplossing:** Voeg Review schema toe indien relevant
|
||||
|
||||
### 13. Video Schema
|
||||
**Probleem:** Als er video content is, ontbreekt VideoObject schema.
|
||||
|
||||
**Impact:** Laag - Alleen relevant als er video's zijn
|
||||
|
||||
**Oplossing:** Voeg VideoObject schema toe indien van toepassing
|
||||
|
||||
### 14. Performance Metrics
|
||||
**Probleem:** Geen specifieke performance optimalisaties voor Core Web Vitals.
|
||||
|
||||
**Impact:** Laag - Performance is ranking factor
|
||||
|
||||
**Oplossing:** Monitor en optimaliseer Core Web Vitals
|
||||
|
||||
### 15. hreflang Tags
|
||||
**Probleem:** Geen hreflang tags (maar waarschijnlijk niet nodig als alleen NL).
|
||||
|
||||
**Impact:** Laag - Alleen nodig bij meertaligheid
|
||||
|
||||
**Oplossing:** Voeg toe als je meerdere talen toevoegt
|
||||
|
||||
---
|
||||
|
||||
## 📋 Implementatie Prioriteiten
|
||||
|
||||
### Fase 1 (Direct - Deze Week)
|
||||
1. ✅ Blog posts toevoegen aan sitemap
|
||||
2. ✅ Open Graph images voor blog posts
|
||||
3. ✅ Canonical URLs voor blog posts
|
||||
4. ✅ Article structured data voor blog posts
|
||||
5. ✅ Author metadata voor blog posts
|
||||
|
||||
### Fase 2 (Binnen 2 Weken)
|
||||
6. ✅ Breadcrumbs structured data
|
||||
7. ✅ Blog series metadata verbeteren
|
||||
8. ✅ Image alt tags audit
|
||||
9. ✅ Internal linking verbeteren
|
||||
|
||||
### Fase 3 (Binnen Maand)
|
||||
10. ✅ FAQ schema waar relevant
|
||||
11. ✅ Performance optimalisaties
|
||||
12. ✅ Content optimalisatie (keywords, headings)
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Technische Details per Verbetering
|
||||
|
||||
### 1. Blog Posts in Sitemap
|
||||
```typescript
|
||||
// app/sitemap.ts
|
||||
import { getAllPosts } from '@/lib/mdx/blog'
|
||||
|
||||
// In sitemap functie:
|
||||
const posts = await getAllPosts()
|
||||
const postUrls = posts.map((post) => ({
|
||||
url: `${baseUrl}/blog/serie/${post.seriesId}/${post.slug}`,
|
||||
lastModified: new Date(post.frontmatter.date),
|
||||
changeFrequency: 'monthly' as const,
|
||||
priority: 0.7,
|
||||
}))
|
||||
```
|
||||
|
||||
### 2. Open Graph Images voor Blog Posts
|
||||
```typescript
|
||||
// app/(marketing)/blog/serie/[serieId]/[slug]/page.tsx
|
||||
// In generateMetadata:
|
||||
openGraph: {
|
||||
images: [
|
||||
{
|
||||
url: post.frontmatter.image || `${siteUrl}/og-blog-default.png`,
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: post.frontmatter.title,
|
||||
},
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Article Structured Data
|
||||
```json
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"headline": "Post Title",
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "Colin van der Heijden"
|
||||
},
|
||||
"datePublished": "2024-11-19",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "AI Speedrun"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Breadcrumbs
|
||||
```json
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BreadcrumbList",
|
||||
"itemListElement": [
|
||||
{
|
||||
"@type": "ListItem",
|
||||
"position": 1,
|
||||
"name": "Home",
|
||||
"item": "https://aispeedrun.vercel.app"
|
||||
},
|
||||
{
|
||||
"@type": "ListItem",
|
||||
"position": 2,
|
||||
"name": "Blog",
|
||||
"item": "https://aispeedrun.vercel.app/blog"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Monitoring & Validatie
|
||||
|
||||
Na implementatie, valideer met:
|
||||
- Google Search Console
|
||||
- Google Rich Results Test
|
||||
- Facebook Sharing Debugger
|
||||
- Twitter Card Validator
|
||||
- Schema.org Validator
|
||||
|
||||
---
|
||||
|
||||
## 📝 Notities
|
||||
|
||||
- Website is primair in het Nederlands - hreflang niet nodig tenzij meertaligheid wordt toegevoegd
|
||||
- Blog content is sterk - focus op technische SEO om dit te ondersteunen
|
||||
- Build-in-public aanpak is uniek - kan gebruikt worden voor content marketing SEO
|
||||
|
||||
@@ -31,6 +31,7 @@ export interface BlogFrontmatter {
|
||||
published?: boolean
|
||||
seriesOrder: number
|
||||
tags?: string[]
|
||||
image?: string // Optional OG image path (relative to /public, e.g. "/images/blog/my-post.png")
|
||||
}
|
||||
|
||||
export interface BlogPost {
|
||||
|
||||
@@ -50,6 +50,7 @@ export async function middleware(request: NextRequest) {
|
||||
'/update-password',
|
||||
'/auth/callback',
|
||||
'/contact',
|
||||
'/blog',
|
||||
'/documentatie',
|
||||
'/api/leads',
|
||||
'/robots.txt',
|
||||
|
||||
Reference in New Issue
Block a user