DEV Community

Manuel Felipe Arias Pineda
Manuel Felipe Arias Pineda

Posted on

๐Ÿ‡ฌ๐Ÿ‡ง United Kingdom devs: Add National Insurance Number to the AI identity standard โ€” Soulprint open source (30 min PR)

Every day, AI agents make decisions on our behalf โ€” buying, sending emails, signing documents โ€” and nobody verifies there's a real human behind them.

Soulprint solves this with Zero-Knowledge Proofs: 100% on-device, open source (MIT), free to run. soulprint.digital

๐Ÿ‡ฌ๐Ÿ‡ง United Kingdom's National Insurance Number is not in Soulprint yet. You can add it in ~30 minutes with one PR.


What Soulprint does

npx soulprint verify-me       # scan ID + face match โ€” all local
# โ†’ SPT token (score 0-100)

# AI agent includes token in every call
# X-Soulprint: eyJ... (score: 84)

# API verifies in 3 lines:
import { requireSoulprint } from "soulprint-mcp";
server.tool("premium", requireSoulprint({ minScore: 80 }), handler);
Enter fullscreen mode Exit fullscreen mode

ZK proof: Circom 2.1.8 ยท Groth16 ยท 844 constraints ยท 564ms prove ยท 25ms verify.


๐Ÿ‡ฌ๐Ÿ‡ง United Kingdom: National Insurance Number

National Insurance: 2 letters + 6 digits + 1 letter (e.g. QQ123456C). Passport: 9 alphanumeric chars.


The code โ€” fill in the blanks and open a PR

// packages/verify-local/src/document/countries/GB.ts
import { CountryVerifier, DocumentResult, NumberValidation } from "../verifier.interface";

const GB: CountryVerifier = {
  countryCode:   "GB",
  countryName:   "United Kingdom",
  documentTypes: ["nino", "passport"],

  parse(ocrText: string): DocumentResult {
    // National Insurance Number format: NINO: XX999999X (9 chars)
    const doc_number = ocrText.match(/([A-Z]{2}\d{6}[A-Z])/)?.[1] ?? "";
    return { valid: !!doc_number, doc_number, country: "GB" };
  },

  validate(docNumber: string): NumberValidation {
    // must not start with D,F,I,Q,U,V; second letter not D,F,I,O,Q,U,V
    return { valid: /^[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z]\d{6}[A-D]$/.test(docNumber) };
  },
};

export default GB;
Enter fullscreen mode Exit fullscreen mode

Then add one line in registry.ts:

import GB from "./countries/GB";
// add to registry map: "GB": GB,
Enter fullscreen mode Exit fullscreen mode

Open a PR โ†’ your country joins the global AI identity standard. ๐ŸŒ


Why contribute?

  • United Kingdom joins the AI age โ€” local developers can verify their AI agents
  • Permanent git credit โ€” you're in the history forever
  • Decentralized identity โ€” no Big Tech as gatekeeper
  • Fast โ€” 30 min partial, 2-3h full with MRZ

Resources

One PR. One country. The future of AI identity is open source.

Top comments (0)