Tools: 🇬🇹 Guatemala devs: Add DPI (Documento Personal de Identificación) to the AI identity standard — Soulprint open source (30 min PR

Tools: 🇬🇹 Guatemala devs: Add DPI (Documento Personal de Identificación) to the AI identity standard — Soulprint open source (30 min PR

Source: Dev.to

What Soulprint does ## 🇬🇹 Guatemala: DPI (Documento Personal de Identificación) ## The code — fill in the blanks and open a PR ## Why contribute? ## Resources 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 🇬🇹 Guatemala's DPI (Documento Personal de Identificación) is not in Soulprint yet. You can add it in ~30 minutes with one PR. ZK proof: Circom 2.1.8 · Groth16 · 844 constraints · 564ms prove · 25ms verify. DPI: 13 dígitos (CUI — Código Único de Identificación). Then add one line in registry.ts: Open a PR → your country joins the global AI identity standard. 🌍 One PR. One country. The future of AI identity is open source. Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse COMMAND_BLOCK: 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 COMMAND_BLOCK: 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); COMMAND_BLOCK: 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); CODE_BLOCK: // packages/verify-local/src/document/countries/GT.ts import { CountryVerifier, DocumentResult, NumberValidation } from "../verifier.interface"; const GT: CountryVerifier = { countryCode: "GT", countryName: "Guatemala", documentTypes: ["dpi"], parse(ocrText: string): DocumentResult { // DPI (Documento Personal de Identificación) format: 13 digits CUI const doc_number = ocrText.match(/(\d{13})/)?.[1] ?? ""; return { valid: !!doc_number, doc_number, country: "GT" }; }, validate(docNumber: string): NumberValidation { // exactly 13 digits return { valid: /^\d{13}$/.test(docNumber) }; }, }; export default GT; Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: // packages/verify-local/src/document/countries/GT.ts import { CountryVerifier, DocumentResult, NumberValidation } from "../verifier.interface"; const GT: CountryVerifier = { countryCode: "GT", countryName: "Guatemala", documentTypes: ["dpi"], parse(ocrText: string): DocumentResult { // DPI (Documento Personal de Identificación) format: 13 digits CUI const doc_number = ocrText.match(/(\d{13})/)?.[1] ?? ""; return { valid: !!doc_number, doc_number, country: "GT" }; }, validate(docNumber: string): NumberValidation { // exactly 13 digits return { valid: /^\d{13}$/.test(docNumber) }; }, }; export default GT; CODE_BLOCK: // packages/verify-local/src/document/countries/GT.ts import { CountryVerifier, DocumentResult, NumberValidation } from "../verifier.interface"; const GT: CountryVerifier = { countryCode: "GT", countryName: "Guatemala", documentTypes: ["dpi"], parse(ocrText: string): DocumentResult { // DPI (Documento Personal de Identificación) format: 13 digits CUI const doc_number = ocrText.match(/(\d{13})/)?.[1] ?? ""; return { valid: !!doc_number, doc_number, country: "GT" }; }, validate(docNumber: string): NumberValidation { // exactly 13 digits return { valid: /^\d{13}$/.test(docNumber) }; }, }; export default GT; CODE_BLOCK: import GT from "./countries/GT"; // add to registry map: "GT": GT, Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: import GT from "./countries/GT"; // add to registry map: "GT": GT, CODE_BLOCK: import GT from "./countries/GT"; // add to registry map: "GT": GT, - Guatemala 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 - 🌀 https://soulprint.digital - 💻 GitHub — fork here - 📖 Contributing guide