TerneraOS
¿Puede una explotación familiar de vacuno tener datos fiables de su negocio y de sus partos sin que nadie teclee tablas, solo con portales oficiales, correo y mensajes a un bot?
- Python
- FastAPI
- Postgres
- React
- Playwright
- OpenRouter
- Telegram
- Cloud Run
TerneraOS empezó como Centinela de Partos, un experimento para reducir la mortalidad de terneros. Hoy es el sistema de gestión de la explotación, y el seguimiento de partos y bajas es una de sus piezas.
El problema
Una explotación familiar de vacuno de carne en Galicia (ciclo cerrado, manejo semi-extensivo, bajo IGP Ternera Gallega) tiene su información repartida entre portales oficiales, correos con facturas y la libreta de la cuadra. Nadie sabe con precisión cuánto se gasta en cada partida, qué falta en el censo oficial ni cuántos terneros se pierden por campaña y por qué.
La detección de partos es 100% visual y reactiva: depende de quién mire y de cuándo mire.
La restricción de diseño
Nadie tiene que teclear datos en una aplicación complicada.
Los datos tienen que llegar solos desde los portales y el correo, o dictarse a un bot desde el móvil. Si la solución exige mantener tablas, el experimento fracasa antes de empezar.
Qué está construido
- Panel web (FastAPI + React) con Resumen, Animales, Gastos, Ventas, Partos y Celos, Fallecidos y Pendientes.
- Asistente de Telegram que responde con los datos de la explotación («¿cuánto llevo gastado en pienso este año?») y apunta celos, partos, tratamientos, gastos y ventas a partir de un mensaje o de la foto de una factura.
- Ingesta automática: lectura de solo lectura de OVGAN, Agroseguro e IGP Ternera Gallega con un navegador automático, y facturas y recibos desde Gmail.
- Control frente a los registros oficiales: lo que no cuadra entre fuentes va a Pendientes para revisarlo a mano.
Principios que se notan al usarlo:
- Nada se guarda sin confirmar. El bot propone y espera a que se pulse Confirmar.
- El dinero es exacto. Importes en céntimos y sumas de cada recibo comprobadas antes de aceptarlo.
- Se conserva el original. Cada PDF, foto o fila importada queda guardada con su huella.
- Si algo no cuadra, se dice. Nada se corrige ni se inventa en silencio.
Hipótesis
Creo que una explotación familiar usará de forma sostenida un sistema de gestión si los datos llegan solos y el canal es el móvil, y que con datos fiables de partos y bajas se podrán detectar pérdidas evitables de terneros.
Criterios definidos antes de empezar
Éxito mínimo: la familia usa el sistema de forma sostenida para consultar y apuntar el día a día.
Éxito fuerte: reducción medible de la mortalidad perinatal frente a una línea base fiable.
Fallo: nadie apunta partos ni bajas; no se puede reconstruir una línea base fiable; los datos de los portales no se pueden mantener al día.
Aprendizajes hasta ahora
- 2026-06-22 — No diseñes el MVP alrededor de una API de la administración. Los portales oficiales (OVGAN, SITRAN, SGA, XEAGA) no ofrecen APIs públicas para datos ganaderos privados. La vía pragmática son las exportaciones con las credenciales del titular. El detalle está en la nota sobre datos ganaderos de la administración.
- 2026-06-29 — El primer dataset real no mide lo que buscas. Los listados de animales y los recibos de venta miden mejor ventas y rendimiento que mortalidad. Para el dolor original faltan campos por parto: madre, fecha, resultado y causa.
- 2026-06-29 — Reencuadre de alcance. El sistema debe servir primero como registro operativo de la explotación; el seguimiento de partos vive dentro de él.
- 2026-07-02 — Un prototipo privado también merece ingeniería. Antes de meter más datos reales: redacción de datos sensibles por defecto, tests, migraciones y CI con linting y tipado.
Estado actual
En producción en Cloud Run con Postgres, usado por la familia. La métrica que importa sigue siendo tener una línea base fiable de partos y bajas, no sumar más pantallas.