Nexus — Technical Specifications

Plataforma de Inteligencia Artificial Operativa para Negocios de Centroamérica
Documento generado: Mayo 2026 · Versión del manifiesto: v2.2

Contenido

  1. Qué es Nexus
  2. Arquitectura general
  3. Los siete proveedores LLM
  4. Los seis pilares
  5. Superficies de usuario
  6. API — Inventario completo de endpoints
  7. Base de datos — 75 tablas
  8. Integraciones — 18 adaptadores
  9. Motor de Workflows
  10. Sistema de Conocimiento (SLCE)
  11. Skeleton — Descubrimiento inteligente de negocio
  12. Anonimización y seguridad
  13. Facturación y planes
  14. Connector — Agente local
  15. Infraestructura y Terraform
  16. Observabilidad
  17. Workers y jobs en background
  18. Sentinel — Auditor autónomo
  19. Estado actual — Qué funciona hoy
  20. Qué falta para completar
  21. Qué se podría agregar
  22. Dependencias y stack técnico
  23. Testing

1 Qué es Nexus

Nexus es una plataforma de inteligencia artificial operativa diseñada para negocios de Centroamérica. No es un chatbot. No es un wrapper de OpenAI. Es un sistema completo que:

  1. Se conecta a la infraestructura del cliente (bases de datos, email, archivos, ERPs) a través de integraciones OAuth y el Connector local.
  2. Descubre cómo opera el negocio analizando esquemas de BD, documentos, facturas y patrones de comunicación — generando un “skeleton” (modelo de negocio) por tenant.
  3. Propone workflows personalizados basados en ese skeleton, con estimados de ahorro en horas-hombre.
  4. Ejecuta esos workflows 24/7 con aprobación humana en pasos críticos, respetando presupuestos duros.
  5. Aprende continuamente del feedback y las correcciones del usuario, refinando el skeleton y las reglas de negocio.

El chat (POST /v1/chat/completions) es UNA de 304 rutas HTTP. Las otras manejan workflows, integraciones, facturación, conocimiento, reglas, reportes, aprobaciones, memoria, descubrimiento de esquemas, Sentinel, Connector, equipos, roles, erasure, verticales, y más.

Para quién

Negocios de Centroamérica (SV, CR, GT, HN, PA, NI, DO) que necesitan automatizar operaciones sin exponer datos sensibles a proveedores de LLM. Desde un contador independiente hasta una empresa de 10,000 empleados. Español primero, variantes regionales (salvadoreño, tico, chapín, catracho, dominicano, panameño).

Propuesta en una línea

“Conectá Nexus a tu negocio. En horas entiende cómo trabajás. En días te propone los workflows que te van a ahorrar 20–30 horas al mes. Vos aprobás, Nexus ejecuta 24/7.”

7
Proveedores LLM
18
Adaptadores de integración
304
Endpoints HTTP
75
Tablas en BD
83
Migraciones Alembic
196
Archivos de test
21
Background jobs
5
Superficies de usuario

2 Arquitectura general

Tres productos peer (misma base de código, repos separados para Comm API):

ComponenteDirectorioPuertoFunción
Brain API (Main API)api/9700Toda la lógica de negocio. HTTP only. Anonimización, routing, workflows, integraciones, memoria, costos, reglas, Sentinel.
Comm APIcomm-api/8001Gateway de tiempo real. WebSockets + webhooks. Pass-through estricto — sin storage, sin lógica de negocio, sin acceso a BD.
Connectorconnector/Agente local instalado en infraestructura del cliente. WSS bidireccional iniciado por el cliente. Dumb-pipe: cero lógica local.
Customer Portalcustomer-portal/8700Portal self-service para clientes. HTML estático + JS vanilla. serve.py inyecta config en runtime.
Admin Portalfrontend/8701Portal staff/admin. Gestión de tenants, aplicaciones, tiers, branding, SSO.
Web Appweb/3000Next.js 14. Reemplazo moderno del portal HTML (en progreso).

Dos modos de despliegue (un solo codebase)

Mode A — Shared (multi-tenant)Mode B — Dedicated (single-tenant)
Para quiénStarter / Pro / Enterprise tiersContratos Tier-2 con requisito de aislamiento de datos
Infra1 Main API, 1 Postgres, 1 Redis, compartidosMain API + DB + Redis dedicados por cliente
Aislamiento PostgresRow-Level Security (RLS)Base de datos separada
Aislamiento RedisPrefijo tenant:{id}:Cluster separado
Onboarding< 5 minutos~15 minutos (Terraform + script)

La lógica de negocio nunca bifurca por modo de despliegue. Un TenantResolver se inyecta al arranque; el código downstream solo ve un TenantContext resuelto.

Flujo de un request (ejemplo: chat)

Cliente (SDK / Portal / Móvil / WhatsApp / Email) ↓ POST /v1/chat/completions ↓ Brain API (api/) 1. Auth (API key, BFF cookie, SSO JWT, o Authentik JWT) 2. Resolver tenant (RLS context var) 3. Rate limit (Redis sliding window, 20 RPM auth, configurable por tier) 4. Model override policy (alias / pass_through / reject) 5. Quota pre-flight (RPM, TPM, daily tokens, daily/monthly cost) 6. Budget check (80% → downgrade, 95% → queue, 100% → block) 7. Rule eval pre-LLM (custom rules + system rules) 8. Inject attachments (W.5 InjectAttachmentsStage) 9. Inject learned context (SLCE knowledge layers) 10. Inject business memory (durable facts) 11. Anonymize PII (text + image_url + OCR) → Presidio + spaCy español + reconocedores CA → DUI (SV), DPI (GT), RTN (HN), cédula (CR/PA/NI), NIT, RUC, teléfonos, cuentas bancarias 12. ModelRouter → Groq / DeepSeek / Claude / Grok / Gemini / OpenAI (RTK: tokens_in, tokens_out, model, cost_usd, tenant, user, workflow, correlation) 13. De-anonymize respuesta 14. Rule eval post-LLM (streaming rule guard con 256-char lookahead) 15. Persist llm_call (RTK row) 16. SLCE extraction (fire-and-forget: extraer hechos a knowledge layers) ↓ Respuesta OpenAI-compatible (JSON o SSE stream)

3 Los siete proveedores LLM

ProveedorRolModelos principalesEstado
GroqGeneralista (fast, cheap)LLaMA, MixtralLive
xAI (Grok)GeneralistaGrok-2Live
AnthropicGeneralista (quality)Claude 4.xLive
GoogleGeneralista (multimodal)GeminiLive
DeepSeekGeneralista (code/reasoning)DeepSeek-V3Live
OpenAIGeneralista (fallback)GPT-4oLive
PerplexityEspecialista (búsqueda)Sonar Pro/ReasoningOpt-in

Quality Tiers v2 (Bronze / Silver / Gold / Platinum)

Matriz de tier × categoría (fast_chat, reasoning_coding, creative_writing, multimodal_vision, factual_research, ultra_cheap) que determina (provider, model, params) por llamada. Cuatro niveles de fallback: app-override → app-default → tenant-default → plan-default. DB-backed y editable desde admin.

Platinum Orchestrator

Ensemble Scout → Reader(s) → Synth por categoría. Cada paso atribuido vía RTK. Recetas editables desde staff admin.

Model Aliases

fast_cheap, balanced, best_quality, long_context — el cliente usa aliases, Nexus rutea al proveedor óptimo.

4 Los seis pilares + Sentinel

1. Conversación e Interacción

Chat nativo (web + dock flotante + móvil), TTS (ElevenLabs 4 voces), STT (Groq Whisper), attachments con escaneo antivirus (ClamAV), redacción de imágenes (caras + OCR), streaming SSE.

2. Ejecución de Tareas y Automatización

Motor de workflows (LangGraph), definiciones con steps JSON, triggers (chat, cron, webhook), aprobaciones human-in-loop, dry-run, propuestas de workflow desde skeleton.

3. Conocimiento y Memoria

Memoria por sesión, SLCE (6 capas de auto-aprendizaje), pgvector embeddings, skeleton de negocio, descubrimiento de esquemas, memoria editable por usuario, forget-on-request.

4. Integración y Conectividad

16 adaptadores (Gmail, Calendar, Drive, HubSpot, Slack, Notion, Alegra, Contífico, QuickBooks, Stripe, Shopify, WooCommerce, Zoho, Pipedrive, Belvo, D7 SMS). OAuth refresh, circuit breaker, retry, idempotencia.

5. Inteligencia y Análisis

Dashboard de uso (24h/7d/30d), ROI con desglose por workflow, reportes generados (PDF/PPTX), digests diarios, detección de anomalías, presentaciones con branding del tenant.

6. Gobernanza y Control

Motor de reglas (system + custom por tenant), aprobaciones, caps de gasto (diario/mensual con downgrade automático), audit logs, anonimización reversible (texto + imagen), erasure GDPR, white-label, SSO por tenant.

+ Sentinel (Auditor Autónomo)

Monitor LLM-powered que corre continuamente: verificaciones RLS, fallos de anonimización, anomalías de costo, patrones de auth, completitud de erasure. Infraestructura siempre activa; business-scope opt-in por tenant. Read-only por defecto con acciones pre-aprobadas acotadas.

5 Superficies de usuario

5.1 Customer Portal (29 páginas HTML)

HTML estático + JS vanilla. Sin build step, sin Node. serve.py inyecta PUBLIC_BASE_URL en <meta name="nx-api-base"> al servir. Mismo artifact en dev/UAT/prod.

TabPáginaFunción
Iniciodashboard.htmlUso (requests, tokens, costo, errores), barras diarias, desglose por modelo, presupuesto
chat.htmlChat real-time con 7 modelos, historial de conversaciones, streaming SSE
insights.htmlDigests diarios, análisis de datos, anomalías
reports.htmlReportes generados con signed-URL retrieval
roi.htmlROI: horas-hombre ahorradas, costo LLM, desglose por workflow
Trabajopropuestas.htmlPropuestas de workflow generadas por LLM: revisar, aprobar, rechazar, materializar
workflows.htmlWorkflows definidos por tenant: crear, ejecutar, historial de runs
approvals.htmlCola de aprobaciones de tool-calls con razonamiento
calls.htmlHistorial de llamadas LLM y voz
Conocimientomi-negocio.htmlPerfil de negocio / contexto empresarial
fuentes.htmlFuentes de datos (data sources)
mapeo.htmlEditor de mapeo de esquemas (read + edit live)
memoria.htmlMemoria por scopes (short/long-term, por subject)
conocimiento.htmlBase de conocimiento SLCE (6 capas), opt-outs por capa/fila
sugerencias.htmlInbox de sugerencias (SLCE): aceptar, descartar, bulk
rules.htmlReglas custom (crear, editar, preview, eliminar)
Configintegrations.htmlAdaptadores OAuth + credenciales directas. Habilitar/deshabilitar/eliminar
email.htmlCredenciales de canal email (vault cifrado)
sentinel.htmlHallazgos de seguridad Sentinel, marcar falsos positivos, exportar CSV
quota.htmlCuotas de uso y límites
billing.htmlCheckout de facturación, selección de tier
plan.htmlPlan actual y opciones de upgrade
key.htmlAPI key: mostrar, rotar (60s overlap)
ayuda.htmlCentro de ayuda / documentación
admin-docs.htmlDocumentación administrativa

Auth: BFF cookie HttpOnly (nexus_sid) via Authentik OIDC, o Bearer token en sessionStorage (API key).

36 módulos JS incluyendo: config.js (runtime injection), api.js (100+ endpoints), common.js (shell, branding, formatting), chat-dock.js (dock flotante), command-palette.js (CMD+K), voice-input.js, helpbot.js (RAG), intro-video.js, service-status.js.

5.2 Admin Portal (9 páginas)

Staff-only. Authentik OIDC auth. Gestión de tenants, apps, tiers, quotas, logs, salud, pilotos, onboarding.

5.3 Web App (Next.js 14)

21 rutas, React 18, Zustand, TypeScript. Reemplazo moderno del portal HTML (en progreso). Incluye chat SSE, command palette, navegación por secciones (Inicio, Trabajo, Conocimiento, Config).

5.4 Mobile App (Expo 51)

iOS + Android. SecureStore auth, SSE streaming, biometric lock, offline send-queue con replay, push notifications (Expo broker). M.1–M.5 shipped. M.6 (app store submission) pendiente.

5.5 API Programmática (OpenAI-compatible)

Drop-in replacement para OpenAI SDK. El cliente cambia api_base y api_key. Mismo schema de request/response, misma semántica HTTP, mismo streaming SSE. Anonimización automática, invisble para el cliente.

6 API — Inventario completo de endpoints (304)

DominioRutas claveCountPropósito
Chat & CompletionsPOST /v1/chat/completions, GET /v1/models2Gateway LLM compatible con OpenAI (streaming + non-streaming)
VozPOST /v1/transcribe, POST /v1/tts, GET /v1/tts/voices3Speech-to-text (Groq Whisper) y text-to-speech (ElevenLabs)
AttachmentsPOST /v1/me/attachments, etc.3Upload, scan (ClamAV), text extraction, image redaction
Auth Portal (BFF)/v1/auth/login/*4OIDC PKCE con Authentik, cookies HttpOnly, rate limiting
Auth SSO (per-tenant)/v1/auth/sso/*4Customer OIDC: start, callback, status, session JWT
Aprobaciones/v1/approvals/*3Aprobar/rechazar/avanzar step en pipeline multi-step
Customer Self-Service/v1/me/*~90Usage, quota, billing, branding, memory, rules, integrations, push, SSO, teams, roles, reports, ROI, suggestions, knowledge, conversations, onboarding, custom domain, forget, help, connector, vertical, DKIM
Workflows/v1/workflows/*7Definiciones CRUD, ejecutar, status de runs, resume
Reglas/v1/rules/*, /v1/me/rules/*8System rules + custom rules por tenant, preview
Memoria/v1/memory/*, /v1/me/memory/*6CRUD por scope (business, user, client)
Skeleton & Schema/v1/connectors/skeleton/*, /v1/connectors/schema/*~25Discover, synthesize, refine, proposals, mappings, ingest
Verticales/v1/verticals, /v1/me/vertical4Playbooks por industria (12 verticales). Asignación + overrides por tenant
Equipos y Roles/v1/teams/*, /v1/user-roles/*9Teams CRUD, membership, tenant-level roles (user/team_lead/manager/admin)
DKIM/v1/me/branding/dkim/*4Request, update, status, DNS records para email signing
Voz Round-trip/v1/voice/roundtrip1Push-to-talk STT → chat agent → TTS round-trip
Connector/v1/connector/*, /v1/me/connector/*~12Binding, results, instances, mappings, publishers
Channels/v1/channels/*6Config per-tenant de canales (email, WA, SMS, web, mobile), credentials vault
Webhooks externos/webhooks/*3Stripe, D7 SMS, billing genérico
Admin (staff)/admin/*~60Tenants, apps, quotas, tiers, routing, billing, connector fleet, data sources, docs, erasure, pilots, support, WhatsApp rebind
Sentinel/v1/sentinel/*7Settings, findings (list, remediate, snooze, dismiss, CSV export)
Salud e Infra/health/*, /metrics5Liveness, readiness (DB+Redis+LLM), provider probe, Prometheus
Status público/v1/public/status, /v1/alerts/alertmanager2Status page + Alertmanager webhook
Branding público/public/branding/*1Assets de branding por tenant slug
Internal/v1/internal/*~4WhatsApp resolve, inbound stamp, custom domain confirm
SCIM 2.0/v1/scim/Users/*, /v1/scim/Groups/*8Enterprise IdP user sync (RFC 7643/7644). CRUD + filter + PATCH for Azure AD, Okta, OneLogin
NL QueryPOST /v1/me/query1Natural-language to SQL sobre datos de uso del tenant. Allow-listed tables, read-only
ComplianceGET /admin/compliance/snapshot1SOC 2 / ISO evidence binder. Recoge evidencia de 6 controles automáticamente
Workflow Builder/v1/workflows/builder/*5Validate, preview, reorder, step-types catalog, generate from NL description
Deploy & Canary/admin/deployment, /health/canary, /health/version3Blue/green + canary deploy support. Version headers, traffic weight, promotion readiness
DR Validation/admin/dr/*3Disaster recovery assessment + failover simulation (DB, Redis)
SLAGET /v1/me/sla/compliance1SLO compliance snapshot: P95 latency, error rate, workflow success, audit coverage
Test Runner/admin/tests/*3Trigger pytest batches against live DB, poll results, list runs. Failures auto-email devops
Kill Switch/admin/killswitch/*3SIS SA-only API lockdown (engage/disengage/status). 503 middleware on all non-health routes
Log Watcher/admin/log-watcher/snapshot1Sentinel log watcher state: error/auth window counts, recent events, alert history
Onboarding WA/v1/onboarding/whatsapp/*1Flujo multi-turn de onboarding por WhatsApp
UI (server-rendered)/, /apps, /quotas, /logs, /ui/*~8Dashboard admin HTML server-rendered

7 Base de datos — 75 tablas, 83 migraciones

Infraestructura core

TablaFunciónRLS
tenantsBoundary de aislamiento. Tier, Stripe IDs, custom domain, onboarding state, rate overrides
usersUsuarios por tenant. Unique (tenant_id, email). Roles: admin/member/viewer
teamsEquipos intra-tenant para visibilidad
user_team_membershipsRelación users↔teams con rol (member/lead/manager)
user_rolesRol canónico de visibilidad (user/team_lead/manager/admin)
tiersCatálogo de planes: independiente, equipo, empresa, corporativo
applicationsUna por proyecto de usuario. API key hash, system prompt, model overrides
api_keysKeys de proveedores LLM (encrypted). Sin tenant scope

Uso, facturación y costos

TablaFunción
usage_quotasLímites (RPM, TPM, daily tokens, daily/monthly cost) + contadores live por app
usage_logsTracking per-request: modelo, tokens, costo, latencia, fallback chain
llm_callsRTK attribution row. invoker + provenance + tier + ensemble por llamada
payment_ordersEstado machine: pending → awaiting → confirmed. 5 proveedores de pago
tenant_configOverage, budgets, tier defaults por tenant
audit_logsTodas las acciones staff/system con correlation ID. 365 días retención

Workflows y ejecución

TablaFunción
workflowsDefiniciones: slug, steps JSON, trigger (chat/cron/webhook), schedule
workflow_runsEjecuciones: status, current node, state JSON, error
tool_callsAudit per-dispatch de tool use con argumentos, resultados, latencia, costo
pending_approvalsCola de aprobaciones para tools con requires_approval

Conocimiento y memoria

TablaFunción
memory_itemsMemoria long-term con embedding pgvector(1024)
knowledge.business_profileHechos de negocio (key-value con confidence)
knowledge.personsEntidades persona con metadata
knowledge.person_relationsRelaciones inter-persona
knowledge.unwritten_rulesReglas no escritas extraídas del contexto
knowledge.operational_patternsPatrones operacionales observados
knowledge.accumulated_knowledgeConocimiento acumulado por topic/layer
knowledge.knowledge_embeddingsEmbeddings polimórficos pgvector(1536)
knowledge.knowledge_auditTrail de auditoría de conocimiento
knowledge.layer_opt_outsOpt-out por tenant por layer

Integraciones y canales

TablaFunción
integrationsInstancias de adaptador por tenant. Circuit breaker state
oauth_tokensTokens OAuth cifrados (access/refresh)
integration_eventsLog append-only de llamadas a APIs externas
webhook_eventsEventos entrantes de proveedores (Stripe, D7, etc.)
event_subscriptionsTrigger: “cuando X ocurra, ejecutar workflow Y”
tenant_channelsConfig de canales (web/email/WA/SMS/mobile) por tenant
tenant_channel_secretsCredenciales selladas por canal (SMTP/IMAP passwords)
email_inbox_stateEstado de polling IMAP (UIDs, last polled)
email_outbound_stateEstado de auto-reply por mensaje
whatsapp_phone_bindingsE.164 → tenant binding
device_push_tokensTokens Expo Push por dispositivo

Skeleton, schema discovery y data sources

TablaFunción
company_skeletonRevisiones inmutables del skeleton de negocio (versionado)
skeleton_entityEntidades detectadas (client/supplier/product/account/employee)
skeleton_processProcesos detectados con frecuencia y entity refs
skeleton_workflow_proposalPropuestas de workflow generadas por LLM
schema_discovery_runRuns de descubrimiento de esquema (status, cost cap)
tenant_schema_mappingMapeos de BD versionados (draft/active/superseded)
skeleton_ingest_eventsLog append-only de ingesta (db_snapshot, file_index, document, operational_summary)
operational_eventsEventos operacionales por workflow run (completed/failed/paused/intervention/timeout) — alimenta re-síntesis nocturna
tenant_data_sourcesCatálogo de fuentes de datos (postgres/mysql/imap/smb/etc.)
tenant_data_source_secretsSecretos sellados de conexión
connector_publishersDispatches programados al Connector
connector_publisher_runsHistorial de ejecuciones del Connector
connector_mappingsPropuestas de mapeo del Connector (aprobación admin/tenant)
vertical_playbooksPlaybooks por vertical (12 industrias). Entidades, procesos, hints de síntesis esperados

Contenido, branding, seguridad

TablaFunción
attachmentsUploads con scan status, SHA-256, extracted text, redaction info
document_extractionsOCR + structured extraction de documentos
pii_mappingsVault de anonimización reversible (token → plaintext cifrado)
report_artifactsReportes generados (PDF/PPTX/CSV) en Spaces
tenant_brandingWhite-label: logo, colores, slogan, email From name
tenant_sso_configsConfig OIDC del IdP del cliente (client_secret sellado)
image_redaction_settingsThresholds de redacción por tenant
tenant_digestsDigests diarios de insights
erasure_requestsSolicitudes de borrado de datos (GDPR)
rule_configsPolíticas de reglas por tenant (on/off)
tenant_custom_rulesReglas free-text definidas por cliente
sentinel_tenant_settingsOpt-in de Sentinel + whitelist de acciones
tenant_toolsEnable/disable de tools por tenant + daily cap

Admin config y routing

TablaFunción
admin_config.quality_tiersCatálogo de tiers de calidad (Bronze/Silver/Gold/Platinum)
admin_config.tier_category_matrixMapeos tier → modelo por categoría
admin_config.platinum_recipesRecetas de ensemble Platinum
admin_config.plan_tier_defaultsDefaults de tier por plan
admin_config.slce_layer_configConfig de capas SLCE
routing_cost_tiersPolítica de routing por costo (6 tiers)
routing_tier_modelsModelos por routing tier
routing_task_defaultsTier por defecto por tipo de tarea

8 Integraciones — 18 adaptadores

AdaptadorTipoOperacionesEstado
GmailOAuth 2.0Read/send email, XOAUTH2 SMTP+IMAP, DKIM signingLive
Google CalendarOAuth 2.0Event CRUDLive
Google DriveOAuth 2.0File list/download (multipart)Live
HubSpotOAuth 2.0Contacts/deals CRUDLive
SlackOAuth 2.0DMs, channel postLive
NotionOAuth 2.0Pages/databasesLive
AlegraAPI KeyFacturas, personas, contabilidad CALive
ContíficoAPI KeyFacturas SRI Ecuador, personasLive
QuickBooksOAuth 2.0Invoices, customers (US accounting)Live
StripeSecret KeyCustomers + invoices readLive
ShopifyCustom AppOrders/products readLive
WooCommerceREST APIOrders/products readLive
ZohoOAuth 2.0CRM contacts/deals/leadsLive
PipedriveAPI KeyPersons/deals/organizationsLive
BelvoAPI KeyLATAM banking open-banking readLive
D7 SMSAPI KeyOutbound SMS via comm-apiLive
EzBilling ProAPI KeyFacturas, CCF, clientes, DTE status, reportes ventas (SV)Live
SAFBearer / CertPresupuestos, transacciones, partidas contables, estados financieros (SV gobierno)Live

Todos comparten: base.py contract, _auth_headers hook, data= kwarg, circuit breaker, per-tenant token vault (AES-256-GCM con INTEGRATION_MASTER_KEY), OAuth refresh automático.

9 Motor de Workflows

Engine: LangGraph (compile + checkpoint/resume). Definiciones con steps_json. Triggers: chat, cron, webhook.

Ciclo de vida: pending → running → paused (human approval) → completed / failed.

Capacidades actuales:

Workflow Builder API (/v1/workflows/builder/*): Validación de steps (12 tipos: llm_call, tool_call, condition, loop, human_approval, wait, parallel, email_send, webhook_call, transform, memory_query, memory_store), detección de ciclos (DFS), steps inalcanzables, preview con estimados de duración/costo, reorder, y generación de workflows desde descripción en lenguaje natural vía LLM.

Workflow Builder UI (portal workflows.html): Canvas visual con drag-and-drop de nodos, 12 tipos de step, panel de propiedades por nodo, edges SVG entre nodos, validación en tiempo real (ciclos, inalcanzables), vista previa con estimados de duración/costo, y generación de workflows desde descripción en lenguaje natural vía LLM.

10 Sistema de Conocimiento (SLCE)

Self-Learning Context Extraction: Después de cada turno de chat, un modelo Bronze extrae hechos estructurados en 6 capas de conocimiento.

CapaQué capturaDefault
business_profileHechos del negocio (key-value con confidence)ON
personsPersonas mencionadas + metadataON
unwritten_rulesReglas no escritas del negocioON
operational_patternsPatrones operacionales observadosON
accumulated_knowledgeConocimiento general acumulado por topicON
financial_patternsPatrones financieros (alta sensibilidad)OFF

Embeddings: pgvector HNSW. Turnos futuros reciben snippets relevantes inyectados en el system prompt.

Correcciones: Detector regex (español + inglés) detecta “no, en realidad…”, “te equivocas” — skip extraction, escribe correction_applied audit row.

Sugerencias: Scan periódico grada topics frecuentes a filas propuestas. Cliente acepta/descarta desde /portal/sugerencias.html.

Control del usuario: Toggle layers, forget una fila, wipe un layer, wipe todo. learning_disabled per-turn opt-out.

11 Skeleton — Descubrimiento inteligente de negocio

El diferenciador fundamental de Nexus. No usa templates pre-armados — descubre cómo opera cada negocio:

  1. Ingest: Recibe snapshots de BD, índices de archivos, documentos OCR vía /v1/skeleton/ingest/*
  2. Schema Discovery: LLM analiza dump de esquema de BD (anónimo), produce mapeo Pydantic editable por tenant. Cap de $20 USD por run.
  3. Synthesis: Extrae entidades (clientes, proveedores, productos, cuentas, empleados) y procesos con confidence scores y needs_review.
  4. Proposals: Genera N workflows personalizados con goal, steps, gates de aprobación, integraciones requeridas, y estimado de ahorro en minutos/run.
  5. Review: Cliente ve el skeleton, edita, aprueba/rechaza propuestas. Aprobación materializa un workflow real.

Seguridad: Skeleton cifrado per-tenant con AES-256-GCM (tercer vault: SKELETON_MASTER_KEY). HKDF per-tenant.

Versionado: Revisiones inmutables con parent_revision_id. Máximo 1 active por tenant (enforced con partial unique index).

Vertical Playbooks (Fase 7)

12 verticales pre-cargadas como “prior knowledge” que sesga la síntesis sin reemplazar datos reales:

VerticalEjemplo de entidadesEjemplo de procesos
ContaduríaClientes contribuyentes, cuentas contablesFacturación DTE/FEL, declaraciones fiscales
Clínica MédicaPacientes, personal médico, segurosCitas, expedientes, facturación médica
HospitalPacientes, departamentos, proveedoresAdmisión, cirugías, farmacia, laboratorio
RetailProductos, tiendas, proveedoresPOS, inventario, compras, transferencias
Minimart / TiendaProductos, proveedores localesPunto de venta, reposición, merma
RestauranteMenú, mesas, proveedoresPedidos, despacho, inventario cocina
Servicios ProfesionalesClientes, proyectos, contratistasPropuestas, hojas de tiempo, facturación
ConstrucciónProyectos, subcontratistas, materialesPresupuestos, planillas, avance de obra
HotelHuéspedes, habitaciones, proveedoresReservaciones, check-in/out, room service
AeropuertoAerolíneas, pasajeros, concesionariosAsignación de gates, handling, facturación
GobiernoCiudadanos, instituciones, proveedoresTrámites, licitaciones, nómina, presupuesto
TelecomunicacionesSuscriptores, torres, equiposProvisioning, facturación recurrente, tickets

Customizable por tenant: onboarding_state.playbook_overrides permite agregar/quitar entidades, procesos y hints sin modificar el playbook base. Endpoints: GET/PUT /v1/me/vertical, PUT /v1/me/vertical/overrides.

12 Anonimización y seguridad

Tres vaults cifrados (blast radius separado)

VaultKeyProtege
PII AnonymizationANONYMIZATION_MASTER_KEYMapeos de anonimización reversible (token → plaintext)
Integration TokensINTEGRATION_MASTER_KEYOAuth tokens (access/refresh) de integraciones
Company SkeletonSKELETON_MASTER_KEYDatos del skeleton de negocio

Cada vault usa HKDF-SHA256 per-tenant con contexto info distinto. AES-256-GCM con nonce de 12 bytes.

Reconocedores PII (Centroamérica)

Presidio + spaCy español + recognizers custom. Low confidence = bloquear la llamada LLM.

Redacción de imágenes (P.2b)

MediaPipe face detection + Tesseract OCR (spa+eng) + mismos reconocedores de texto. Por tenant: off / redact_and_pass / block_on_detect. Faces se difuminan con Gaussian blur; texto PII se cubre con rectángulo negro. La imagen original en Spaces se sobrescribe (irrecuperable).

Auth: 4 métodos

MétodoUsoMecanismo
BFF CookieCustomer portalHttpOnly nexus_sid, Redis sessions, PKCE + Authentik
API KeySDK / integracionesBearer 5ai_*, bcrypt hash (12 rounds)
Nexus Session JWTCustomer SSOHS256, 12h TTL, iss=nexus-sso
Authentik JWTStaff adminRS256/ES256, JWKS validation, admin group check

Rate limiting

Redis sliding window (sorted set + Lua script). Fallback in-memory cuando Redis no está disponible. Dos capas: auth endpoints (20 RPM por IP), app endpoints (configurable por tier).

13 Facturación y planes

Planes (pricing v16 FINAL)

PlanPrecio/mesTareas incluidasOperadores
Solo (Independiente)$249LimitadasIlimitados
Equipo$499ModeradasIlimitados
Empresa$999AmpliasIlimitados
Corporativo$6,999ExtensivasIlimitados

Cada plan = N tareas/mes + multi-bucket tokens (Bronze/Silver/Gold/Platinum). Break-even: 14 clientes mix.

5 rieles de pago

ProveedorMercadoEstado
Bank TransferCA (confirmación operador)Live
WompiSV cardsLive
N1coRegional cardsLive
EzBilling ProFactura fiscal EcuadorLive
StripeInternacional (fallback)Live

State machine: pending → awaiting_confirmation → confirmed. Confirmación atomically upgrades tier.

Control de costos

14 Connector — Agente local

Desktop agent (Python 3.12) instalable en infraestructura del cliente (Windows/Linux/macOS). Dumb-pipe puro: cero lógica de negocio, cero LLMs localmente.

Arquitectura

Reglas duras

Nunca decide qué enviar. Nunca ejecuta lógica de negocio. Nunca DELETE/DROP/TRUNCATE en sistemas del cliente. Idempotencia local. Aprobación humana antes de automatización. Offline = inerte.

15 Infraestructura y Terraform

Terraform Modules (DigitalOcean)

MóduloRecursosFunción
dropletVPC + droplets + LBApp instances con HA
droplet_workerWorker dropletsFast/slow pool workers
managed_postgresDB cluster + firewallPostgres 16 HA (VPC-internal)
managed_redisRedis cluster + firewallRedis 7 (VPC-internal)
spacesDO Spaces bucketObject storage (attachments, reports)
managed_authentikDroplet + managed PGAuthentik SSO server

Mode A composition

≥2 app droplets + LB, fast workers, slow workers, Postgres HA, Redis, Spaces, Authentik. Backend: S3 (DO Spaces).

Mode B composition

≥1 app droplet + LB, Postgres (1 node, HA add-on), Redis, Spaces dedicado. Apunta a shared Authentik de Mode A. Backend: S3 con key mode_b/{tenant_id}/terraform.tfstate.

Servicios Docker (docker-compose.yml)

ServicioImagenPuerto
api./api (uvicorn)9700
worker-fast./api (arq FastWorkerSettings)
worker-slow./api (arq SlowWorkerSettings)
comm-api./comm-api8001
customer-portalpython:3.12-slim8700
admin-portalpython:3.12-slim8701
dbpostgres:16-alpine5432 (internal)
redisredis:7-alpine6379 (internal)
clamavclamav/clamav:stable3310 (internal)
lokigrafana/loki:3.2.13100 (internal)

Caddyfile de referencia

TLS termination + reverse proxy para los 3 servicios + custom domain catch-all con on-demand TLS (Epic L.3).

Systemd units

nexus-api.service, nexus-portal.service, nexus-admin.service, nexus-worker-fast.service, nexus-worker-slow.service

16 Observabilidad

ComponenteHerramientaFunción
Loggingstructlog JSON + LokiPush directo a Loki. Cada log: timestamp, level, correlation_id, deployment_id, tenant_id, user_id, operation, duration_ms, status
MétricasPrometheus + GrafanaScraping de /metrics. 5 dashboards.
AlertasAlertmanagerCritical → PagerDuty + Slack. High → Slack @here. Warn → digest batch.
TracingOpenTelemetryAuto-instrumentation: FastAPI, httpx, SQLAlchemy
ErrorsSentryError tracking con PII scrubbing. 10% trace sampling.
CorrelationX-Correlation-IdUUID-v4 por request, propagado a todos los logs/traces/jobs.

Load testing: k6 script (ops/load/chat_load.js) — 50 VUs, 5 min, p80 <3s, <0.1% errores, $0.50-$1.00 LLM spend por run. Nightly CI workflow.

17 Workers y jobs en background

Fast Queue (latency-sensitive, <60s)

JobTriggerFunción
webhook_handler_sweepEvery minDrain webhook_events, dispatch a handlers (Stripe, D7, etc.)
event_trigger_sweepEvery minTrigger workflows desde integration events
workflow_cron_sweepEvery minFire cron-triggered workflows por tenant
approvals_expiry_sweepEvery minExpirar pending_approvals vencidas
connector_publisher_sweepEvery minFire publishers de Connector pendientes
scan_attachmentOn uploadDownload, antivirus, text extract, anonymize
email_reply_sendPer messageChat handoff + SMTP reply
deliver_reportOn workflow finishRender PDF, upload Spaces, deliver
extract_knowledgePer chat turnSLCE Bronze extraction a knowledge layers
extract_business_memoryPer chat turnExtraer hechos durables a memory_items

Slow Queue (batch, long-running, ≤10min)

JobTriggerFunción
sentinel_sweepEvery 10 minAudit RLS, anonymization, cost anomalies
retention_prune_sweepHourly (:17)Borrar filas cold por age windows configuradas
overage_report_sweepHourly (:43)Reportar overage a Stripe
billing_expire_sweepHourly (:53)Expirar payment_orders vencidos
custom_domain_reverifyDaily 03:23 UTCRe-verificar TXT records de custom domains
detect_patterns_weeklyWeekly Mon 04:07Detectar patrones operacionales → suggestions
email_inbox_poll_sweepEvery 5 minIMAP polling de canales habilitados
digest_sweepHourly (:31)Build daily digest con anomaly detection
workflow_run_asyncOn triggerEjecución de workflows (LangGraph engine)
export_tenant_bundleOn demandExport tenant data a JSONL tarball

18 Sentinel — Auditor autónomo

Background monitor LLM-powered que corre cada 10 minutos:

Acciones pre-aprobadas: pause_workflow_run, lock_application (auto-wired on cost_spike), downgrade_tier, throttle_rule_config (auto-trigger via rule_violation_streak).

Costo: Atribuido a sentinel cost category via RTK. Billing separada.

Customer-facing: Findings + remediate/snooze/dismiss + CSV export en /portal/sentinel.html.

19 Estado actual — Qué funciona hoy

Funcionalidades LIVE (listas para producción)

CategoríaFeatureEstado
LLM CoreOpenAI-compatible chat gateway (7 proveedores)Live
Auto-routing por task typeLive
Quality Tiers v2 (Bronze/Silver/Gold/Platinum)Live
Platinum orchestrator (Scout → Readers → Synth)Live
Streaming SSE + incremental rule eval (configurable lookahead)Live
Model override policy (alias/pass_through/reject)Live
RTK cost attribution per call (tenant/user/workflow/channel)Live
ConversaciónWeb chat + floating dock (SSE, historial)Live
Mobile app iOS + Android (Expo 51, biometric, offline queue)Live
Voice input STT (Groq Whisper)Live
Text-to-speech TTS (ElevenLabs)Live
File + image attachments con ClamAV scanLive
SeguridadAnonimización PII reversible (texto + imágenes)Live
Image redaction (faces + OCR text)Live
3-vault encryption (PII, OAuth, Skeleton)Live
Rate limiting (Redis sliding window + auth per-IP)Live
OIDC retry/backoff + JWT log sanitizationLive
AuthBFF cookie auth (portal)Live
API key auth (bcrypt, rotation con 60s overlap)Live
Customer SSO per-tenant (OIDC + JIT provisioning)Live
Multi-IdP por tenant (N proveedores OIDC, primary flag)Live
Authentik staff auth (RS256/ES256)Live
ConocimientoSession memory (X-Nexus-Session)Live
SLCE 6-layer self-learningLive
Correction-aware learningLive
Suggestions inboxLive
Skeleton discovery + synthesis + proposalsLive
Schema mapping editable por tenantLive
Verticales12 vertical playbooks (contador, clínica, hospital, retail, minimart, restaurante, servicios, construcción, hotel, aeropuerto, gobierno, telecomunicaciones)Live
Per-tenant playbook overrides (extra/remove entities, processes, hints)Live
WorkflowsEngine LangGraph (compile + checkpoint/resume)Live
Cron + webhook + chat triggersLive
Aprobaciones human-in-loop (multi-step con asignación por paso)Live
Builder API: validación de steps, detección de ciclos, preview, generación desde NLLive
Integraciones18 adaptadores (OAuth + direct credentials), incl. EzBilling Pro + SAF (SV)Live
Circuit breaker + token vault + refresh automáticoLive
Tool dispatch en streaming (18 adapters como tools en chat SSE)Live
OAuth callback redirect (self-service connection desde portal)Live
CanalesWhatsApp inbound + outbound (Sent.dm)Live
Email inbound (IMAP) + outbound (SMTP/Gmail XOAUTH2) + DKIM signingLive
Push notifications (Expo broker, 4 triggers wired)Live
SMS outbound (D7)Live
Facturación5 rieles de pagoLive
Hard budget caps (80/95/100%)Live
Overage state machineLive
Stripe webhooksLive
Tier upgrade automático en confirmaciónLive
BrandingWhite-label (logo, colores, slogan)Live
Custom domain (Caddy on-demand TLS)Live
Branded email From: nameLive
GDPR erasure (/v1/me/forget)Live
InfraTerraform Mode A + Mode BLive
Docker Compose (10 servicios)Live
Observabilidad (Loki + Grafana + Alertmanager + Sentry + OTEL)Live
InteligenciaROI dashboard con desglose por workflow, proyecciones, CSV exportLive
Daily digests con anomaly detectionLive
Document OCR + structured extractionLive
Eval harness (5 suites: rules, task_planner, anonymization, cost_caps, response_quality)Live
SentinelInfrastructure monitoring (always-on) + rule_violation_streak auto-actionsLive
Business-scope opt-in (per-domain config, analysis pipeline)Live
Log watcher (real-time error/auth/restart anomaly detection, devops email alerts, admin portal dashboard)Live
ConnectorBinding, WSS transport, DB adapter, file crawlerLive
Platform OpsAdmin test runner (pytest batches against live DB, email on failure, portal UI)Live
Kill switch (SIS superadmin only, 503 lockdown, middleware-enforced, no dev bypass)Live
Superadmin auth gate (nexus-superadmins group, JWT-only, no API keys)Live
Auth (enterprise)Multi-IdP por tenant (N proveedores OIDC, primary flag, UUID PK)Live
SCIM 2.0 user sync (RFC 7643/7644 — Users CRUD + Groups read-only)Live
SOC 2 / ISO evidence binder (6 controles automáticos)Live
NL-querying de uso (text-to-SQL con tenant scope, allow-listed tables)Live
Ops & DRBlue/green + canary deploy support (version headers, traffic weight, promotion)Live
DR validation tooling (component assessment, failover simulation, RTO estimate)Live
Per-tenant SLA compliance (P95 latency, error rate, workflow success, audit coverage)Live
Testing203+ test files, admin portal test runner (parallel batches, devops email on failure), k6 load test nightlyLive

20 Qué falta para completar

Para que se pueda vender (NEXT — semanas, no meses)

ItemQué faltaEsfuerzoEstado
Integraciones como tools en chatTool dispatch en streaming executor + UX chips en portal + system prompt guidanceLive
Integration picker en portalOAuth callback ahora redirige a portal con toast de éxito/errorLive
Mobile app store submission (M.6)eas.json + privacy policy + store metadata listos; falta generar icons, Apple Team ID, eas build~1 semPartial
Push triggers (quota/workflow/breaker)Los 4 triggers wired con dedupe Redis (approval, quota 95%, workflow complete, breaker open)Live
Gmail OAuth status en portal emailPortal detecta gmail_oauth y oculta form; XOAUTH2 cableado en inbox poll + reply jobsLive
Streaming rule eval incrementalIncrementalRuleStreamer con lookahead configurable (env vars); eval cada 64 charsLive
Pilot 0 QA end-to-endEjecutar contra ezBilling UAT con datos reales. Requiere acceso + tenant de prueba~2 semPlanned

Para producción (PROD_CHECKLIST)

ItemQué falta
Terraform apply Mode AProvisionar ≥2 droplets, LB, managed PG HA, Redis, Authentik en DO
Secrets en secrets manager3 master keys, 6 provider keys, webhook secrets, PagerDuty/Slack keys
Grafana dashboards5 dashboards provisionados + alertas validadas
k6 24h soak10 VUs, 24h, sin errores, dashboards monitoreados
Backup + DR drillPITR restore a 1h, Spaces versioning
First-boot walkthroughCold deploy desde DEPLOYMENT.md, onboarding, primer curl
Security sweepAnonimización ≥95%, multi-tenancy read-only test, pip-audit, TLS 1.2+

21 Qué se podría agregar

Necesario (trigger claro, ya tiene diseño)

FeatureTriggerImpacto
SCIM user sync (J.4)Shipped — SCIM 2.0 Users CRUD + Groups read-only, filter support, PATCH operationsLive
Multi-IdP por tenantShipped — UUID PK, N proveedores OIDC por tenant, primary flag, (tenant_id, provider_type) uniqueLive
SOC 2 / ISO binderShippedGET /admin/compliance/snapshot recoge evidencia automática de 6 controles (CC6.1, CC6.2, CC7.2, CC6.5, CC8.1, A1.2)Live
Dedicated Comm API per tenantPremium customer con aislamiento de canalesAlta (stack de aislamiento completo Mode B)
Sentinel business-scopeShipped — Opt-in per-tenant, per-domain config (JSONB), analysis pipeline, migration 084Live
Learning loop (nightly re-synthesis)Infrastructure ready: operational_events table, recording hook en workflow_run_job, skeleton_resynth_nightly Arq job (03:47 UTC). Necesita datos reales del Pilot 0Mejora continua del modelo de negocio
Vertical playbooksShipped — 12 verticales, per-tenant overrides, synthesis prompt injection, endpoints CRUDLive

Nice-to-have (mejora significativa de experiencia)

FeatureQué haríaComplejidad
Workflow builder UI (drag-and-drop)Shipped — Canvas visual con 12 step types, drag-and-drop, validación, preview, generación desde NLLive
WhatsApp-first onboardingSign-up + tenant provisioning por WhatsAppMedia
Voice round-trip (STT + agent + TTS)ShippedPOST /v1/voice/roundtrip push-to-talk STT → chat → TTSLive
NL-querying de usoShippedPOST /v1/me/query text-to-SQL con tenant scope, 7 tablas allow-listed, SQL validation, LLM explanationLive
Sentinel auto-actions expandidasShipped: pause_workflow, lock_application, downgrade_tier, throttle_rule_config (rule_violation_streak trigger)Live
Per-tenant SLA dashboardsShippedGET /v1/me/sla (portal) + GET /v1/me/sla/compliance (SLO metrics: P95, error rate, workflow success, audit coverage)Live
Custom From: address (per domain)Enviar como no-reply@micompania.comMedia (DKIM/SPF/DMARC per tenant)
Más adaptadoresShipped — EzBilling Pro (facturas, CCF, DTE, clientes, ventas SV) + SAF (presupuestos, transacciones, partidas, estados financieros SV gobierno). Total: 18Live
Shared-number WhatsAppMulti-tenant en un solo número WAMedia (modelo de negocio)
Blue/green + canary deploysShipped/admin/deployment, /health/canary, /health/version con version headers, traffic weight, canary promotion readinessLive
DR validation toolingShipped/admin/dr/assessment (5 component checks, RTO estimate) + simulación de failover DB/RedisLive

22 Dependencias y stack técnico

Backend (Python 3.12)

CategoríaLibrerías
FrameworkFastAPI 0.115, Uvicorn, Pydantic v2 (extra=“forbid”), Jinja2
LLMLiteLLM 1.56 (wrapped en ModelRouter)
DatabaseSQLAlchemy 2.0 async, asyncpg, Alembic, pgvector
AuthPyJWT (crypto), cryptography (AES-256-GCM)
HTTPhttpx 0.27 (async only, nunca requests)
Cache & Queueredis 5.2, Arq 0.26
Emailaiosmtplib, aioimaplib
WorkflowLangGraph 0.2
Storageaioboto3 (DO Spaces / S3)
Observabilitystructlog, prometheus-client, sentry-sdk, opentelemetry-*
Documentspypdf, python-docx, Pillow, pytesseract, python-pptx (lazy-loaded)
Securitypasslib (bcrypt), argon2-cffi
SSHasyncssh (tunnels para data sources)
Croncroniter
DNSdnspython (domain verification)

Frontend

SurfaceStack
Customer PortalHTML + vanilla JS + CSS (no build, no bundler)
Admin PortalHTML + vanilla JS + Vite (build only)
Web AppNext.js 14.2, React 18.3, Zustand 4.5, TypeScript, react-markdown
MobileExpo 51, React Native 0.74, SecureStore, expo-notifications

Infra

ComponenteVersión
PostgreSQL16-alpine (+ pgvector)
Redis7-alpine
ClamAVstable (signatures cached)
Loki3.2.1
CaddyLatest (on-demand TLS)
AuthentikSelf-hosted (2 instances HA)
TerraformDigitalOcean provider
DockerMulti-stage builds

23 Testing

196 archivos de test cubriendo:

CategoríaTestsCobertura
Chat Pipeline15 files (stages, executors, pipeline integration)Cada stage, streaming/non-streaming, failure path telemetry
Anonimización5 files (text, image, tool-call, vault properties)PII vault, reconocedores CA, image redaction
Integraciones18+ files (each adapter)Auth headers, refresh, body shape, idempotency, tool dispatch per-adapter
Billing6 filesStripe, overage, cost caps, orders state machine
Sentinel6 filesTriggers, actions, rule_violation_streak throttle, fleet cost, tenant admin
Workflows7 filesEngine, JSON interpreter, cron triggers, LangGraph compile
Connector3 filesBinding, redemption, publishers
Skeleton8 filesCrypto, edit, ingest, proposals, synthesis, schemas
Multi-tenancy6 filesRLS, visibility, identity tables, GUC injection, tenant isolation
AuthMultipleAPI keys, SSO, BFF+PKCE portal auth, SCIM DTOs, rate limiting
Eval Harness5 suitesRules, task planner, anonymization, cost caps, response quality (9 deterministic cases)
Smoke (new features)8 files, 334+ testsModels, routes, auth, utils, anonymization, services, config, new features (SCIM, NL-query, compliance, workflow builder, adapters, deploy, DR, SLA)

Admin test runner: POST /admin/tests/run triggers pytest split into parallel batches against the live database (UAT or prod). Results polled via GET /admin/tests/results/{run_id}. Failures auto-email to devops. Portal page at /tests.html with batch detail + run history.

Integration testing: Suite completa corre contra UAT Postgres (asyncpg + NullPool + GUC server_settings).

Coverage fail-under: 70% en módulos críticos de seguridad (anonymization, forget, erasure, tenancy, cost, router).

Herramientas: pytest-asyncio, pytest-httpx, fakeredis, aiosqlite, hypothesis (property-based), mutmut (mutation testing quarterly).

Load testing: k6 nightly CI — 50 VUs, 5 min soak, assertions on p80 latency + error rate + session drops.


Nexus Technical Specifications · Mayo 2026 · Manifiesto v2.2
Smart Insight Solutions · El Salvador