Silvana × HEYAY LABS · Diagnóstico técnico

Diagnóstico técnico y arquitectura propuesta

Integración del flujo comercial con SAP Business One: diagnóstico, arquitectura recomendada y costos de operación, a partir de la información que compartió el equipo de Silvana.

Para: Carlos Ramírez y el equipo de TI de Silvana · De: HEYAY LABS · Junio 2026

El objetivo del piloto

Antes del stack y los costos, qué buscamos lograr. Todo lo demás existe para esto.

Que un pedido —entre por donde entre (WhatsApp, teléfono, sucursal, correo, Handy)— se convierta automáticamente en una orden correcta en SAP: interpretada, con su precio especial, validada en crédito, con inventario y tránsito reales, y con fecha de entrega comprometida. El vendedor deja de capturar y se dedica a vender.

En producción el 15 de agosto. Pasos 1–7.

Qué se necesita para llegar — las 8 capacidades

El puente entre el objetivo y el stack: qué tiene que pasar, qué lo resuelve, de qué depende.

Capacidad (qué tiene que pasar)Qué la resuelveDepende de
1. Llegar a SAP sin abrir su redTúnel saliente (cloudflared)Política del firewall · equipo Windows
2. Capturar el pedido de cualquier canalAdaptadores WhatsApp/correo/audio/imagen/HandyAPI de Handy · WhatsApp API
3. Entender el pedidoOpenAI (texto/imagen) + transcripción + pgvectorTranscripción
4. Poner el precio correctoMotor de precios sobre el espejo de SPP1/OPLNSincronización por Service Layer
5. Decidir el créditoMotor de bandas +20/+30/+60 + ruteo de autorizaciónMatriz de autorizadores
6. Saber disponibilidad realATP = existencias SAP + tránsito − comprometidoLa webapp de captura (tránsito)
7. Comprometer fecha de entregaMotor de promesa (ATP + ETA)Estructura del tránsito actual
8. Escribir la orden en SAPCola asíncrona → Service LayerUsuario de servicio · ventana · timbrado

Requisitos de arranque (accesos, no código)

El proyecto se desbloquea con accesos. Estos son los que necesitaremos del lado de Silvana:

  1. Base de datos de prueba disponible (es la ruta crítica hacia el 15 de agosto).
  2. Definición de dos puntos que determinan la arquitectura: ¿el firewall corta todo el tráfico fuera de horario? ¿se permite sincronizar datos hacia la nube?
  3. Apoyo de Tesselar (su implementador SAP): usuario de servicio, documentación de las interfaces existentes y de los UDF, y el flujo de timbrado.
  4. La estructura actual del material en tránsito (hoy en Excel) para modelar la captura y el ATP.
  5. Documentación y credenciales de la API de Handy.

Cómo se evaluará el piloto — las métricas

Proponemos firmar estas métricas como baseline en el arranque y medirlas al cierre:

Resumen del stack propuesto

Arquitectura híbrida de servicios administrados: Vercel para la app · Fly.io para el procesamiento siempre encendido · Cloudflare para el túnel a SAP y el data lake · Supabase (Postgres) para los datos · OpenAI para la inteligencia. Cada pieza tiene una ruta de migración a AWS cuando el volumen lo exija (ver "Ruta de escalamiento").

CapaServicioCosto
Conectividad a SAPCloudflare Tunnel$0
Entrada WhatsAppMeta Cloud API directo$0 BSP + mensajes
Entrada correoCloudflare Email Routing$0
Transcripción de audioOpenAI gpt-4o-mini-transcribe~$5–15/mes
Lectura de imagenOpenAI visión (GPT-5.4)incluido
InteligenciaOpenAI GPT-5.4 mini/nano (5.4 difíciles)~$60–130/mes
Búsqueda de SKUpgvector en Postgres$0
Data lakeCloudflare R2~$1/mes
Data warehouse + authSupabase (Postgres)$25/mes
Webapp + webhooksVercel (Next.js)$20/mes (Pro)
Procesamiento 24/7Fly.io (worker + cola)~$5–15/mes
Errores / observabilidadSentry + logs nativos$0 (→ $26)
Secretos / CI-CD / DNSVercel · GitHub · Cloudflare~$1/mes
Costo de operación aproximado: ~$80–150/mes durante el piloto → ~$250–450/mes a volumen pleno (8,500 pedidos/mes).

Es un costo de infraestructura operativo y bajo, independiente del alcance de la alianza.

El contexto que define el diseño

Tres datos del entorno de Silvana determinan casi todas las decisiones:

  1. Volumen chico-mediano (~8,500 pedidos/mes, 5,300 SKUs, 24k precios especiales). Postgres lo maneja sin problema; no se justifica un warehouse de gran escala (Snowflake/BigQuery/Redshift) en esta etapa.
  2. VPN por horarios y sin abrir la red. El acceso a SAP es el punto técnico central; la conectividad pesa más que la capacidad de cómputo.
  3. El código y la arquitectura quedan en Silvana. Esto premia la simplicidad, el costo bajo y la mantenibilidad.

Criterio general: no contratar capacidad que no se necesita todavía. Se empieza simple y se escala cuando el volumen lo exija.

Decisiones de arquitectura

1. Plataforma base

Proponemos un conjunto de servicios administrados (Vercel + Cloudflare + Fly + Supabase), no la administración directa de infraestructura cruda. Ninguna pieza por sí sola cubre las necesidades distintas del proyecto: Vercel es lo más eficiente para la app; Cloudflare aporta el túnel a on-premise y un data lake sin costos de egress; Fly aporta el proceso siempre encendido que el requisito 24/7 vuelve necesario; Supabase aporta el Postgres con servicios integrados.

2. Data lake

Recomendamos Cloudflare R2 para los archivos no estructurados (audio, imagen, correos). No tiene costos de egress, que importan porque estos archivos se leen varias veces para alimentar a la IA. Es compatible con S3, por lo que la migración futura es directa.

3. Data warehouse

Recomendamos Supabase (Postgres administrado). A este volumen es una base de datos pequeña: Postgres la maneja sin problema, es un estándar conocido y mantenible, soporta JSON para los UDF de SAP, e incluye pgvector para la búsqueda semántica de SKUs. Supabase además aporta autenticación y almacenamiento integrados, lo que simplifica la webapp de captura.

Ruta de escalamiento: si el volumen crece más allá de lo que Supabase atiende cómodamente, se migra al servicio equivalente en AWS (Aurora o RDS Postgres) sin cambiar el modelo de datos.

4. Conectividad a SAP

Es el punto técnico central. Lo desarrollamos a detalle.

El problema

El Service Layer de B1 es un servidor HTTPS dentro de la red de Silvana (https://<servidor-sap>:50000/b1s/v1), hoy alcanzable solo por VPN y restringido a horarios. La política es no abrir la red. Nuestra plataforma necesita leer (sincronizar) y escribir (crear órdenes).

La propuesta: túnel saliente

En lugar de abrir un puerto de entrada, un agente liviano corre en el equipo Windows de Silvana y establece una conexión saliente (solo salida, puerto 443) hacia nuestra plataforma, formando un canal cifrado permanente. Nadie entra a la red de Silvana; el equipo lo controla Silvana y puede apagarlo cuando lo decida.

Dos definiciones que determinan la arquitectura

El "VPN por horarios" puede significar dos cosas, y cada una cambia el diseño:

Esta es la primera definición que necesitamos confirmar. No cambia la propuesta de túnel; cambia si la escritura es en tiempo real o diferida.

Operación 24/7 — qué se necesita

Como entran pedidos a cualquier hora, lo ideal es que el sistema opere 24/7. Hay que separar dos capas:

  1. Recibir, interpretar, cotizar, validar crédito y dar fecha de entrega ya puede ser 24/7, porque se resuelve contra el espejo de datos en la nube, no contra SAP en vivo. El cliente siempre puede pedir y recibir confirmación.
  2. Escribir la orden dentro de SAP en el momento requiere que SAP esté alcanzable. Para que sea 24/7 real se necesita: equipo, SAP, HANA y Service Layer encendidos las 24 horas; firewall que permita el túnel saliente las 24 horas (Escenario A); un usuario de servicio dedicado, independiente del horario del VPN de personas; y un worker siempre encendido que mantenga la cola.
  3. Si se prefiere no tener SAP alcanzable de noche (Escenario B): el sistema igual opera 24/7 de cara al cliente; la orden solo entra a SAP cuando abre la ventana, sin que el cliente lo perciba.
Recomendación: mantener el túnel saliente activo las 24 horas (Escenario A). Es la opción más limpia y de bajo riesgo, y habilita la escritura en tiempo real.

Verificaciones técnicas del arranque

  1. Línea de vista de red: que el equipo Windows alcance SAP (curl -k https://<sap>:50000/b1s/v1/).
  2. Salida 443 permitida por el firewall (para el túnel).
  3. Definición del Escenario A o B.
  4. Certificado del Service Layer (suele ser autofirmado; se confía en el conector).
  5. Usuario de servicio SAP y manejo de sesión (B1SESSION: renovar y reusar).
  6. Límite de sesiones concurrentes (atadas a licencias): agrupar sesiones para no chocar con el add-on fiscal ni con Handy.
  7. Capacidad del Service Layer 9.2/HANA 1.0: la carga inicial (5,300 SKUs + 24k precios + 1,500 clientes) se procesa por lotes y fuera de pico.
  8. Latencia: se absorbe leyendo del espejo (warehouse), no consultando SAP en cada paso.
  9. Resiliencia: que el agente arranque solo tras reinicio o corte de energía, con monitoreo.
  10. Alcance mínimo: el túnel expone solo el host y puerto del Service Layer, no la red completa.

5. Cómputo y orquestación

El requisito 24/7 lleva a un worker siempre encendido en Fly.io, con Vercel para la app y los webhooks.

Ruta de escalamiento: el worker puede migrarse al servicio equivalente en AWS (ECS Fargate o EC2) cuando el volumen o la estandarización en AWS lo justifiquen.

6. Inteligencia — OpenAI

Para extraer un pedido estructurado de texto, imagen y audio transcrito, usamos la familia GPT-5.4 con ruteo por dificultad:

7. Webapp de captura (sustituye el Excel de tránsito)

Una aplicación interna sencilla donde operaciones captura lo que hoy no vive en SAP: embarques, material en tránsito y ETAs. Reemplaza el Excel y habilita el cálculo de promesa de entrega.

Más adelante, esta misma plataforma puede incorporar consultas asistidas por IA sobre los datos (disponibilidad, conciliación de tránsito, detección de anomalías). No forma parte del piloto.

8. Sincronización SAP → warehouse

Recomendamos sincronización incremental por Service Layer (OData), que es la vía soportada y con precedente (las interfaces de Handy ya operan así). Para los 24k precios especiales se traen solo los cambios por fecha de modificación. Si el Service Layer 9.2 resultara corto para cargas pesadas, se evalúa la lectura directa a HANA.

Inventario completo del stack

#ComponenteServicioTipoCosto
1Túnel a SAPCloudflare TunnelFijo$0
2Agente on-premisecloudflared en su equipo$0 (equipo de Silvana)
3Entrada WhatsAppMeta Cloud API directoUsomensajes
4Entrada correoCloudflare Email RoutingFijo$0
5Transcripción de audioOpenAI gpt-4o-mini-transcribeUso~$5–15
6Lectura de imagenOpenAI visión (GPT-5.4)Usoincluido
7Entrada HandyAPI de Handy$0 (de Silvana)
8Inteligencia (LLM)OpenAI GPT-5.4 mini/nano/5.4 vía Vercel AI SDKUso~$60–130
9Embeddings del catálogoOpenAI text-embedding-3-small → pgvectorUso~$1–3
10Data lakeCloudflare R2Fijo+uso~$1
11Data warehouse + authSupabase (Postgres)Fijo$25
12Búsqueda vectorialpgvector (en Postgres)$0
13Webapp + webhooksVercel (Next.js)Fijo$20
14Worker 24/7 + colaFly.io (contenedor)Fijo~$5–15
15Login de la webappSupabase Authincluido (#11)
16ErroresSentry (free)Fijo$0 → $26
17Logs / monitoreoVercel + Fly nativosFijoincluido
18Uptime del túnelBetterStack free / health checksFijo$0
19SecretosVercel env vars$0
20CI/CDVercel deploy + GitHub ActionsFijo$0
21Dominio / DNSCloudflareFijo~$1
22Dev / testVercel previews + Supabase branchingFijo$0–leve

Los servicios sin costo — por qué, y cuándo empiezan a cobrar

ServicioPor qué $0 hoyCuándo empieza a costar
Cloudflare TunnelIncluido en el plan Free; un túnel no tiene tope de uso relevantePolíticas Zero Trust avanzadas o más de 50 usuarios en Access ($7/usuario/mes)
Cloudflare Email RoutingEnrutar correo entrante a un endpoint es gratuito e ilimitadoNo cobra, ni a escala
pgvectorEs una extensión de Postgres, no un servicio; corre en el Postgres que ya se pagaNunca por separado; escala con el plan de Postgres
Supabase AuthIncluido en el plan de Supabase; cubre el login del personal internoYa dentro de los $25 de Supabase
OpenAI visión (imagen)No es un servicio aparte; la imagen se cobra como tokens dentro de la llamada al modeloYa contado en el costo del LLM
Vercel previews / CIIncluidos en el plan ProYa dentro de los $20 de Pro
GitHub ActionsFree: 2,000 minutos/mes en repos privadosAl exceder los minutos (~$0.008/min)
Secretos (Vercel env)Variables de entorno incluidasNo cobra
Uptime (BetterStack free)10 monitores gratuitosPlan de pago por status pages, SMS o más monitores
SentryFree: ~5k errores/mes, 1 usuario, 30 días de retención$26/mes (Team) al superar errores, usuarios o retención
API de HandyEs de Silvana, no es un servicio que contratemosNo aplica
Agente cloudflaredSoftware libre; corre en el equipo de SilvanaNo aplica
Nota: Vercel Hobby es gratuito pero no permite uso comercial; para una aplicación en producción se usa Vercel Pro ($20/mes), ya contemplado en el costo.

Modelo de costos

Supuestos

ConceptoPilotoProducción plena
Vercel Pro (app + webhooks)$20$20
Fly.io (worker 24/7)~$5~$5–15
Cloudflare R2 (lake)~$1~$1–3
Supabase (Postgres + auth)$25$25
OpenAI LLM~$15–40~$60–130
Transcripción~$2–5~$5–15
Embeddings~$2~$1–3
WhatsApp (mensajes)~$10–40~$50–120
Sentry / observabilidad$0$0–26
Dominio/DNS, varios~$1~$1
Total aprox./mes~$80–140~$250–450
En MXN aprox.~$1,400–2,500~$4,500–8,100

Costos de una sola vez (setup)

Qué determina el costo

Ruta de escalamiento

El stack propuesto está dimensionado para el volumen actual y para entregar rápido. Cuando el crecimiento o un requisito de gobernanza lo justifiquen, cada componente administrado tiene una migración directa a AWS, sin rehacer la lógica de negocio ni el modelo de datos:

Componente actualEquivalente en AWS al escalar
Supabase (Postgres)Aurora / RDS Postgres
Fly.io (worker 24/7)ECS Fargate / EC2
Cloudflare R2 (lake)S3
Vercel (app)Amplify / CloudFront + funciones

La inteligencia (OpenAI) y el túnel a SAP no cambian. La migración es por componente, según la necesidad, no un rediseño.

Puntos a confirmar y coordinar

El cuestionario inicial cubrió la integración base. Para cerrar el diseño con precisión, quedan algunos puntos que dependen del implementador (Tesselar) y de un par de terceros.

Coordinación con terceros

Definiciones técnicas a confirmar

Riesgos y mitigaciones

  1. Disponibilidad de la base de datos de prueba a tiempo — es la ruta crítica. Mitigación: definir su fecha al inicio.
  2. Coordinación con Tesselar — controlan accesos, el add-on fiscal y conocen los UDF. Mitigación: involucrarlos desde la primera semana con una sesión técnica conjunta.
  3. Flujo de timbrado/CFDI por confirmar — afecta el cierre del pedido. Mitigación: aclararlo con Tesselar en esa sesión.
  4. Política de salida de datos a la nube — define la arquitectura. Mitigación: confirmarlo al inicio.
  5. Service Layer 9.2 — versión con capacidades acotadas. Mitigación: validar las operaciones reales en las primeras semanas; alternativa por HANA + DI API.
  6. Handy sin ambiente de pruebas — Mitigación: simulación de su API y pruebas de contrato; pruebas controladas contra producción.

Viabilidad y condiciones de éxito

Técnicamente, el proyecto es viable y está bien dimensionado. Nada de lo que requiere el flujo objetivo es exótico ni incierto:

El factor que determina el cumplimiento del 15 de agosto no es la tecnología, sino la velocidad con que se desbloqueen los accesos y la coordinación. El calendario de construcción es de aproximadamente nueve semanas una vez que existe acceso, por lo que el margen es ajustado. En orden de impacto, lo que asegura el éxito:

  1. Accesos en tiempo: base de datos de prueba y usuario de servicio. Es la condición que vuelve seguro el compromiso de la fecha.
  2. Coordinación con Tesselar desde el inicio, en especial para el flujo de timbrado y los accesos al Service Layer.
  3. Definición de los dos puntos de conectividad (firewall fuera de horario; salida de datos a la nube) y de si se desea operación 24/7.
  4. Un responsable interno con autoridad para resolver bloqueos del lado de Silvana.
  5. Alcance del piloto y métricas baseline firmados, para que el resultado sea medible y no quede a interpretación.
  6. Acceso al Excel de tránsito y a la API de Handy, que habilitan la promesa de entrega y el canal de vendedores.

En síntesis: la pregunta no es si se puede construir —sí se puede—, sino qué tan pronto se cierran estas definiciones. Si se resuelven en las próximas una o dos semanas, el 15 de agosto es sostenible; de lo contrario, ajustaríamos el alcance o el calendario de común acuerdo, sin sacrificar la calidad de lo entregado.

HEYAY LABS · Diagnóstico técnico para Silvana · Junio 2026