Skip to main content

On This Page

Scaling AI Identity: Adding Dutch BSN Support to Soulprint's ZK Standard

2 min read
Share

These articles are AI-generated summaries. Please check the original sources for full details.

Nederland devs: Add BSN (Burgerservicenummer) to the AI identity standard — Soulprint open source (30 min PR)

Soulprint is an open-source identity standard designed to verify the human origin behind AI agent actions using Zero-Knowledge Proofs. The system utilizes Circom 2.1.8 and Groth16 to achieve 564ms prove times and 25ms verification on-device.

Why This Matters

Current AI agent architectures often lack human-in-the-loop verification, allowing agents to execute financial transactions and sign documents without identity proof. While centralized gatekeepers exist, Soulprint offers a decentralized alternative that runs 100% on-device using MIT-licensed code, preventing Big Tech from becoming the sole arbiter of digital identity. This technical reality addresses the scaling risk of autonomous agents by providing a cryptographic link to human operators without compromising privacy through ZK proofs.

Key Insights

  • Soulprint uses Circom 2.1.8 and Groth16 to generate proofs with only 844 constraints (2026).
  • On-device performance reaches 564ms for proving and 25ms for verification (Soulprint, 2026).
  • The Dutch BSN validation uses a 11-proef algorithm, where a weighted sum of 9 digits must be divisible by 11.
  • Integration of new national IDs like the BSN requires a 30-minute contribution to the open-source registry (Soulprint, 2026).
  • AI agents can include identity scores (0-100) in HTTP headers using the X-Soulprint tag for server-side tool gatekeeping.

Working Examples

API verification of AI identity score using soulprint-mcp.

import { requireSoulprint } from "soulprint-mcp";
server.tool("premium", requireSoulprint({ minScore: 80 }), handler);

Implementation of the Dutch BSN verifier for the Soulprint registry.

// packages/verify-local/src/document/countries/NL.ts
import { CountryVerifier, DocumentResult, NumberValidation } from "../verifier.interface";
const NL: CountryVerifier = {
countryCode: "NL",
countryName: "Nederland",
documentTypes: ["bsn", "paspoort"],
parse(ocrText: string): DocumentResult {
const doc_number = ocrText.match(/(\d{9})/)?.[1] ?? "";
return { valid: !!doc_number, doc_number, country: "NL" };
},
validate(docNumber: string): NumberValidation {
return { valid: validateBSN(docNumber) };
},
};
export default NL;

Practical Applications

  • Use case: AI agents protecting premium API tools by requiring a minimum Soulprint score (e.g., minScore: 80) via requireSoulprint middleware.
  • Pitfall: Failing to implement the mod-11 check for BSN, which results in invalidating legitimate Dutch identity documents during OCR parsing.

References:

Continue reading

Next article

RAG vs. Context Stuffing: Benchmarking Efficiency and Reliability in Large Context Windows

Related Content