Blog
Notes from the workshop
We write about what we ship, what we learned, and where AI actually helps. Real projects, real numbers.
AI agentsAnthropic ID verification: splitting agents in 16 days
Sixteen days to the Anthropic ID-verification deadline, four agents that touch real systems, ten that don't, and a stack of signed client DPAs we will not reopen.
RAGRAG freshness gates: a withdrawn arrest in a legal brief
At 16:47 on a Thursday, a Maastricht paralegal spotted a withdrawn Hoge Raad arrest in a 14-page conclusie draft. The bulk feed had dropped one field.
Email automationEmail agent for a Leiden publisher: ISBN-conflict triage
A 21-person Leiden publisher gets 1,180 author emails a week. Half land in Klopotek, half in an Exchange archive nobody trusts. Here is what we built.
IntegrationsDutch HR API quirks: 16 silent fails in AFAS, Nmbrs, Loket
A 24-person Apeldoorn detacheerder onboarding-agent surfaced sixteen REST quirks across AFAS Profit, Nmbrs and Loket.nl. Half silently dropped fields the auditors care about.
Databasespgvector HNSW reindex: an 8-hour Black Friday outage
A Rotterdam logistics SaaS reindexed pgvector mid-Black-Friday and watched their RAG agent go dark for 8 hours. Here is the timeline and the procedure we now ship.
SEOJoomla to Astro migration: keeping 380k organic sessions
A 22-person tour operator in Nijmegen had 380,000 monthly organic sessions sitting on Joomla 3. Here is the playbook we used to move it without bleeding traffic.
SecurityAVG-retrofit for AI agents: the 03:00 audit checklist
It's 03:14 on a Tuesday. A CTO outside Eindhoven gets an email from the Autoriteit Persoonsgegevens. Subject: artikel 30, deadline 72 hours. Three agents in scope.
PHPPHP 5.6 to Strapi + Astro: a seven-week parallel cutover
The redactie-CMS was 16 years old, PHP 5.6 had been dead for years, and the NDP-feed to 22 dagbladen could not stop for a weekend. Here is the seven-week cutover.
Mobile appsRebuilding a field-service app: Cordova to Expo + Supabase
A klimaattechniek company in Apeldoorn ran 38 monteurs on a 9-year-old Cordova app held together with 41 plugin patches. We rebuilt it on Expo and Supabase.
Data scrapingBol.com fair-use ban: how 240 fetches torched our prijsmonitor
Tuesday, 09:14. The prijsmonitor for an Almere furniture retailer hit a Bol.com fair-use ban after 240 concurrent product-page fetches. Here is what broke and what we run now.
Voice agentsVoice agents in a notariskantoor: 920 weekly calls, one queue
A seven-partner Utrecht notariskantoor used to lose 40 minutes per partner per day on intake calls. The voice agent that replaced it handles 920 weekly aanvragen.
AI agentsAgentic reliability: twelve gaps that hit production first
It's Monday morning at a Dutch logistics firm and the new invoice-chase agent has sent 47 duplicate reminders over the weekend. Same gap as every rollout — and eleven more behind it.
ToolingCloudflare temp accounts for scrapers: 19 quirks ranked
Nineteen Cloudflare temporary-account quirks we hit running a 4,800-page-per-week price-monitor over Magento 2.4. Ranked by how silently they break your data.
AI agentsAnthropic's verified tier: a 14-agent migration playbook
Sixteen working days, fourteen production agents, three of them computer-use. The runbook we used to clear the 8 July deadline without downtime.
Web designOKLCH dark mode for a night-shift dashboard: a case study
A six-person Amsterdam SaaS studio asked us to fix the glare problem. Three out of four enterprise users were on night shifts and the dashboard was still painted for an office at noon.
Process automationCMR + ADR automation: a 45-second escalation playbook
Tuesday 06:47: 614 unread emails, one buried ADR class 3 leak, and an ILT clock already ticking. Here is the agent we built so it never happens again.
JoomlaJoomla 3.4 to Directus and Nuxt: a six-week shadow cutover
A Tilburg woningcorporatie's IT-coordinator has Joomla 3.4 open in one tab, php.net's EOL page in another, and an auditor's email in a third. The question is two words long.
Voice agentsVoice agents at a Dutch dental chain: LiveKit, Vapi, DIY
Friday 18:47, the NZa just changed a tariff, forty patients are in the queue. The cost answer and the audit answer were different stacks. The audit won.
Chat agentsChat agents in accounting: a Zwolle firm's 60-second SLA
It is 17:42 on a Tuesday in Zwolle. A 27-person accountantskantoor has eighteen minutes before the SBR-loket closes. The chat agent has 60 seconds to park the awkward ones.
E-commerceReturns-agent unit economics: a field-guide to 13 misreads
A Returnly extensie quoted at €58k a year. A Sonnet plus PostNL cache build at a third. The thirteen places your per-order margin spreadsheet is quietly lying to you.
OperationsStorings-intake routing: scoring voice agent, desk, hybrid
A CV-ketel down in Voorburg at 06:47 on a Sunday. Three storings-intake models on the table for a sub-€8M installatiebedrijf — here is how we score them.
AutomationHybrid CRM audit: the checklist before a sales agent
Three numbers decide whether your hybrid CRM can host a sales agent: duplicate drift on the top 25 pipelines, label coverage on the top 10 stages, and one 36-hour test.
WordPressWordPress to Hydrogen migration: the ACF repeater trap
A Venlo tyre wholesaler's dealer portal was supposed to go live on day six. We shipped on day eighteen. Here is the ACF Repeater field that ate the gap.
Email automationEmail agent postmortem: 184 condolences, one stale CRM id
Monday 09:14. A Groningen funeral firm's email agent queued 184 condolence drafts, each carrying the wrong bereaved name. Here's what broke and how we caught it.
IntegrationsMicrosoft Graph quirks: 17 traps in an Outlook agent rollout
We shipped an inbox-triage agent into a 22-seat Outlook tenant in Hengelo and hit seventeen Graph quirks in three weeks. Here is the ranked list, worst first.
RAGRAG for bouwbesluit: a citation-gated agent playbook
A Deventer architectenbureau fields 1,240 bouwbesluit-vragen a week. Here is the RAG playbook that answers them with a citation on every line.
Case studyOff the tablets: a worker-side RAG for 11 childcare sites
The directeur put the printed Norwegian OK20 letter on her desk on a Tuesday in February. By Friday, the toddler tablets were off the shelves in all eleven vestigingen.
RAGRAG for field monteurs: the Roermond citation playbook
It is 11 a.m. in Venlo. A monteur stands at the foot of a 22-tonne overhead hijskraan, fault code E-407 on her tablet, nine minutes before the shift changes.
Chat agentsGGZ chat agent case study: 30 seconds to C-SSRS escalation
A 22-person Utrecht GGZ-praktijk needed to triage 1,720 weekly chat questions across a 13-year-old EPD and a homegrown ROM-archief without missing a C-SSRS ≥4 signal. Here is what we built.
OperationsAI voice picking on Zebra TC22: scoring three setups
A planner at a Dutch 3PL has three quotes on her desk: a Claude voice agent on Zebra TC22, a teamleider rotation, and a hybrid. Here is how we score them.
JoomlaJoomla to Shopware migration: how a K2 field broke 9,200 SKUs
Day seventeen of a Joomla-to-Shopware freeze, a Zaltbommel furniture maker is staring at a product page with 412 fabric variants. None of them buy anything. This is why.
SaaSPer-seat AI agent margins: 16 ways founders miscount
Two quotes on a kitchen table at midnight: Gainsight at €280k, an AI agent at €72k. Neither number is right. Here is why, and which ones you can fix tonight.
AutomationOrder-agent workflows: Temporal, Inngest, or DIY outbox
Friday 21:47. PostNL pushes a tariff change. By 22:10 our client's order-agent dead-letter queue holds 312 messages. The workflow engine choice now matters.
AI agentsLangGraph reliability audit: the checklist before a retrofit
At 03:30 a LangSmith region flips and your invoice-chase agent goes silent. We audit retry drift, prompt pinning, and failover before quoting.
WordPressWordPress 5.2 to Payload: a four-week shadow-traffic cutover
An 11-year-old WordPress 5.2 portal, 18,700 CBR dossiers, 14 instructors on the RDW register, and four weeks. Here is the shadow-traffic playbook we ran.
IntegrationsPeppol UBL quirks: 18 silent fails from a real rollout
A 23-person Arnhem installer's credit note returned 200 OK from the Access Point on a Friday, then vanished in the buyer's ERP. Here are the eighteen quirks we caught next.
Voice agentsVoice agent for binnenvaart: a 35-second escalation playbook
A skipper called in at 03:12 with a propane vent alarm. The voice agent had 35 seconds to wake a captain before the IVS90 30-minute clock started ticking.
Process automationIdempotency in healthcare webhooks: 312 routes double-booked
On Sunday 26 October 2025, somewhere between 02:00 and 03:00 local time, a Nedap Ons webhook quietly re-fired. By Wednesday morning, 312 nursing routes had been booked twice.
Case studyElementary school AI after OK20: a Leiden bijles rebuild
A Leiden school umbrella pulled its bijles agent off four campuses the week Norway's OK20 decision landed. We rebuilt it as a docent-in-the-loop RAG. Here is what changed.
RAGRAG under AFM supervision: a Dutch insurance broker playbook
A schade-expert in Gouda picks up at 14:47. A client's freight container is in the IJsselmeer, the policy runs 84 pages, and he has six minutes to find the clause.
OperationsIntake triage at a zorgaanbieder: agent, human, or hybrid
A sub-€9M zorgaanbieder asked us how to triage 1,640 monthly aanmeldingen without breaking the bank or the Wkkgz. Here is the three-column score we use.
Email automationEmail agent for a letselschade firm: a 1,180/week case study
On a Tuesday morning in Almelo, the head of intake stares at 287 unread medisch-adviseur emails. Half are flagged urgent. None of them actually are. We built her an agent.
MagentoMagento 1.9 to Medusa: an eight-week B2B portal cutover
A 13-year-old Magento 1.9 portal, 28,400 tiered prices per dealer, an EDI feed into 140 builders, and eight weeks to land it on Medusa without losing a single order.
StrategyVerpleegkundige-rapportage ROI: fourteen ranked mistakes
A 138-bewoner zorginstelling signs a three-year Nuance deal Friday. Six months later the per-bewoner ROI is half the deck's number. Here's why.
AI agentsVector DBs for patent search: Pinecone, Weaviate, pgvector
Sunday 22:14 in Eindhoven. The re-embedding of 1.4M patent claims stalled at 38%, the runbook author is in Vietnam, and Monday's prior-art queue starts in nine hours.
DrupalDrupal to Sanity migration: the Field Collection trap
Day eight of a Drupal 7 to Sanity migration. The GROQ queries returned clean strings where 3,600 RTRS-audited pesticide doses used to live as nested entity references.
RAGAzure OpenAI RAG audit: the checklist before we quote
Before we quote a RAG retrofit on Azure, we run a 14-point audit on the tenant. Index drift, content-safety coverage, and a 04:00 failover test.
IntegrationsDutch accounting APIs: 16 quirks that broke our boekhoud-agent
Sixteen Exact Online, AFAS Profit, and Twinfield REST quirks from a four-month boekhoud-agent rollout, ranked by which silently corrupt the trial balance.