Tramo — la compra de la farmacia que llega al descuento sin llenar el almacén
El comprador con datos que la farmacia no tiene: cruza rotación, tramos del mayorista y ofertas de laboratorio para llegar al descuento sin stock muerto. 119 €/mes con garantía y 6.000-8.000 €/año identificables en una farmacia media.
Concepto
Tramo es el comprador que la farmacia no tiene. Cada jueves, antes de cerrar el pedido al mayorista, cruza tres cosas que hoy viven en sitios distintos: la rotación real por referencia (del software de gestión), las condiciones del contrato con el mayorista (tramos de descuento por volumen y pronto pago) y las ofertas que los laboratorios mandan por correo. Devuelve tres cosas: una propuesta de pedido que llega al tramo sin pasarse de cobertura, un veredicto por oferta —«esta te deja siete meses de stock, no»— y un informe mensual con el margen que queda, el capital inmovilizado y las caducidades que vienen.
Quién paga: el titular, que es el que firma. España tiene 22.231 farmacias comunitarias, una por farmacéutico y sin cadenas corporativas, así que la venta es de dueño a dueño y en una sola visita. Precio: 119 €/mes por farmacia (1.428 €/año), sin alta, con garantía de 90 días —si el informe no identifica al menos tres veces la cuota en euros, no se cobra—. Grupos de 3 a 10 farmacias: 89 €/farmacia/mes, panel único.
Por qué ahora: el margen de la receta está fijado por ley y el 65-80 % de la facturación es medicamento financiado que se cobra a mes vencido, con comunidades que pagan con meses de retraso. La palanca que le queda al titular y que nadie le mide es la compra: lo que paga por lo que vende.
Por qué es nueva
- Novedad: el software de gestión (Unycop, Farmatic, Nixfarma, Farmawin) está construido para dispensar y facturar; su módulo de compras propone por stock mínimo, no por tramo. La herramienta del mayorista sí conoce el tramo, pero es del mayorista: optimizarlo para la farmacia es optimizar el descuento que él paga. Y nadie cruza la oferta del laboratorio con la rotación y el coste del capital: el representante vende «12+3» como un 20 % y casi siempre es un 13-14 % con siete meses de stock y una caducidad a catorce. Tramo es el único motor que se sienta del lado del que compra.
- Dónde añadimos valor: farmacia tipo de 950.000 € de ventas y 665.000 € de compras, con pedidos de 46-58 k€ al mes. Cuatro meses que caen a 46 k€ y se pueden llevar a 60 k€ con producto de rotación superior a 90 días ganan un punto sobre el total del mes: 600 €/mes, menos unos 20 € de coste de capital del stock extra. Bajar la caducidad del 1,1 % al 0,4 % de la compra son 4.650 €/año; rechazar las 8-10 ofertas mensuales que no compensan libera 9.000-14.000 € de capital. Total identificable: 6.000-8.000 €/año contra 1.428 € de cuota (4-5x). Y aparece el dato que hoy no existe en ningún sitio: el precio efectivo de compra por referencia —PVP menos margen regulado menos descuentos—, que es la base de cualquier negociación y de cualquier valoración de la farmacia.
- Visión: tres pasos. Primero el pedido. Después el contrato: con 200 farmacias comparadas y anonimizadas, Tramo sabe qué condiciones da cada mayorista en cada tramo y la renovación anual se negocia con un benchmark en la mano —el CNMC ya describe a la farmacia recibiendo dos márgenes, el regulado y el descuento—. Al final, el grupo de compra: agregar pedidos de 30 farmacias para negociar como una sola cuenta con el laboratorio, con reparto y liquidación automática. El destino es que una farmacia independiente compre con la fuerza de una cadena sin dejar de ser independiente.
Diagrama de secuencia
Cargando diagrama…
Lo que ve el usuario
Jueves, 19:40. El titular abre el móvil y hay una tarjeta: «Vas a cerrar en 48.160 €. El tramo del 5 % está en 50.000 €. Si consolidas estas 6 referencias —rotación de 110 días, caducidad de 18 meses, sin oferta activa— el pedido sube a 51.840 € y el descuento del mes pasa del 4 % al 5 %: +518 €. Coste del stock extra: 18 €». Debajo, tres botones: cruzar, quedarse, esperar al lunes. Ninguna línea se manda sola: cada añadido se aprueba con el pulgar y se ve qué referencia y por qué.
En la bandeja hay ocho ofertas del día, cada una con semáforo y una frase: «Dermo X 12+3 — descuento nominal 20 %, real 13,7 %: te deja 7,2 meses de stock con caducidad a 14. Rechaza o pide 6+3». «Suplemento Y 3+1 — real 22,4 %: adelante, gira 40 unidades al mes». Un toque genera el correo de contrapropuesta al representante, con la cuenta detrás.
El viernes llega un PDF de una página: margen bruto por categoría (receta, OTC, dermo, ortopedia), capital inmovilizado, caducidades en riesgo en los próximos 90 días, cuántos meses has cruzado el tramo y cuánto has ganado o dejado de ganar. En el panel queda el histórico y un buscador que nadie tiene hoy: «¿cuánto me cuesta esta referencia al año, de verdad?».
Imagen sugerida: móvil en vertical sobre el mostrador de una farmacia al atardecer, con la tarjeta del tramo en primer plano (48.160 € → 50.000 € → +518 €), la bandeja de ofertas con semáforos detrás y una caja de cartón abierta al fondo con la luz verde de la cruz de farmacia reflejada.
Repositorios utilizados
- https://github.com/Nixtla/statsforecast — previsión de demanda por referencia con modelos para series intermitentes (Croston, TSB), que en una farmacia son la mayoría del catálogo.
- https://github.com/Pyomo/pyomo — el pedido como problema de optimización: unidades por referencia, umbrales de tramo, cobertura máxima y caducidad mínima.
- https://github.com/coin-or/Cbc — solver MILP que resuelve el modelo de pedido en segundos dentro del contenedor.
- https://github.com/opendatalab/MinerU — lectura de facturas del mayorista, albaranes y ofertas de laboratorio en PDF con tablas y códigos nacionales.
- https://github.com/Kozea/WeasyPrint — propuesta de pedido y informe mensual en PDF con la plantilla y el color de cada farmacia.
Variaciones (sinergias)
- + rasbt/mlxtend (5.187 ⭐) + tesseract-ocr/tesseract (77.077 ⭐, Apache-2.0). Con las cestas de los tickets (apriori sobre el histórico de ventas) y OCR para los albaranes que todavía llegan en papel, emerge el surtido por cesta: qué 400 referencias sostienen el 80 % del margen por metro lineal y cuáles están ocupando estantería sin vender nada. Nicho: farmacias de barrio de 60-90 m² con 3.000 referencias y un 30 % del capital dormido en el lineal, donde reorganizar es la única obra posible.
- + open-meteo/open-meteo (6.411 ⭐, AGPL-3.0) + Nixtla/neuralforecast (4.288 ⭐, Apache-2.0). Temperatura, polen e incidencia respiratoria entran como variables exógenas en el modelo neural: emerge el pedido de la ola, que adelanta el pico de antigripales, antihistamínicos y protección solar dos semanas antes de que llegue, y lo desmonta en cuanto pasa. Nicho: farmacias de costa y de zonas turísticas, donde un fin de semana de lluvia en julio o un pico de alergia mueve más unidades que un mes entero de invierno.
- + inventree/InvenTree (7.735 ⭐, MIT) + thingsboard/thingsboard (22.581 ⭐). Trazabilidad por lote y telemetría de la nevera con un sensor de 20 €: emerge el expediente de la cadena de frío —qué lote de vacuna o insulina estuvo a qué temperatura, cuándo caduca y a quién se devuelve—, que es exactamente lo que pide la inspección y lo que el laboratorio exige para abonar una devolución de 4.000 €. Nicho: farmacias con botiquín de vacunas, insulinas y biológicos, donde una nevera mal documentada convierte stock de alto valor en pérdida íntegra.
Plan MVP completo
projects/tramo-compra-farmacia/docs/mvp/PLAN-MVP.md