Generamos 500 contratos en 2 minutos 14 segundos, con un script de unas 80 líneas en Go, una plantilla HTML y la misma planilla Excel que ya tenían. Antes les tomaba tres días de trabajo manual. Esto es lo que hicimos y por qué fue rápido.

Qué tenían antes

El equipo legal y operaciones armaba cada contrato en Word, copiando datos desde una planilla maestra: RUT, razón social, monto, fecha de inicio. Después: ajustes de formato, exportar a PDF, archivar en Drive. Tres días por tanda de 500 proveedores. Cada vez.

Qué hace falta

Tres cosas, ninguna nueva:

  1. Una planilla con los datos de los proveedores (RUT, razón social, monto, fecha de inicio, etc.). Ya la tienen, es la fuente de la verdad.
  2. Una plantilla del contrato, con los campos variables marcados claramente. Convertimos el Word a HTML una sola vez, dejamos las variables como {{razon_social}}, {{rut}}, {{monto}}.
  3. Un script que recorre la planilla, rellena la plantilla por cada fila, y exporta cada PDF con un nombre consistente (contrato-{rut}-{fecha}.pdf).

Eso es todo. No hay magia.

Cómo se ve por dentro

El script son ~80 líneas de Go. Lee el CSV exportado de Excel, itera, y para cada fila renderiza la plantilla con html/template y convierte a PDF con chromedp (Chrome en headless, vía DevTools Protocol). El PDF queda con la misma calidad que un “imprimir desde Word” pero sin un humano abriendo y cerrando ventanas.

Para 500 contratos en un MacBook Air: 2 minutos 14 segundos. La parte lenta no es nuestro código, es Chromium iniciándose por cada PDF. Si fueran 5.000 contratos optimizaríamos eso (un solo Chromium con varios contextos, o wkhtmltopdf para casos sin CSS complejo). Para 500, no importa.

Lo que sí cuesta tiempo

No es el código. Es lo de antes:

  • Conseguir la planilla limpia. Casi siempre llega con celdas combinadas, fórmulas rotas, fechas en tres formatos distintos, RUTs sin dígito verificador. Una hora normalizando todo.
  • Acordar la plantilla. El equipo legal quiere revisar el texto del contrato antes de que se mande masivamente. Esto puede ser un día o dos, dependiendo de cuántas iteraciones haya. Pero es un trabajo que hubieran tenido que hacer igual.
  • Definir el archivo final. ¿Dónde se guardan los PDFs? ¿Qué estructura de carpetas? ¿Quién tiene acceso? ¿Hay que firmar electrónicamente? ¿Mandar por correo? Esto se decide en 20 minutos pero hay que decidirlo.

Y la próxima vez

Lo mejor de hacerlo así: la próxima vez que necesiten generar otra tanda de contratos, no llaman. La planilla nueva entra al script, salen los PDFs. Si cambia el texto del contrato, editan la plantilla HTML y listo.

Si quieren ir más allá (firma electrónica integrada, envío automático por correo, archivo en S3 con tags por proveedor), lo agregamos en una siguiente conversación. Pero el 90% del valor está en el primer paso: dejar de copiar datos a mano.


¿Tienes algo así? Cuéntanos por WhatsApp o correo. Primera conversación, 30 minutos, gratis.

← Volver a notas