Viruta — el presupuesto de mecanizado que sale en 90 segundos, no el viernes
Cotizador de mecanizado para talleres bajo plano: STEP + plano entran, y en 90 segundos salen precio suelo, objetivo y desglose por amarre, agujero y minuto de fresado. El precio lo calcula un motor determinista con las tarifas del taller; el LLM solo lee el plano.
Concepto
Viruta es el presupuesto de mecanizado que sale en 90 segundos. El jefe de taller arrastra un STEP y, si lo tiene, el plano en PDF; elige material y cantidad y la web devuelve tres precios —el suelo (lo que cuesta), el de mercado y el objetivo con el margen que él haya fijado— con el desglose abierto: kilos de material con su merma, minutos de fresado y de torno, número de amarres, taladros, tratamiento, plazo según la cola de máquina. Debajo, una línea que el comercial puede pegar en el correo sin pensar: «1.240 €: 4,2 kg de 6082-T6, 38 min de fresado 3 ejes, dos amarres, anodizado, 12 días». El precio no lo inventa un modelo de lenguaje: lo calcula un motor determinista con las tarifas del taller, y el STEP se puede abrir en el navegador antes de subirlo. Si la pieza no deja margen, lo dice en rojo antes de que se envíe.
Precio: alta 1.400 € (carga de tarifas de hasta 6 máquinas, 60 piezas históricas para calibrar los coeficientes, plantilla de presupuesto con la marca del taller y media jornada de formación) + 189 €/mes por usuario de presupuestación, con 150 presupuestos al mes incluidos y 0,90 € por encima; 349 €/mes el plan de taller con tres usuarios. Paga el socio o dueño de un taller de mecanizado bajo plano de 5 a 40 personas (0,6–4 M€ de facturación) y, en los de más de 20, el jefe de oficina técnica que hoy presupuesta en Excel los viernes por la tarde.
Por qué es nueva
- Novedad: los cotizadores automáticos serios existen, pero son americanos, se venden con demo y contrato de dos o tres años, y las comparativas públicas del sector les atribuyen 10–12 semanas de implantación: hay que escribir antes las reglas de coste, lo que saca a un estimador de producción durante semanas. El resto de la oferta es un ERP con una hoja de cálculo dentro, o un marketplace (Xometry y compañía) que se queda el cliente final y le paga al taller el precio que decide. Viruta es lo contrario: la calculadora del taller, con las tarifas del taller, en su marca, y el cliente sigue siendo suyo. Y hay una decisión de diseño que la separa de casi todo lo que se está vendiendo como «IA para industria»: el LLM lee el plano y rellena la ficha; el número lo pone el modelo de coste. Por eso el jefe de taller puede defender el precio delante de su comercial y no tiene que creerle nada a una caja negra.
- Dónde añadimos valor: un presupuesto de mecanizado consume entre 40 y 70 minutos de un técnico que cuesta 30–35 €/h. En un taller de 12 personas con 45 solicitudes al mes son unas 41 horas mensuales de oficina técnica, 1.300 € de capacidad que no se factura, y casi siempre se acumulan para el viernes. Viruta baja eso a 8–12 minutos de revisión y, sobre todo, cambia el reloj: responder en dos horas en vez de en tres días. En subcontratación industrial el que contesta primero con un precio creíble se lleva una parte desproporcionada del pedido; dos o tres pedidos más al mes de 900 € con un 25 % de margen son 450–675 € mensuales frente a una cuota de 189 €. La tercera cuenta es la que nadie quiere mirar: un 8 % de desvío en un pedido de 40.000 € son 3.200 € que se pierden por presupuestar con las tarifas de hace cuatro meses.
- Visión: de presupuesto a control de margen por pieza. Cuando el pedido se cierra, el taller mete las horas reales y Viruta compara: el coeficiente de tiempo se corrige solo y en tres meses el error baja de dos cifras a una. Con eso llega lo que ningún ERP tiene: precio por carga de máquina (si el fresado está al 40 %, baja margen para llenar hueco; si está al 95 %, súbelo) y el histórico de precios del taller convertido en referencia anónima del sector. El activo no es el cotizador: es saber a qué precio se gana y a qué precio se trabaja gratis.
Diagrama de secuencia
Cargando diagrama…
Lo que ve el usuario
El jefe de taller abre Viruta en el móvil, en la nave, con el STEP que le acaba de llegar por correo. Lo suelta en la pantalla y la pieza aparece girando en tres segundos —sin haber subido nada todavía—; debajo, un aviso en gris: «4,2 kg de 6082-T6, 38 min estimados, 2 amarres, margen 21 % · Precio objetivo 1.240 €». Toca el desglose y ve las líneas una a una, con el coste de cada amarre y el aviso en ámbar de la operación que se come el margen: «el taladro de 40 mm profundo son 9 de los 38 minutos». Corrige el precio un 4 % a la baja porque lleva el fresado al 50 %, pulsa «enviar» y el PDF sale con el logo del taller, validez de 15 días y un enlace donde el cliente acepta. Tres semanas después marca «ganado» y mete 2,5 horas reales de máquina: la ficha de la pieza se queda con el desvío, y la siguiente del mismo cliente y familia sale mejor. En el panel, la lista de la semana con un semáforo: verde las que dejan más de un 20 %, ámbar las que dependen de un tratamiento externo, rojo las dos que no deberían enviarse a ese precio.
Imagen sugerida: pantalla de móvil en horizontal con una pieza de aluminio girando en 3D sobre fondo oscuro de taller, y superpuestos tres precios grandes —«suelo 980 €», «objetivo 1.240 €», «mercado 1.190 €»— con una barra de margen en verde y una línea de tiempo de 38 minutos de mecanizado desglosada en amarres.
Repositorios utilizados
- https://github.com/FreeCAD/FreeCAD — el kernel que hace el trabajo sucio: abre STEP e IGES en modo headless (
freecadcmd), mide volumen, área, caja envolvente y expone las caras del sólido para contar agujeros, planos y cilindros; también aporta el módulo Path para estimar recorridos de herramienta. - https://github.com/CadQuery/cadquery — capa de consulta sobre OCCT: recorre las caras y clasifica su geometría (plano, cilindro, cono), lee radios y profundidades de los agujeros y agrupa las normales para decidir cuántos amarres necesita la pieza.
- https://github.com/mikedh/trimesh — comprobaciones que evitan presupuestos imposibles: estanqueidad del sólido, espesor mínimo por lanzamiento de rayos (la pieza que se va a deformar al mecanizar), y validación de que el volumen del STEP y el del plano cuadran.
- https://github.com/pymupdf/PyMuPDF — lectura del plano en PDF: saca la capa de texto (material, tolerancia general, tratamiento, notas del cajetín) sin rasterizar; los planos vectoriales españoles casi siempre la tienen y eso ahorra el OCR entero.
- https://github.com/ricosjp/truck — kernel CAD en Rust compilado a WASM: visor que abre el STEP en el propio navegador del taller antes de subirlo, para que el que decide qué ficheros salen de la empresa sea el dueño y no la nube.
Variaciones (sinergias)
- + tamasmeszaros/libnest2d (441 ⭐, LGPL-3.0) + kovacsv/occt-import-js (289 ⭐, LGPL-2.1): la chapa que se cobra por metros aprovechados, no por kilos. Libnest2d hace nesting real de piezas irregulares sobre la chapa y occt-import-js resuelve la vista previa del DXF y del STEP desplegado en el navegador. Lo que emerge no es «el mismo cotizador para chapa»: es un presupuesto que calcula el aprovechamiento del retal —cuántas piezas caben en una chapa de 3000×1500, qué sobra y a qué precio se puede revender— y que por tanto puede cotizar por debajo del taller de al lado sin perder dinero. Nicho: corte láser y punzonado, donde el material es el 50–65 % del coste de la pieza y el nesting lo hace hoy un operario a mano en el CAM.
- + LinuxCNC/linuxcnc (2.496 ⭐, GPL-2.0) + gnea/grbl (4.570 ⭐): el presupuesto firmado contra el programa, no contra una heurística. LinuxCNC y Grbl aportan el intérprete real de G-code y sus parámetros de aceleración y avance, de modo que Viruta puede leer el programa CAM ya postprocesado y devolver el tiempo de ciclo exacto en vez de una estimación por volumen arrancado. Emerge el presupuesto que el jefe de taller puede firmar sin miedo en piezas de cinco ejes, y el bucle inverso: al cerrar el pedido, el tiempo real de máquina corrige el modelo con datos del propio controlador. Nicho: series cortas de 5 ejes y piezas grandes de aeronáutica y utillaje, donde el tiempo de máquina es el 70 % del precio y un error del 15 % se come el pedido entero.
- + frappe/erpnext (40.355 ⭐, GPL-3.0): del presupuesto aceptado a la compra de material con el precio congelado. ERPNext pone órdenes de fabricación, lista de materiales, compras y valoración de existencias; Viruta le entrega el desglose ya descompuesto en material, horas y externos. Emerge la pieza que hoy no existe en ningún ERP: el presupuesto que se convierte en orden de fabricación y en pedido de material en el mismo clic, con el desvío de margen calculado contra el presupuesto original en lugar de contra una tarifa estándar. Nicho: talleres de 20 a 60 personas donde el comercial presupuesta en una herramienta y el jefe de producción planifica en otra, y nadie sabe hasta el cierre si el pedido dejó dinero.
Plan MVP completo
Ver projects/viruta-presupuesto-mecanizado/docs/mvp/PLAN-MVP.md (stack, arquitectura por módulos, entidades, endpoints, fases, esfuerzo 18.500–22.000 € y riesgos).