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
🇵🇦 Panamá's Cédula Personal 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);
ZK proof: Circom 2.1.8 · Groth16 · 844 constraints · 564ms prove · 25ms verify.
🇵🇦 Panamá: Cédula Personal
Cédula: N-NNN-NNNN (provincia - tomo - asiento).
The code — fill in the blanks and open a PR
// packages/verify-local/src/document/countries/PA.ts
import { CountryVerifier, DocumentResult, NumberValidation } from "../verifier.interface";
const PA: CountryVerifier = {
countryCode: "PA",
countryName: "Panamá",
documentTypes: ["cedula"],
parse(ocrText: string): DocumentResult {
// Cédula Personal format: N-NNN-NNNN
const doc_number = ocrText.match(/(\d{1,2}-\d{3,4}-\d{4,5})/)?.[1] ?? "";
return { valid: !!doc_number, doc_number, country: "PA" };
},
validate(docNumber: string): NumberValidation {
// province-tome-seat format
return { valid: /^\d{1,2}-\d{3,4}-\d{4,5}$/.test(docNumber) };
},
};
export default PA;
Then add one line in registry.ts:
import PA from "./countries/PA";
// add to registry map: "PA": PA,
Open a PR → your country joins the global AI identity standard. 🌍
Why contribute?
- Panamá 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)