← Casos
Documentos

Adiós al papel

Había una persona cuyo trabajo era llevar documentos en auto. Salía del edificio con un maletín, iba a una oficina, esperaba que el gerente firmara, volvía, escaneaba el documento, lo archivaba. Para cada contrato. Todos los días.

El dolor

El problema no era solo el tiempo que tomaba — era que cada paso del proceso podía fallar. El gerente estaba en reunión. El documento quedaba mal escaneado. La carpeta física se perdía. El correo con el PDF firmado llegaba a spam o no llegaba. Y cuando alguien necesitaba encontrar ese contrato seis meses después, nadie sabía exactamente dónde estaba.

Para organizaciones que manejan volumen alto de documentos — contratos laborales, acuerdos con proveedores, autorizaciones internas — este proceso no escala. Cada nuevo contrato es otra vuelta del mismo ciclo manual.

Lo que cambió

Construí una plataforma SaaS de firma electrónica con editor de formularios integrado para crear los documentos directamente en la plataforma, distribución masiva para enviar el mismo documento a múltiples firmantes, y código QR en cada documento para verificar autenticidad.

El firmante recibe un link, firma desde el teléfono o el computador, y el sistema notifica cuando está listo. El documento queda archivado en la nube con historial de quién firmó, cuándo y desde dónde. La persona que antes manejaba el maletín ahora gestiona todo desde un panel. El proceso que tomaba días toma minutos.

De días a minutos por contrato. Archivo centralizado con trazabilidad completa de cada firma.

Arquitectura

El editor de documentos fue el componente más complejo. TipTap tiene una API limpia para rich text, pero el problema real es la conversión a PDF con fidelidad exacta — fuentes, posiciones, bordes de firma. Eso requirió una capa de renderizado server-side con Puppeteer que toma el HTML del editor y lo convierte a PDF en un contexto de Chromium headless. Es el componente más frágil del sistema, pero es el más confiable para renderizado fiel a lo que el usuario diseñó.

La validez legal de la firma electrónica en Chile la establece la Ley 19.799. La ley no exige tecnología específica — exige poder identificar al firmante y demostrar que el documento no fue alterado. Se implementó con hash SHA-256 del documento al momento de enviar, captura de IP y timestamp en el servidor al firmar, y el QR enlaza a un endpoint que muestra el estado de validez. No es firma calificada con certificado digital, es firma simple con trazabilidad completa y eso cubre la mayoría de los casos de uso.

Los documentos firmados viven en S3 con bucket policies estrictas: no son públicos. Se acceden via presigned URLs con expiración de 15 minutos. El link que llega por mail expira — si alguien lo reenvía tres horas después, ya no funciona. El documento está en la plataforma, no en el correo.

El envío masivo va a una cola de jobs procesada con Sidekiq. Cuando alguien sube una planilla con 500 destinatarios, no se envían 500 correos síncronamente. Van a la cola y se procesan a ritmo controlado respetando los límites del proveedor SMTP. Eso evita que el servidor de correo bloquee la cuenta por volumen y que la request del usuario timeout esperando que terminen.

Stack

Ruby on RailsVue 3TipTapS3SMTP

Qué aprendimos

Puppeteer en producción consume recursos de forma que no es obvia en desarrollo. Cada generación de PDF lanza un proceso de Chromium. Con volumen alto, el servidor se llena de procesos zombis si no se gestiona bien. Tuve que implementar un pool de instancias Chromium que se reutilizan, con límite máximo de workers concurrentes. Eso no era evidente hasta verlo bajo carga real.

La gente no lee las instrucciones de firma. El flujo parecía obvio durante el desarrollo: recibes un mail, haces click, firmas, listo. En producción, una parte significativa de los firmantes llamaba a preguntar qué hacer. Rediseñé el mail de invitación tres veces y simplifiqué la pantalla de firma hasta que los llamados bajaron. UX de firma electrónica tiene que funcionar para cualquier nivel de experiencia digital.

El QR de verificación fue un requerimiento tardío que el cliente mencionó como 'sería bueno tener'. Lo incluí porque era relativamente simple y el valor era claro — un proveedor o auditor puede escanear el QR del PDF impreso y verificar la firma sin necesidad de una cuenta en la plataforma. Ese detalle fue decisivo para convencer a clientes corporativos que de otra forma habrían necesitado mucho más tiempo de evaluación.

Servicios relacionados

Automatización de procesosDesarrollo de plataformas web

¿Tienes un problema parecido?

Cuéntame qué duele en tu operación. Un mensaje directo a Telegram y respondemos en el día.

Abrir Telegram