Qué se construyó, cómo funciona, en qué estado está y cuáles son las etapas hasta la puesta en marcha operativa.
Corte de evidencia: 9 de septiembre de 2026Entorno: hermes-fact.916.coordenadas.coVPS srv1666492
Resumen ejecutivo
La base técnica existe; el bloqueo es de propiedad
Hermes está desplegado y operativo. La base de conocimiento está conectada, el gateway de QuickBooks funciona en modo seguro, ambos servicios probados con datos reales, e infraestructura soporte (Coolify, Tailscale, Honcho, n8n) está activa.
El bloqueo inmediato es una acción de Factronics: comprar OpenCode Go para que Hermes corra bajo una cuenta, credenciales y facturación propias. Hoy usa una credencial temporal de Coordenadas.
Bloqueo externo inmediato
hermes-fact está conectado a opencode-go con modelo glm-5.3 vía un proxy que maneja la sesión requerida. La ruta técnica funciona (respuestas HTTP 200), pero usa una credencial temporal de Coordenadas. Factronics debe comprar OpenCode Go y entregar su propia credencial para lograr independencia operativa y titularidad de costos desde el día 1.
A partir de ahí, el trabajo restante está organizado en cuatro etapas: desbloqueo, traspaso técnico de IA, activación funcional y UAT + hipercare. Cada componente de este informe indica en qué etapa se resuelve. Ver «Plan de cierre recomendado».
kb-mcp saludable; 5 herramientas registradas en Hermes
Gateway QuickBooks
Desplegado · modo seguro
Gateway y sidecar Tailscale saludables; 130 herramientas registradas; GATEWAY_READ_ONLY=true
Fleet de agentes especializados
Diseñado · no provisionado
El servidor solo muestra el perfil default
Automatizaciones n8n
Plataforma activa · workflows en curso
WF-001, WF-006 y WF-007 definidos; WF-002 a WF-005 en la Etapa 3
Panel de control
Interfaz desplegada · datos en Etapa 3
Aplicación accesible; opera sobre datos mock y kill switch local
Backup de QuickBooks
Pipeline implementado · por automatizar
Requiere cron en hermes-fact, formato .QBB, copia offsite y restore drill
Doc Extractor
Etapa 3
Requerido por WF-001 y por el caso escaneado de la Cláusula 1
Integración HubSpot
Etapa 3
Requiere conector, token y los workflows WF-002 y WF-004 (agente Onboarding completo)
Operations Supervisor / Asana
Etapa 3
Requiere conector de Asana, WF-003 y el monitoreo de certificados de reventa
Telegram
Etapa 3
Requiere cargar el token del bot de Factronics
Nota metodológica
El estado se expresa por nivel de madurez —construido, validado, operativo— para distinguir con precisión en qué punto está cada componente.
Propuesta v2.0 + 3 cláusulas
Cobertura del contrato
Entregables
3 hechos
5 en curso
6 en plan
Entregable contratado
Estado
Nota
Arquitectura completa + VPS / Coolify / n8n
Hecho
Desplegado y saludable en srv1666492
QB Web Connector (endpoint SOAP)
Hecho · solo lectura
Gateway operativo, /qbwc activo, sidecar Tailscale hacia ADMINLIZETT
API de Hermes con 4 agentes
Parcial
Bundle del fleet construido; en el servidor solo el perfil default
5 workflows de n8n (WF-001 a WF-005)
1 de 5 · validación estática
WF-001 definido; WF-002 a WF-005 se construyen en la Etapa 3
Custom GPTs → conocimiento del agente
Reemplazo de arquitectura
Se descartó OpenAI Assistants API; el contrato pide capas HCL curadas. Se construyó además una base de conocimiento MCP (más potente) que no sustituye la estructura HCL
Integración bidireccional y autónoma con HubSpot
Etapa 3
Requiere conector, token y WF-002 / WF-004
Control Panel para Jovan
Interfaz desplegada · datos en Etapa 3
Opera sobre datos mock; la Etapa 3 aporta datos reales, kill switch con enforcement y autenticación por roles
PostgreSQL: esquemas, migraciones, auditoría
Parcial
hermes-db activo; el panel todavía no lee audit_log real
Documentación operativa completa
Etapa 4
Se entrega junto con la capacitación
Capacitación del equipo de Factronics
Etapa 4
Programada con Jovan y el equipo contable
Doc Extractor (markitdown → Tesseract → visión)
Etapa 3
Requerido por WF-001 y por el caso escaneado de la Cláusula 1
Operations Supervisor + Asana + certificados de reventa
Etapa 3
Agente 3 completo, se despliega con los conectores de Asana
Costos de API a cuenta de Factronics desde el día 1
Etapa 1–2
Hoy corre con crédito temporal de Coordenadas; se traslada a la cuenta de Factronics en el traspaso
Cláusulas contractuales — ruta de cumplimiento
Cláusula 1 — Precisión ≥98% (gate del pago final)
Etapa 4
UAT formal de 50 casos de negocio end-to-end, con al menos un caso escaneado/imagen, aprobado por escrito por Jovan Gutic. Se ejecuta en la Etapa 4, una vez que los cuatro agentes estén provisionados. Las evaluaciones ya realizadas —base de conocimiento 77–97%, campaña del gateway sobre QuickBooks real— cubren componentes aislados y sirven como línea base. Si el UAT no alcanza el 98%, el contrato concede 15 días hábiles de corrección sin costo.
Cláusula 2 — Draft-only, Kill Switch y Audit Log verificados desde la Fase 2
Etapa 3
El contrato exige que los tres controles estén probados con una prueba real, no solo construidos, antes de que cualquier agente pase a producción. Avance por control: draft-only ya está garantizado en el gateway por GATEWAY_READ_ONLY=true; el Audit Log existe como tabla y queda pendiente conectarlo al panel; el Kill Switch del panel es visual y se conecta a enforcement real en la Etapa 3, que cierra con la prueba end-to-end de los tres controles.
Cláusula 3 — Hipercare (gate del 15% retenido)
Etapa 4
30 días con revisión quincenal de KPIs de latencia y estabilidad del QBWC, más firma de aceptación de Jovan al día 30 para liberar el 15% retenido. Es el hito de cierre (Fase 7) y arranca con producción. Lo precede el requisito de la Fase 6: 5 días de monitoreo intensivo post-deploy.
01 · Hermes de Factronics
La capa de interacción y razonamiento
Qué es y qué hace
Hermes coordina cuatro áreas de negocio: Contabilidad (lectura de órdenes de compra, borradores en QuickBooks), Inbox (clasificación de correos, borradores), Operaciones (seguimiento en Asana), Onboarding (altas de clientes desde HubSpot). El diseño mantiene supervisión humana: prepara borradores y solicitudes de aprobación, no realiza cambios sensibles sin consentimiento.
Estado comprobado en el servidor
El contenedor correcto es hermes-r6b1qln7l7f5tivsnl4idmn9, identificado en Coolify como proyecto factronics, recurso hermes-factronics y dominio hermes-fact.916.coordenadas.co. Está activo y saludable.
La instancia ejecuta Hermes Agent v0.20.0 y está configurada con:
Proveedor: opencode-go
Modelo principal: glm-5.3
Base de conocimiento MCP: conectada
Gateway QuickBooks MCP: conectado
Memoria Honcho: desplegada y con sesiones recuperadas correctamente en el arranque reciente
Hermes registró 135 herramientas MCP: 5 correspondientes a la base de conocimiento y 130 al gateway de QuickBooks.
Por provisionar
Etapa 3
La instancia corre hoy con el perfil default. Los seis perfiles preparados para Factronics —orchestrator, contable, inbox, operations, onboarding y gateway— se provisionan en la Etapa 3, junto con las tareas kanban y los jobs programados.
En esa misma etapa el archivo de identidad (SOUL.md) pasa del texto genérico de Hermes a la identidad, tono y reglas operativas de Factronics ya incluidas en el bundle del fleet.
02 · Dependencia de OpenCode Go
El suministro de IA del sistema
Por qué es necesaria la compra
Hermes orquesta el flujo pero no ejecuta el razonamiento: cada solicitud se envía a OpenCode Go. Es el suministro IA y no es opcional. La cuenta propia de Factronics permite:
Que el consumo y la facturación pertenezcan al cliente.
Evitar dependencia de credenciales o límites de la cuenta de Coordenadas.
Definir presupuesto, límites de uso y continuidad del servicio.
Ejecutar la aceptación productiva con el mismo proveedor que quedará en operación.
Separar técnica y contractualmente los datos y consumos de Factronics de otros proyectos.
Qué ya se resolvió técnicamente
OpenCode Go exige cabecera de sesión x-opencode-session. Se desplegó el proxy hermes-ocgo-proxy que inyecta hermes-fact-916 y mantiene la interfaz esperada. Tras el cambio:
El catálogo de modelos responde correctamente.
Las solicitudes de chat llegaron a OpenCode Go con la sesión identificada.
El proxy registró respuestas HTTP 200.
Hermes quedó configurado para usar glm-5.3 a través de ese proxy.
La ruta técnica está resuelta. Solo queda reemplazar la credencial temporal por la de la cuenta pagada de Factronics.
Acción requerida de Factronics
Comprar o activar el plan de OpenCode Go bajo una cuenta controlada por Factronics.
Designar quién administrará la cuenta, el método de pago y los límites de consumo.
Entregar la credencial por un canal seguro o cargarla directamente en Coolify; no debe enviarse por correo, Telegram ni almacenarse en Git.
Autorizar una prueba controlada de consumo y confirmar que la facturación aparece en la cuenta correcta.
Trabajo técnico posterior a la compra
Sustituir en Coolify el secreto OPENCODE_GO_API_KEY por el de Factronics.
Reiniciar hermes-fact y verificar catálogo/modelo.
Ejecutar una consulta general, una consulta con la base de conocimiento y una lectura de QuickBooks.
Confirmar en logs que no existen errores de autenticación, crédito, sesión o cuota.
Retirar la credencial temporal de Coordenadas y registrar el traspaso operativo.
03 · Base de conocimiento
Los manuales reales, citables y en producción
Qué hace
Permite que Hermes responda con los manuales reales de Factronics, citables y verificables. Convierte PDFs, divide contenido, indexa híbrido (keyword + vector) y publica como servicio MCP.
Búsqueda combina:
FTS5/BM25 para códigos, términos exactos y números de parte.
Vectores multilingües para preguntas formuladas con otras palabras.
Reranking por manual, conceptos y contexto.
Un máximo de ocho fragmentos por consulta.
Referencia al manual y la página de origen.
Avance comprobado
Corpus de 94 PDFs provenientes de siete Custom GPTs de Factronics.
14.379 notas enriquecidas y 33.233 chunks en la última construcción documentada.
Servicio kb-mcp desplegado y saludable en la red privada.
Hermes registra correctamente sus cinco herramientas.
Evaluación Linx 9900: 233 aciertos de 302 preguntas (77,2%), 15/15 procedimientos correctos, cero manuales equivocados y cero rechazos del gate.
Evaluación complementaria sobre ocho manuales: 97% de hallazgo en español, 94% en inglés y cero alucinaciones observadas.
Prueba end-to-end con Hermes: 20/20 respuestas con contenido real; 15/20 con cita exacta, tres respuestas generales válidas y dos solicitudes de aclaración apropiadas.
Próximos pasos
Próximos pasos
Confirmar una nueva prueba end-to-end después de instalar la cuenta OpenCode Go de Factronics.
Verificar de forma explícita la no regresión de Honcho junto con la base de conocimiento.
Incorporar tres documentos de Brand Voice que el diseño del fleet identifica como no indexados.
Como mejoras posteriores: indexado incremental, recuperación citable de imágenes/diagramas, corpus multilingüe y feedback loop de correcciones.
04 · Gateway de QuickBooks
Conexión segura con QuickBooks Desktop
Qué hace
Conecta Hermes a QuickBooks Desktop vía QBWC en capas:
Endpoint SOAP que atiende el ciclo de QBWC.
Traductor entre JSON y qbXML.
Cola SQLite para solicitudes y respuestas asíncronas.
Interfaces MCP y REST para que Hermes y el panel puedan consultar jobs y aprobaciones.
Avance comprobado
Gateway desplegado y saludable en el VPS.
Sidecar Tailscale saludable y conectado con adminlizett, el servidor Windows de QuickBooks.
28 entidades modeladas y aproximadamente 130 herramientas.
180 tests automatizados documentados.
Campaña real sobre Factronics USA: 28 lecturas de entidades y cuatro tipos de reporte.
13/13 transacciones de prueba creadas y eliminadas correctamente.
12/15 listas de prueba creadas y revertidas.
Correcciones hechas con evidencia real para reportes, orden de campos, estructuras anidadas y diferencias del SDK de QuickBooks.
Seguridad actual
Modo seguro
GATEWAY_READ_ONLY=true impide toda escritura automática. API pública deshabilitada. Aprobación requerida para cambios. Hermes ve herramientas de escritura pero no puede ejecutarlas.
Próximos pasos
Revertir tres listas de prueba (ItemService, ItemOtherCharge e ItemNonInventory) cuando se disponga del password de fecha de cierre de QuickBooks.
Corregir el filtro no bloqueante modifiedSince.
Mantener el gateway en solo lectura hasta cerrar limpieza, revisión de seguridad y UAT.
Aplicar en los perfiles definitivos listas reducidas de herramientas: contabilidad y onboarding no deben recibir acceso general a las 130 herramientas.
05 · Fleet de agentes
Seis perfiles construidos, listos para provisionar
Qué se construyó
Bundle desplegable con seis perfiles:
Perfil
Función
orchestrator
Recibe solicitudes y las divide en tareas
contable
PO a borrador de QuickBooks y control de discrepancias
inbox
Clasificación y borradores de correo con Brand Voice
operations
Auditoría de Asana y resúmenes operativos
onboarding
Closed Won a validación y alta de cliente
gateway
Mantenimiento controlado del código del gateway
Incluye reglas por perfil, límites de herramientas, auditoría, kill switch y kanban/Asana. El código está listo; provision.sh se ejecuta en la Etapa 3, una vez que Factronics tenga su cuenta OpenCode Go, para que los seis perfiles se validen con la cuenta que queda en producción.
Ajuste previo al despliegue
Ajuste previo al despliegue
En el working tree local del fleet hay un cambio sin commit que pone allow_all_users: true en el Telegram del orquestador, mientras que el comentario y la política indican acceso exclusivo para Jovan y Pablo. Se restaura la allowlist explícita antes de provisionar.
06 · Automatizaciones n8n
Plataforma activa, workflows en construcción
n8n desplegado y saludable. Se prepararon tres workflows como código:
WF-001: ingreso de órdenes de compra desde Gmail hacia Hermes/kanban.
WF-006: espejo de tareas kanban hacia Asana.
WF-007: reconciliación de cambios de Asana hacia Operations.
Validados estáticamente; se importan y activan en la instancia real durante la Etapa 3, junto con:
En Etapa 3
WF-002: Inbox Copilot.
WF-003: Operations Supervisor programado.
WF-004: Onboarding desde HubSpot.
WF-005: Kill Switch conectado al panel.
Credenciales reales de Gmail, HubSpot, Asana y Telegram.
Confirmar NODE_FUNCTION_ALLOW_BUILTIN=crypto.
Seleccionar workspace/proyecto/secciones reales de Asana.
Ejecutar un ciclo completo por cada dominio.
07 · Panel de control
Interfaz desplegada, conexión a datos en Etapa 3
Interfaz desplegada en fact-control.916.coordenadas.co con navegación, estados, feed, detalle de acciones y kill switch visual. Hoy opera sobre datos mock. En la Etapa 3 se conecta a datos reales:
Leer audit_log real.
Mostrar estados y resultados reales de los agentes.
Conectar las aprobaciones del gateway.
Conectar el kill switch a la tabla y al script de enforcement.
Integrar los estados de n8n, Gmail, HubSpot y QuickBooks.
Incorporar autenticación y roles para Jovan, contabilidad y administración.
Con esas conexiones, el panel pasa de interfaz desplegada a herramienta operativa.
08 · Backup y recuperación
Pipeline construido, restauración por validar
backup_qb.py genera snapshot VSS, copia .QBW/.TLG y carpetas, comprime y retiene 3 versiones (artefacto real ~2GB). En la Etapa 3 se completa con:
Incluir el backup nativo .QBB, que es el formato restaurable soportado por QuickBooks.
Verificar tamaño e integridad del ZIP después de la transferencia.
Copiar una segunda versión offsite a Google Drive de Factronics.
Configurar alerta si un mes no produce backup.
Registrar y probar el cron en el VPS, considerando que el servidor usa UTC.
Ejecutar un restore drill en una instancia no productiva de QuickBooks.
Por validar
El backup se declara operativo cuando el restore drill confirme que una copia es efectivamente restaurable.
09 · Configuración operativa
Puesta a punto
Cargar el token de Telegram de Factronics en el gateway de Hermes.
Crear los cuatro grupos acordados: Contable, Inbox, Operations y Onboarding, además del canal de control si se mantiene.
Confirmar la taxonomía A/B/C/D/X con Jovan.
Confirmar proyecto y secciones de Asana.
Definir usuarios, roles y responsables de aprobación.
Completar pruebas con órdenes de compra, correos y casos de onboarding reales.
Capacitar a Jovan y al equipo contable.
Ejecutar monitoreo intensivo durante los primeros cinco días de producción.
Medir ahorro, precisión y ROI sobre una ventana suficiente de uso real.
10 · Doc Extractor
El habilitador de WF-001
Microservicio Python/FastAPI, endpoint POST /extract, tres niveles: markitdown (PDF nativo), Tesseract OCR español/inglés (escaneos), visión pagada (fallback). Convierte órdenes de compra nativas o escaneadas en texto limpio para el agente contable.
Etapa 3
Habilita dos cosas: que WF-001 procese POs escaneadas y que el UAT de la Cláusula 1 pueda cubrir su caso de imagen. Con un modelo texto-only —el DeepSeek V4 Flash contractual— es la única vía para leer un documento sin capa de texto.
11 · Integración HubSpot
Bidireccional y autónoma: dos frentes en Etapa 3
Contrato exige integración bidireccional y autónoma en dos frentes:
WF-002 · Etapa 3
Inbox Copilot (WF-002)
Además de clasificar y redactar borradores, crea contactos y avanza etapas de deal en HubSpot cuando la confianza supera 0.85. Es la excepción explícita al principio de human-in-the-loop, acotada porque las notificaciones que dispara el cambio de etapa son texto fijo.
WF-004 · Etapa 3
Onboarding (WF-004)
El webhook de HubSpot “Closed Won” dispara el envío de formularios al cliente, la extracción del PDF de respuesta, la verificación de EIN y certificado de reventa en fuentes públicas y el alta del cliente en QuickBooks vía QBWC, con vuelta a HubSpot.
Ambos frentes requieren el conector de HubSpot y su Private App token. Cubren el agente Onboarding completo y la mitad de escritura del Inbox Copilot.
12 · Operations Supervisor / Asana
Auditoría de Asana y certificados de reventa
Operations Supervisor audita Asana, vigila fechas límite y responsables, envía resúmenes a Telegram (WF-003, schedule lun-vie 8:00). Incluye monitoreo recurrente de certificados de reventa (proceso nuevo del descubrimiento).
Etapa 3
Requiere conector de Asana con su API key, WF-003 y la tarea programada de certificados. El bundle del fleet aporta además WF-006 y WF-007 (espejo kanban ↔ Asana), que se activan en la misma etapa. Del set contratado WF-001 a WF-005, hoy existe WF-001.
13 · Estructura HCL de los cuatro agentes
Curación a mano, no RAG
Contrato define base curada a mano, no RAG: CONTRACT.md + prompt.md + reference/ por agente, más IDENTITY.md, ROUTING.md y shared/ con known_customers.yaml (34+ clientes), qb_config.md, security_policy.md, topic_routing.yaml, voice_jovan.md.
kb-mcp (FTS5 + vectores, 94 PDFs) es un componente adicional y más potente, pero no sustituye la HCL: es la HCL la que fija reglas operativas, umbrales de confianza (85% → alerta) y listas reducidas de herramientas por perfil. Vive en el bundle del fleet y se instala en la Etapa 3.
14 · Desvío de arquitectura
DeepSeek V4 Flash → OpenCode Go
Roadmap v1.1 fijó DeepSeek V4 Flash. Contrato: costos de API corren por Factronics desde día 1. Instancia desplegada usa OpenCode Go + glm-5.3 vía proxy, con credencial temporal de Coordenadas. Implicaciones:
Es un cambio respecto de la decisión de arquitectura registrada; conviene confirmarlo por escrito con Jovan.
El estimado de costos del contrato (~$20–40/mes OpenAI) se reemplaza por la suscripción a OpenCode Go: eso es lo que Factronics compra.
El traspaso de titularidad de la facturación de IA se completa en las Etapas 1–2.
Ruta a producción
Plan de cierre recomendado
1
Desbloqueo
2
Traspaso IA
3
Activación
4
UAT + Hipercare
01
Responsable: Factronics
Etapa 1 — Desbloqueo externo
Comprar OpenCode Go.
Nombrar administrador y definir presupuesto/límites.
Entregar o cargar de forma segura la credencial.
Criterio de salidaLa cuenta, el consumo y la facturación pertenecen a Factronics.
02
Responsable: Coordenadas
Etapa 2 — Traspaso técnico de IA
Sustituir OPENCODE_GO_API_KEY.
Reiniciar y validar hermes-fact con glm-5.3.
Probar respuesta general, conocimiento y QuickBooks de lectura.
Verificar logs y retirar el acceso temporal.
Criterio de salidaHermes responde exclusivamente con la cuenta de Factronics.
03
Etapa 3 — Activación funcional
Corregir la allowlist de Telegram y provisionar los seis perfiles con identidad y reglas de Factronics.
Instalar la estructura HCL de los cuatro agentes: known_customers.yaml, qb_config.md, topic_routing.yaml, voice_jovan.md, umbrales de confianza y listas reducidas de herramientas por perfil.
Desplegar el Doc Extractor (markitdown → Tesseract → visión) y probarlo con un PDF nativo y uno escaneado.
Cargar credenciales reales: Telegram, dos cuentas de Gmail (accounting@ y jovan@), Asana, HubSpot.
Construir e importar los workflows restantes: WF-002 (Inbox + HubSpot), WF-003 (Operations/Asana), WF-004 (Onboarding “Closed Won”), WF-005 (Kill Switch), más el monitoreo de certificados de reventa.
Conectar el panel a datos reales: audit_log, estados de agentes, aprobaciones del gateway, y el Kill Switch a un enforcement real; agregar autenticación y roles.
Cerrar el backup: .QBB restaurable, copia offsite, cron en el VPS y restore drill en una instancia no productiva.
Criterio de salida — Cláusula 2Kill Switch, Audit Log y draft-only verificados con una prueba real end-to-end; un flujo de prueba por dominio termina con evidencia en audit_log y sin acciones autónomas no autorizadas.
04
Etapa 4 — UAT, producción e hipercare
Definir y ejecutar el UAT formal de 50 casos (Cláusula 1), con mezcla representativa y al menos un caso escaneado/imagen.
Documentar el resultado: si ≥98%, se libera el pago final; si no, 15 días hábiles de corrección sin costo.
Capacitación con Jovan y el equipo contable, y entrega de la documentación operativa final.
Go-live con el gateway en solo lectura / draft-only, más 5 días de monitoreo intensivo.
Habilitación gradual de escrituras aprobadas.
Hipercare (Cláusula 3): 30 días con revisión quincenal de KPIs del QBWC; firma de aceptación de Jovan al día 30 → libera el 15% retenido.
Criterio de salidaUAT ≥98% aprobado por Jovan, operación estable durante el hipercare y firma de aceptación, con el sistema bajo cuentas propiedad de Factronics.
Conclusión
La ruta desde el estado actual hasta producción
Hermes, la base de conocimiento y la conexión con QuickBooks ya existen, están desplegados y probados con datos reales. El siguiente paso es de propiedad: Factronics compra OpenCode Go y el sistema pasa a operar con cuenta, credenciales y facturación propias.
Desde ahí, el camino está trazado en cuatro etapas y cada componente de este informe indica en cuál se resuelve. Queda una decisión que conviene formalizar con Jovan: el desvío de DeepSeek V4 Flash a OpenCode Go.