Available for new work · Landgraaf, NL

Systems that connect the software an organisation already runs.

I build the wiring between business systems, so information moves without being retyped — and can still be traced afterwards.

  • Based Landgraaf, Limburg
  • Registered KVK 42047901
  • Hosting Self-hosted or EU
  • Engagement Independent practice

Most organisations already own the tools they need.

A practice management system, an accounting package, a document generator, a registry, a mail server. What is missing is the wiring between them — so information gets carried across by hand, and the carrying is where the hours and the mistakes go.

The work is not replacing any of it. It is connecting it.

Process automation

Systems that were never designed to talk to each other: practice management, accounting, document generation, e-signing, public registries. One workflow, end to end, without re-entry.

The hard part

Most of the effort goes into the edges: a lookup returns nothing, a document is rejected, a counterparty answers three weeks late.

Separate systems converging into one workflow practice accounting documents workflow

Data orchestration

Public and third-party APIs — mapping data, company registers, published web content — aggregated into structured output an application can depend on.

The hard part

The first request is never the problem. Rate limits, schemas that change without notice and sources that go quiet all have to be absorbed before anything downstream notices.

Sources normalised into a stable schema sources normalise schema

Self-hosted infrastructure

Where data residency or audit obligations rule out handing records to a third party, I deploy on private servers inside the EU.

The hard part

Including the language model, on that same infrastructure rather than a hosted API — and logs kept in a form that can still be produced years later.

Records, model and logs on one EU server records EU server model logs

Three examples of delivered systems.

Reference implementation

Compliance intake workflow — legal sector

Client intake built against Dutch Wwft obligations.

  • Wwft
  • Sanctions & PEP
  • Self-hosted LLM
  • Audit trail
Compliance intake workflow, input to output companyidentifier partydetails registerverification sanctions andPEP screening country riskclassification documentgeneration riskassessment engagementletter draft audit trail
  1. ProblemChecks run by hand across a register, a sanctions list and a risk matrix.

    SolutionOne workflow verifies, screens for sanctions and PEP, and classifies country risk.

  2. ProblemThe call still needs human judgement.

    SolutionIt drafts the assessment and the letter. It proposes; it does not decide.

  3. ProblemThe reasoning has to be reconstructable years later.

    SolutionEvery lookup and decision is logged. Self-hosted, EU model, records stay put.

Built for Netherstory

Multi-source place resolution

One physical place, resolved across mapping, geographic and encyclopedic sources.

  • Entity resolution
  • Geospatial
  • Deduplication
  • Identity registry
Three sources merged through four passes into one identity registry mapping geographic encyclopedic distance exactname semanticadjudication orphanattachment identityregistry
  1. ProblemOne building, three sources, three names, pins 40 to 100 metres apart.

    SolutionFour merge passes. All lean the same way: not convinced means keep them separate.

  2. ProblemFuzzy matching quietly collapses places that are genuinely different.

    SolutionNames merge only on exact normalised equality. Two libraries stay two libraries.

  3. ProblemThe source data looked rich and wasn’t.

    SolutionAn audit first: 2,059 buildings, 7 names, no heritage tags. Coverage was a bulk import.

Built for Netherstory

Adjudicated moderation pipeline

A review queue one person operates, where some decisions carry legal weight.

  • Human-in-the-loop
  • Content moderation
  • DSA Art 16
  • Reward adjudication
Model proposes, a human confirms, and only then is anything applied contribution modelproposal pendingtable humandecision appliedto live rejection statement ofreasons
  1. ProblemToo large to review by hand. Too consequential to leave to a model.

    SolutionMachine proposes, human confirms, machine applies. Proposals never touch what is live.

  2. Problem“Approve” is ambiguous. Agreement, or a decision of your own?

    SolutionEach verdict asserts one fact. Model verdict and human decision are stored apart.

  3. ProblemDeclining a contribution owes the person a reason.

    SolutionThe API refuses to record a rejection without a written statement of reasons.

Four stages, in order.

You know the architecture and what it costs to build and to run, before any code exists.

  1. 01

    Scope

    We walk the process as it runs today and separate what is mechanical from what needs a person. Not everything should be automated. The scope is whatever survives that conversation.

  2. 02

    Architecture and estimate

    The proposed system, the components it touches, and what it costs to build and to run each month — written down before any code exists. A reference point, not an opening position.

  3. 03

    Build and deploy

    Built against your real data and your real exceptions, not a clean sample. Deployed to your own instance, with the credentials issued to you rather than held on your behalf.

  4. 04

    Handover and support

    Documentation covering how the system works, how to change it, and how to run it without me. Support continues afterwards if you want it.

Three commitments.

  • Data stays with the client

    Self-hosted where the requirement calls for it, EU infrastructure otherwise. Records are not routed through services the task does not require.

    In practice

    In the moderation lanes the boundary is enforced by removing the destination, not filtering the payload. There is no second provider to cross to, and a test asserts it.

  • No vendor lock-in

    Open, portable tooling. If the arrangement ends you keep the system, the credentials and the documentation — and it carries on running.

  • Efficient by design

    Model size, hosting and storage chosen against what the work demands. Over-provisioning is not a one-off decision — it is a bill that arrives every month.

    In practice

    Usually the same decision twice. Moving record generation behind the human confirmation cut cost and cut data collected, in one change.

Tell me which process you want to change.

A short description of it beats a general enquiry. Email is the reliable route.

Registered details Netherlands
Trade name
KVOma
KVK
42047901
BTW-id
NL005454890B91
Telephone
+31 6 8531 3776
Address
Banebergpassage 2
6371 HW Landgraaf
Netherlands