Skip to content

HAVI Score — Análisis de Documentos

El módulo de análisis de documentos usa OCR (Tesseract) + MoonshotAI para extraer y validar datos financieros de documentos reales, elevando la precisión del HAVI Score.

Documentos soportados

TipodocumentTypeQué se extrae
Estado de cuenta bancariobank_statementSaldo, ingresos, gastos, banco
Recibo de nóminapayslipSalario neto, empresa, antigüedad
Identificación oficialid_documentNombre, CURP, vigencia
Comprobante de domicilioproof_of_addressDirección, vigencia
Declaración fiscaltax_returnIngresos anuales, deducciones

Subir documento para análisis

Requiere autenticación

http
POST /api/ai/documents/upload
Authorization: Bearer {token}
Content-Type: multipart/form-data

Form data:

  • file — Archivo PDF o imagen (.pdf, .jpg, .png)
  • documentType — Tipo de documento (ver tabla arriba)

Respuesta 201:

json
{
  "success": true,
  "data": {
    "documentId": "uuid-documento",
    "status": "processing",
    "documentType": "bank_statement",
    "message": "Documento recibido. El análisis tardará entre 5 y 30 segundos."
  }
}

Consultar estado del documento

http
GET /api/ai/documents/:documentId/status
Authorization: Bearer {token}

Respuesta cuando está procesado:

json
{
  "success": true,
  "data": {
    "documentId": "uuid-documento",
    "status": "processed",
    "documentType": "bank_statement",
    "extractedData": {
      "banco": "BBVA",
      "saldoActual": 45000,
      "ingresoMensual": 25000,
      "gastosMensuales": 18000,
      "periodoReportado": "Marzo 2026"
    },
    "confidence": 92,
    "haviScoreImpact": "+45 puntos",
    "processedAt": "2026-05-13T10:05:00.000Z"
  }
}

Estados posibles:

EstadoDescripción
pendingEn cola de procesamiento
processingSiendo analizado por IA
processedAnálisis completado
failedError en el procesamiento
rejectedDocumento ilegible o inválido

Listar documentos del usuario

http
GET /api/ai/documents
Authorization: Bearer {token}

Ver URL del documento

http
GET /api/ai/documents/:documentId/url
Authorization: Bearer {token}

Devuelve una URL temporal pre-firmada para visualizar el documento en S3.


Eliminar documento

http
DELETE /api/ai/documents/:documentId
Authorization: Bearer {token}

Reprocesar documento

Si el análisis falló, puedes reprocesarlo:

http
POST /api/ai/documents/:documentId/reprocess
Authorization: Bearer {token}

Resumen de documentos del usuario

http
GET /api/ai/documents/summary
Authorization: Bearer {token}

Respuesta 200:

json
{
  "success": true,
  "data": {
    "totalDocuments": 3,
    "processedDocuments": 2,
    "pendingDocuments": 1,
    "haviScoreActual": 715,
    "haviScoreAnterior": 650,
    "mejora": "+65 puntos tras análisis de documentos",
    "documentsTypes": {
      "bank_statement": 1,
      "payslip": 1,
      "id_document": 1
    }
  }
}

Solicitar análisis completo

http
POST /api/ai/analysis/request
Authorization: Bearer {token}
Content-Type: application/json

{
  "documentIds": ["uuid-doc-1", "uuid-doc-2"]
}

Respuesta:

json
{
  "success": true,
  "data": {
    "analysisId": "uuid-analysis",
    "status": "processing",
    "estimatedSeconds": 20
  }
}

Consultar estado del análisis

http
GET /api/ai/analysis/status/:analysisId
Authorization: Bearer {token}

Obtener análisis del usuario

http
GET /api/ai/analysis
Authorization: Bearer {token}

Devuelve el análisis más reciente con el HAVI Score actualizado y recomendaciones.

HAVI API · Documentación Oficial