












Arventa
Plataforma de automatización de cobranzas con agentes de voz con IA
- Rol
- Full-stack Engineer
- Tipo de trabajo
- Colaboración con equipo
- Industria
- Fintech • SaaS de cuentas por cobrar
- Duración
- 6 meses
- Año
- 2026
Resumen
El desafío
Enlaces
Privado — proyecto de cliente
Arquitectura del sistema
Arventa se divide en un dashboard estático en React, un servidor de llamadas en Node.js con estado y un backend gestionado en Supabase. El dashboard lee y escribe los datos de cada tenant directamente a través de Supabase, protegido por Row-Level Security. Todo lo que toca el mundo exterior o tiene que sobrevivir a un reinicio pasa por el servidor de llamadas (telefonía, webhooks del agente de voz, emails entrantes y el motor de workflows), y su estado vive por completo en Postgres mediante pg-boss y funciones SQL, así que los reinicios y los deploys no necesitan ningún cuidado especial.
Arquitectura de la aplicación
- Monorepo con tres unidades: un frontend en React/Vite, un servidor de llamadas con Fastify + pg-boss y un proyecto de Supabase con migraciones y edge functions.
- Capa de acceso a datos del frontend con 26 módulos envueltos en hooks de TanStack Query, sin llamadas directas a la base desde los componentes.
- Colas del motor creadas con los reintentos propios de pg-boss desactivados para que el motor controle los reintentos, más barridos programados de disparadores cada 5 minutos y de reanudaciones cada 2.
- Las edge functions concentran la lógica de LLM y del proveedor de email, aisladas del servidor de llamadas.
Funcionalidades de la plataforma
- Editor visual de workflows con 7 tipos de nodo (llamada, email, espera, rama, actualizar registro, escalar, fin), con los grafos validados antes de poder publicarse.
- Lanzamientos en lote sobre hasta 500 facturas, salteando las que ya tienen una ejecución activa.
- Línea de tiempo unificada por factura: llamadas, emails, respuestas, notas e historial de auditoría.
- Cola de Action Needed alimentada por escalamientos, llamadas fallidas, números equivocados y deudores inubicables.
- Historial de teléfonos por factura con seguimiento de números equivocados.
- Escucha de llamadas en vivo y transcripciones.
Modelo de datos
- 29 tablas en 74 migraciones, todas con RLS activado.
- Ejecuciones y pasos de workflow con historial de intentos, claim tokens y plazos de reanudación.
- Una tabla polimórfica de interacciones (llamada, email, texto) con relación muchos a muchos con facturas, para emails que cubren varias facturas.
- Categorías de resultado por organización, con un esquema de campos JSON validado por triggers de la base.
Autenticación
- Supabase Auth
- RLS por organización
- Roles globales y por organización
- Funciones SECURITY DEFINER
- Rutas de admin con JWT
- Webhooks Svix
- Firmas de Twilio
Infraestructura y deploy
La puesta en producción mantiene a propósito una huella operativa chica: Supabase aporta Postgres, autenticación, storage y las funciones serverless, y el servidor de llamadas corre como un único proceso de Node de larga duración.
Hosting y runtime
- PostgreSQL 17 gestionado en Supabase, con proyectos separados para desarrollo y producción.
- Edge Functions sobre Deno 2.
- Servidor de llamadas compilado con tsc y ejecutado con PM2, con reinicio automático y un tope de memoria de 500 MB.
Confiabilidad
- La cola de trabajos vive en la misma instancia de Postgres, sin un broker adicional.
- Una dead-letter queue para los trabajos fallidos del motor.
- Un proceso de barrido cierra las llamadas cuyo callback del proveedor nunca llegó.
- En producción el servidor no arranca si faltan los secretos de firma de los webhooks.
Observabilidad
- Logs estructurados con Pino
- Contexto de traza con AsyncLocalStorage
- Errores persistidos por ejecución
Construido con
Se entregó un sistema de tres partes funcionando: el dashboard del equipo de finanzas, el servidor de llamadas que corre el motor de workflows y el backend en Supabase detrás de ambos.
Superficies de la app
- Dashboard, listado y detalle de facturas, editor y plantillas de workflows, campañas y lotes, y detalle de cada ejecución.
- Cola de Action Needed, actividades, cargas de archivos y configuración del horario de contacto.
- Administración de la organización para el agente de voz, los dominios de email y los miembros, más gestión de usuarios.
- Configuración del kick-off del piloto y un reporte final con gráficos.
Integraciones
- Twilio Voice
- ElevenLabs Agents
- Anthropic Claude
- Resend
- Xero
Herramientas y documentación
- 87 archivos de test con unos 875 casos entre backend y frontend.
- Scripts end-to-end de ejecución manual para el motor y las respuestas por email.
- Una guía de configuración del proveedor de email, una guía de traspaso para desarrolladores y una descripción general del producto.
- Migración del proveedor de email de SendGrid a Resend.