⚡ Verificación de identidad con IA para LATAM

Confirmá que es quien dice ser, en minutos

Captura móvil del documento y selfie · OCR y autenticidad con Gemini · face-match · decisión automática por umbrales configurables. De punta a punta con evidencias firmadas.

Ver la arquitectura →Cómo funciona
7
criterios de aceptación configurables
0.95
confianza OCR en cédulas reales
3+3
aprobadas / rechazadas en piloto real
~6 min
de captura a decisión automática
Cómo funciona

Tres pasos, decisión con evidencia

El usuario no ve formularios: solo captura, espera y obtiene su resultado.

1

📱 Captura guiada

Frente, dorso del documento y selfie. Cada captura se firma (ECDSA) y se vincula a la sesión con un challenge anti-replay.

2

🧠 Análisis con Gemini

OCR del documento (visual + MRZ + barcode), autenticidad, detección de liveness y face-match selfie ↔ retrato.

3

⚖️ Decisión por umbrales

7 criterios ponderados (críticos y de calidad) contra umbrales por tenant. Aprobación, rechazo o revisión manual con doble control.

Arquitectura

Componentes y flujo de datos

Docker + Traefik en Oracle Cloud · API REST · worker de visión desacoplado · datos en PostgreSQL y R2.

CLIENTEApp AndroidExpo · S24 UltraCaptura · Firma ECDSAEDGETraefik v2.11TLS · DNS-01 · CORSapi.identidad…API + PipelineHono / FastifySesiones · Firmas · EstadoVISIÓN IAVision WorkerPython · urllibOCR · PAD · Face-matchGemini 2.5 Flashgenerativelanguagegoogleapis.comDATOSPostgreSQL 17Sesiones · MetricsUmbrales · OCRCloudflare R2Evidencias · KeystorePresigned PUTPortal AdminNext.js 15 · WatermarkHTTPSfirma + challengeanalyze/verifyJSON + imágenesmetricsevidencias R2casos + data

El worker solo se comunica con el API (red interna) y con Gemini (única salida a internet).

Secuencia

Ciclo de vida de una verificación

Del toque en la app a la decisión final con auditoría completa.

MóvilAPIPipelineGeminiDB / R2CAPTURAPOST /v1/sessionschallenge + noncePUT evidencias (firma)complete (3 proofs)frente · dorso · selfieANÁLISISanalyze (front+back)OCR · autenticidad · ROIverify (selfie)PAD · liveness · matchDECISIÓNpersistir attributes + metricsumbrales por policy7 criterios · crítico w2 · advisor w0.8approved / rejected / manual_reviewREVISIÓNcola manual (si aplica)revisor resuelve (doble control)registro auditoría

manual_review solo cuando un criterio de calidad falla o falta evaluar algo — nunca se aprueba sin datos completos.

Stack tecnológico

Tecnologías de punta a punta

Móvil
Expo / React Native
Android · captura guiada · firma ECDSA
Backend
Node.js · Hono / Fastify
API REST · pipeline de verificación
Base de datos
PostgreSQL 17
RLS por tenant · sesiones particionadas
Almacenamiento
Cloudflare R2
Evidencias con checksum · presigned PUT
Visión IA
Gemini 2.5 Flash
OCR · autenticidad · PAD · face-match
Infraestructura
Docker · Traefik v2.11
Oracle Cloud ARM64 · TLS DNS-01
Portal admin
Next.js 15
Cola de revisión · historial · umbrales
Seguridad
ECDSA · sharp · watermark
Evidencias enmascaradas por auditor
Modelo de datos

Estructura de tablas (esquema identity)

Diseño multi-tenant con RLS, auditoría completa y datos de OCR persistidos por fuente.

verification_sessions
🔑 session_iduuid
tenant_iduuid
stateenum
policy_versiontext
capture_challenge_hashtext
capture_nonceuuid
created_at / expires_attimestamptz
verification_media
🔑 media_iduuid
session_iduuid
sidefront/back/selfie
storage_refr2 key
checksum_sha256text
capture_proofs
🔑 proof_iduuid
session_iduuid
proof_referenceuuid
captured_attimestamptz
verification_decision_metrics
🔑 session_iduuid
🔑 criteriontext
scorefloat
threshold_appliedfloat
operatorgte/lte
passedbool
policy_thresholds
🔑 tenant_iduuid
🔑 policy_versiontext
🔑 criteriontext
operatorgte/lte
thresholdfloat
weight2/0.8/0.5
verification_extracted_attributes
🔑 session_iduuid
🔑 sourcevisual/mrz/barcode
🔑 field_nametext
field_valuetext
confidencefloat
audit_events
🔑 event_iduuid
session_iduuid
actortext
eventtext
created_attimestamptz
Seguridad

Diseñado para evidencia admisible

🔐

Firma ECDSA por captura

Cada prueba se firma y se vincula al challenge de la sesión — los replays se rechazan.

🖼️

Evidencias con watermark

El portal sirve las fotos enmascaradas con el auditor y la fecha — nunca la evidencia cruda.

👥

Doble control

Casos sensibles requieren dos revisores distintos antes de resolver.

🏢

RLS por tenant

PostgreSQL aísla los datos por cliente a nivel de fila — un tenant nunca ve datos de otro.

📋

Auditoría completa

Cada evento (captura, análisis, decisión, resolución) queda en audit_events inmutable.

🧾

OCR persistido

Los datos extraídos se guardan por fuente (anverso/reverso/MRZ/barcode) con confianza por campo.

¿Listo para verificar identidades?

ParaguayDev implementa verificación de identidad con IA para e-commerce, fintech y servicios digitales en LATAM.

Contactar a ParaguayDev →