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.
Antes del stack y los costos, qué buscamos lograr. Todo lo demás existe para esto.
En producción el 15 de agosto. Pasos 1–7.
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 resuelve | Depende de |
|---|---|---|
| 1. Llegar a SAP sin abrir su red | Túnel saliente (cloudflared) | Política del firewall · equipo Windows |
| 2. Capturar el pedido de cualquier canal | Adaptadores WhatsApp/correo/audio/imagen/Handy | API de Handy · WhatsApp API |
| 3. Entender el pedido | OpenAI (texto/imagen) + transcripción + pgvector | Transcripción |
| 4. Poner el precio correcto | Motor de precios sobre el espejo de SPP1/OPLN | Sincronización por Service Layer |
| 5. Decidir el crédito | Motor de bandas +20/+30/+60 + ruteo de autorización | Matriz de autorizadores |
| 6. Saber disponibilidad real | ATP = existencias SAP + tránsito − comprometido | La webapp de captura (tránsito) |
| 7. Comprometer fecha de entrega | Motor de promesa (ATP + ETA) | Estructura del tránsito actual |
| 8. Escribir la orden en SAP | Cola asíncrona → Service Layer | Usuario de servicio · ventana · timbrado |
El proyecto se desbloquea con accesos. Estos son los que necesitaremos del lado de Silvana:
Proponemos firmar estas métricas como baseline en el arranque y medirlas al cierre:
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").
| Capa | Servicio | Costo |
|---|---|---|
| Conectividad a SAP | Cloudflare Tunnel | $0 |
| Entrada WhatsApp | Meta Cloud API directo | $0 BSP + mensajes |
| Entrada correo | Cloudflare Email Routing | $0 |
| Transcripción de audio | OpenAI gpt-4o-mini-transcribe | ~$5–15/mes |
| Lectura de imagen | OpenAI visión (GPT-5.4) | incluido |
| Inteligencia | OpenAI GPT-5.4 mini/nano (5.4 difíciles) | ~$60–130/mes |
| Búsqueda de SKU | pgvector en Postgres | $0 |
| Data lake | Cloudflare R2 | ~$1/mes |
| Data warehouse + auth | Supabase (Postgres) | $25/mes |
| Webapp + webhooks | Vercel (Next.js) | $20/mes (Pro) |
| Procesamiento 24/7 | Fly.io (worker + cola) | ~$5–15/mes |
| Errores / observabilidad | Sentry + logs nativos | $0 (→ $26) |
| Secretos / CI-CD / DNS | Vercel · GitHub · Cloudflare | ~$1/mes |
Es un costo de infraestructura operativo y bajo, independiente del alcance de la alianza.
Tres datos del entorno de Silvana determinan casi todas las decisiones:
Criterio general: no contratar capacidad que no se necesita todavía. Se empieza simple y se escala cuando el volumen lo exija.
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.
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.
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.
Es el punto técnico central. Lo desarrollamos a detalle.
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).
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.
cloudflared) instalado como servicio de Windows.El "VPN por horarios" puede significar dos cosas, y cada una cambia el diseño:
Como entran pedidos a cualquier hora, lo ideal es que el sistema opere 24/7. Hay que separar dos capas:
curl -k https://<sap>:50000/b1s/v1/).B1SESSION: renovar y reusar).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.
Para extraer un pedido estructurado de texto, imagen y audio transcrito, usamos la familia GPT-5.4 con ruteo por dificultad:
gpt-4o-mini-transcribe ($0.003/min). Flujo: audio → transcripción → texto → modelo.text-embedding-3-small) en pgvector, para mapear "tela azul rey, 3 rollos" al SKU correcto.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.
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.
| # | Componente | Servicio | Tipo | Costo |
|---|---|---|---|---|
| 1 | Túnel a SAP | Cloudflare Tunnel | Fijo | $0 |
| 2 | Agente on-premise | cloudflared en su equipo | — | $0 (equipo de Silvana) |
| 3 | Entrada WhatsApp | Meta Cloud API directo | Uso | mensajes |
| 4 | Entrada correo | Cloudflare Email Routing | Fijo | $0 |
| 5 | Transcripción de audio | OpenAI gpt-4o-mini-transcribe | Uso | ~$5–15 |
| 6 | Lectura de imagen | OpenAI visión (GPT-5.4) | Uso | incluido |
| 7 | Entrada Handy | API de Handy | — | $0 (de Silvana) |
| 8 | Inteligencia (LLM) | OpenAI GPT-5.4 mini/nano/5.4 vía Vercel AI SDK | Uso | ~$60–130 |
| 9 | Embeddings del catálogo | OpenAI text-embedding-3-small → pgvector | Uso | ~$1–3 |
| 10 | Data lake | Cloudflare R2 | Fijo+uso | ~$1 |
| 11 | Data warehouse + auth | Supabase (Postgres) | Fijo | $25 |
| 12 | Búsqueda vectorial | pgvector (en Postgres) | — | $0 |
| 13 | Webapp + webhooks | Vercel (Next.js) | Fijo | $20 |
| 14 | Worker 24/7 + cola | Fly.io (contenedor) | Fijo | ~$5–15 |
| 15 | Login de la webapp | Supabase Auth | — | incluido (#11) |
| 16 | Errores | Sentry (free) | Fijo | $0 → $26 |
| 17 | Logs / monitoreo | Vercel + Fly nativos | Fijo | incluido |
| 18 | Uptime del túnel | BetterStack free / health checks | Fijo | $0 |
| 19 | Secretos | Vercel env vars | — | $0 |
| 20 | CI/CD | Vercel deploy + GitHub Actions | Fijo | $0 |
| 21 | Dominio / DNS | Cloudflare | Fijo | ~$1 |
| 22 | Dev / test | Vercel previews + Supabase branching | Fijo | $0–leve |
| Servicio | Por qué $0 hoy | Cuándo empieza a costar |
|---|---|---|
| Cloudflare Tunnel | Incluido en el plan Free; un túnel no tiene tope de uso relevante | Políticas Zero Trust avanzadas o más de 50 usuarios en Access ($7/usuario/mes) |
| Cloudflare Email Routing | Enrutar correo entrante a un endpoint es gratuito e ilimitado | No cobra, ni a escala |
| pgvector | Es una extensión de Postgres, no un servicio; corre en el Postgres que ya se paga | Nunca por separado; escala con el plan de Postgres |
| Supabase Auth | Incluido en el plan de Supabase; cubre el login del personal interno | Ya 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 modelo | Ya contado en el costo del LLM |
| Vercel previews / CI | Incluidos en el plan Pro | Ya dentro de los $20 de Pro |
| GitHub Actions | Free: 2,000 minutos/mes en repos privados | Al exceder los minutos (~$0.008/min) |
| Secretos (Vercel env) | Variables de entorno incluidas | No cobra |
| Uptime (BetterStack free) | 10 monitores gratuitos | Plan de pago por status pages, SMS o más monitores |
| Sentry | Free: ~5k errores/mes, 1 usuario, 30 días de retención | $26/mes (Team) al superar errores, usuarios o retención |
| API de Handy | Es de Silvana, no es un servicio que contratemos | No aplica |
Agente cloudflared | Software libre; corre en el equipo de Silvana | No aplica |
| Concepto | Piloto | Producció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 |
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 actual | Equivalente 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.
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.
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:
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.