Bitácora ODIN

ODIN – Bitácora del Proyecto

ODIN – Bitácora del Proyecto

Actualizada 2026-08-26 · Salir

1. Qué es ODIN

ODIN (Ergo Systems.com) es una plataforma de iA legal para el mercado peruano, con un backend compartido (un solo workflow de n8n, hoy de más de 380 nodos, y una base Postgres/PGVector multi-tenant) y tres interfaces de consumo distintas según el público:

Huginn — app pública gratuita (Play Store, TWA) para el ciudadano común. Consulta legal con límite de 3/hora, adjuntar 1 documento si se registra, historial, publicar caso a «buscar abogado».
Muninn — portal web de suscripción para abogados independientes. Consulta con documentos base, bandeja de prospectos de Huginn, saldo/recarga, jurisprudencia SPIJ y Poder Judicial.
ODIN Corporativo — despliegue full para estudios/empresas/instituciones. RAG sobre el Drive propio del cliente, predicción judicial, gestión de expedientes/litigantes/plazos, múltiples abogados.
Admin — panel interno de Ergo Systems para recargas, tarifas, cuentas y monitoreo de conexiones.

2. Estado por producto

Huginn Publicado (web + APK de prueba)

URL: https://ergosystemsperu.com/odin/huginn/ (WordPress post 108, plantilla blank sin header/footer del sitio).

  • Identidad anónima por device_id/teléfono, sin login obligatorio. Registro opcional habilita adjuntar documento/foto, historial, publicar caso.
  • Pantalla de inicio por categorías (tránsito, embargos, alimentos, civil, penal, laboral) con íconos emoji, enruta a Consulta con área y texto precargados.
  • Visión por imágenes (Gemini multimodal) para fotos de documentos/papeletas.
  • Tono del agente ajustado: coloquial pero sin evadir técnicismos — nombra la figura legal exacta y la explica en el mismo párrafo.
  • Texto a voz (síntesis del navegador, heurística de voz masculina) para la respuesta; sección «Acerca de Huginn» con reproductor de audio real (MP3 subido) en vez de TTS.
  • Menú adicional: «Acerca de Huginn», «ODIN para abogados independientes» (con video de YouTube incrustado) y «ODIN para estudios/empresas/inst. públicas» (con video MP4 propio).
  • Empaquetado como TWA (Trusted Web Activity) vía Bubblewrap — APK de prueba generado y probado. Falta llave de firma definitiva (la actual es de prueba) y cuenta de Play Console real antes de publicar en producción.
  • Cada consulta registra automáticamente IP + geolocalización (sin tocar el frontend) para el monitoreo de conexiones del panel Admin.

Muninn Publicado, en pruebas de terceros

URL: https://ergosystemsperu.com/odin/mininn/ (post 99).

  • Login real con email + contraseña (bcrypt vía pgcrypto), migración automática de contraseña en el primer ingreso.
  • Sistema de temas (Bosque/Marino/Nocturno, variables CSS) y elección de posición de menú (arriba/izquierda), con persistencia en localStorage.
  • Pestañas: Consulta, Historial, Bandeja de Entrada (prospectos de Huginn), Saldo/Recarga (Yape manual), Jurisprudencia SPIJ y Poder Judicial (búsqueda + análisis con IA + descarga), Mi Perfil.
  • Facturación real: fórmula por transacción fija + tráfico en KB, niveles de tarifa configurables desde el panel Admin.
  • Auto-logout por inactividad (45 min); registro de sesiones con IP/ciudad/país.

ODIN Corporativo En construcción activa

URL: https://ergosystemsperu.com/odin/corporativo/ (post 234). Primer cliente: Estudio Arbizu & Gamarra (cuenta demo).

  • Mismo diseño/temas que Muninn, login real con email+contraseña, endpoint propio para cambiar email/contraseña.
  • Consulta con casilla «usar documento adjunto como plantilla/formato» (el agente sigue la estructura al pie de la letra y marca datos faltantes con ).
  • Predicción de probabilidad de fallo por magistrado: busca en vivo las sentencias del Drive del cliente (Predicciones/{juez}/{tipo_caso}/sentencias/), exige mínimo 2 sentencias, responde con rango porcentual y descargo legal.
  • Jurisprudencia SPIJ/PJ idéntica a Muninn (siempre visible, no depende de tipo de suscripción).
  • Gestión de Expedientes: cada expediente pertenece a un Litigante (entidad propia, no atada a un solo caso — un litigante puede tener varios expedientes), abogado asignado, estados (abierto/en_proceso/en_abandono/cerrado), y Plazos (plazo/vencimiento/audiencia/comparecencia) responsabilidad del abogado a cargo.
  • Gestión de Abogados del estudio (alta simple, sin cuentas de login individuales todavía).

Admin Publicado

URL: https://ergosystemsperu.com/odin/admin/ (post 103). Panel Tailwind, password compartida (no hay usuarios individuales).

  • Recargas Yape pendientes (confirmación manual).
  • Niveles de tarifa (Muninn y Odin) y asignación por cuenta.
  • Cuentas Muninn registradas.
  • Conexiones (Muninn): conectados ahora + historial de sesiones con IP/ubicación.
  • Conexiones Huginn (nuevo): rango de fechas, conectados ahora, resumen diario (consultas/visitantes únicos), detalle por usuario (condición anónimo/registrado, IP, ubicación, último tema consultado, veces conectado, si buscó abogado).

3. Modelo de datos (Postgres, base base_vectores_n8n)

Todo corre sobre un único Postgres/PGVector multi-tenant. Tablas principales:

TablaPropósito
clientes / tipo_clienteEl cliente de ODIN (HUGINN/MUNINN/ODIN), no confundir con el litigante del estudio.
cuentas / tipo_cuentaFREE, FREE_REGISTRADO, PREPAGO, SUSCRIPCION_MENSUAL/ANUAL, CORPORATIVA.
n8n_vectors2Embeddings (Gemini), columna + JSONB cliente_id para aislar el RAG por tenant.
historial_consultasUna fila por consulta real, todos los tiers; base para el reporte de conexiones Huginn.
consumo_uso / movimientos_cuentaCosteo interno (USD) y ledger de ingresos (soles) — separados a propósito.
sesiones_usuarioIP, ciudad, país, inicio/fin — generado genérico, alimentado hoy por Muninn (login) y Huginn (cada consulta).
expedientesCaso/expediente ODIN (1:1 en la práctica) — litigante_id, abogado_asignado_id, estado.
litigantesCliente del estudio, independiente del expediente (renombrada desde contactos_caso).
plazos_expedientePlazos/vencimientos/audiencias/comparecencias por expediente, responsable = abogado.
usuarios_abogadoAbogados de un estudio ODIN; google_calendar_id opcional (integración de calendario aún no construida).
jurisprudencia_busquedasCaché de búsquedas SPIJ/PJ por cliente+criterio+fechas.
prospectos_casos / mensajes_caso / calificacionesFlujo Huginn→Muninn de «buscar abogado», mensajería y rating.

Nota: las migraciones numéradas en el repo local (db/migrations/001–013) no reflejan el estado real de la base — varios cambios posteriores (litigantes, plazos, columnas de sesiones, checks de estado) se aplicaron directo por SSH sin generar el archivo .sql correspondiente. Ver sección 8 para cómo actuar sobre esto.

4. Reglas de negocio vigentes

  • Muninn: S/.50/mes suscripción, o S/.20 prepago hasta agotar saldo. Deducción real: S/.0.50 (prepago) / S/.0.25 (mensual) fijo por consulta + S/.0.50 por cada 100KB de tráfico estimado (tokens×4/1024).
  • Odin Corporativo: cuota mensual fija (no hay flujo de facturación automático aún) — el consumo se registra para información/límites, no se cobra por evento.
  • Huginn: gratis, 3 consultas/hora (registrado o no), 1 documento si está registrado.
  • Marca de agua obligatoria en toda respuesta, distinta por tier (Huginn/Muninn/Odin), inyectada server-side, no depende del prompt del LLM.
  • Jurisprudencia SPIJ/Poder Judicial disponible para Odin y para Muninn con suscripción (no prepago).

5. Integraciones externas

  • Google Gemini — modelo de lenguaje + embeddings + visión.
  • Google Drive — repositorio documental por cliente Odin (ingesta automática programada).
  • SPIJ (normas) y Poder Judicial (jurisprudencia real) — scraping vía un relay residencial (celular con Termux + túnel SSH inverso) porque el VPS está bloqueado por IP de datacenter en ambos sitios. Depende de que el relay del celular esté activo.
  • WhatsApp Business (litigantes de estudios Odin)Diseñado, no construido. Arquitectura confirmada: un solo número central para todos los estudios (el litigante elige su estudio al inicio), Meta Cloud API directo, calendario institucional por estudio. Pendiente: alta de un número nuevo en Meta (no se puede reusar el de Cerveza Chalaca), teléfono de alerta por estudio, y plantillas de mensaje aprobadas por Meta (obligatorias para cualquier recordatorio que ODIN inicie fuera de la ventana de 24h).

6. Infraestructura

  • Un VPS (Dokploy/Docker/Traefik) aloja todo: Postgres+PGVector (RAG), n8n (con su propio Postgres interno), WordPress de ODIN y de Cerveza Chalaca (cada uno con su MySQL), Chatwoot, Mailu (correo propio), pgAdmin.
  • Certificados HTTPS vía Traefik/Let’s Encrypt — ambos dominios principales tuvieron el mismo bug (falta de certificado para la variante www) corregido agregando el host a la regla de Traefik.
  • Ver sección 8 para ubicaciones exactas de archivos/backups.

7. Pendientes / próximos pasos

  1. WhatsApp para litigantes de estudios Odin (citas, estado de expediente, alertas de calendario) — ver sección 5.
  2. Creación automática de subcarpeta en Drive por área del derecho al crear un expediente (discutido, no implementado).
  3. Cuentas de login individuales por abogado dentro de un estudio Odin (hoy es una sola cuenta compartida).
  4. Llave de firma definitiva + Play Console real para publicar Huginn en producción.
  5. Dashboard de administrador del estudio Odin (casos por abogado, productividad, alertas) — anunciado, no iniciado.
  6. Poner al día las migraciones .sql locales con los cambios de esquema aplicados directo en producción (litigantes, plazos_expediente, estado en_abandono, etc.).

8. Accesos, archivos y backups

Dónde vive cada parte del proyecto

ComponenteUbicación
Código de las páginas (Huginn, Muninn, Corporativo, Admin, esta Bitácora)Contenido de posts de WordPress en ergosystemsperu.com (base MySQL wordpress, contenedor www-wordpress-xotvuy-wp_db-1). No existen como archivos sueltos en ningún repositorio — viven únicamente en la base de datos de WordPress.
Lógica de negocio / IAUn único workflow de n8n («290626 RAG Legal V2») en https://n8n.ergosystemsperu.com, guardado en el Postgres interno de n8n (contenedor n8n-ergo-server-n8nwithpostgres-wpj3gr-postgres-1).
Datos de negocio (clientes, expedientes, historial, vectores)Postgres base_vectores_n8n en el contenedor postgres-ia-db del VPS.
Archivos subidos (imágenes, PDFs, audio, QR)Volumen Docker www-wordpress-xotvuy_wp_app (carpeta wp-content/uploads).
Documentos de los clientes Odin (para el RAG por cliente)Google Drive de cada estudio — fuera del VPS, ya redundado por Google.
Migraciones SQL versionadas (parcial, desactualizado)Carpeta local Documents/2026 Ergo Systems/Proyecto iA/ODIN/RAG iA/db/migrations/ en tu Mac.
Material de referencia (presentaciones, kits de diseño, videos, audios)Carpeta local Documents/2026 Ergo Systems/Proyecto iA/ODIN/RAG iA/web-ergosystems/.

Backup realizado el 2026-08-26

Se generó un respaldo completo (~1 GB comprimido) con:

  • Volcado completo de base_vectores_n8n (Postgres, formato pg_dump -Fc).
  • Volcado completo del Postgres interno de n8n (workflows + credenciales cifradas + historial de ejecuciones).
  • Volcado MySQL de los dos WordPress (ergosystemsperu.com y cerveza-chalaca.com).
  • Archivos subidos de ambos WordPress (carpetas wp-content/uploads completas).

Guardado en dos ubicaciones:

  1. /root/backups/odin_backup_2026-08-26.tar.gz en el VPS.
  2. Copia local descargada en Documents/2026 Ergo Systems/Proyecto iA/ODIN/backups/odin_backup_2026-08-26.tar.gz — checksum SHA-256 verificado idéntico entre ambas copias.

Importante: para restaurar las credenciales guardadas dentro de n8n hace falta además el valor de N8N_ENCRYPTION_KEY vigente al momento del backup — no se guarda dentro del paquete de respaldo por seguridad; consultarlo directamente en el servidor si se necesita un restore completo.