Metodología

Última actualización: 2 de agosto de 2026

Todo lo que la web te recomienda sale de fórmulas cerradas y auditables, no de un modelo de lenguaje. Un LLM no calcula: puede alucinar. Aquí explicamos cómo se construye tu plan y qué invariantes se cumplen siempre.

1. Filosofía: determinismo total

  • Cero LLM en cálculos. Todo el motor de nutrición es JavaScript puro y trazable línea a línea.
  • Reproducibilidad: mismos inputs → mismos outputs, siempre.
  • Invariantes matemáticas verificadas en cada build (ver tests en /tests/nutrition-ledger.test.mjs).
  • El LLM solo se usa bajo tu clic explícito para: (a) voz de artículos, (b) OCR de etiquetas nutricionales que tú subes.

2. Motor de nutrición: plan-ledger.js

El planificador aplica estos principios en cascada:

Ventanas móviles de ingesta

Todo pico de gramos de CH por hora se calcula sobre una ventana móvil de 60 minutos real, no como suma total dividida entre horas. Si tu pico excede 90 g/h en cualquier ventana de 60 min consecutiva, la app te avisa aunque el promedio esté bien.

Denominador de hidratación

El objetivo de líquidos por hora se calcula sobre tus horas objetivo de carrera (targetRaceHours), no sobre el máximo global. Esto evita infrahidratar en carreras cortas y sobrehidratar en ultras muy largas.

Umbrales de CH/hora (Jeukendrup 2014, ISSN 2018)

  • < 1 h: 30 g/h (opcional, no imprescindible)
  • 1–2 h: 30–60 g/h
  • 2–3 h: 60–80 g/h
  • > 3 h: 80–90 g/h (requiere entrenamiento intestinal previo)
  • Ajuste conservador si intensidad relativa > VT2

Tolerancias de duración

Si tu plan cae dentro de ±10% del target, badge verde. Entre ±10-25%, badge ámbar (revisar). Más de ±25%, badge rojo (replantear).

3. Módulo GPX: coste energético con Minetti (2002)

Para tus rutas propias, el planificador aplica la fórmula polinómica de Minetti et al. (Journal of Applied Physiology, 2002):

Cr = 155.4·i⁵ − 30.4·i⁴ − 43.3·i³ + 46.3·i² + 19.5·i + 3.6   (J/kg·m)

Donde i es la pendiente en fracción decimal (positivo = subida, negativo = bajada). Se calcula segmento a segmento cada ~100 m para capturar la variación real del terreno.

Corrección por tipo de terreno

Aplico un factor multiplicativo empírico según el sustrato (calibrado con literatura y experiencia de campo):

  • Asfalto: 1.00 (referencia)
  • Pista consolidada: 1.05
  • Sendero rodable: 1.10
  • Trail técnico: 1.20
  • Roquedo / pedregoso: 1.30
  • Arena / nieve blanda: 1.40

Velocidad estimada

v = Psostenible / Cr, donde Psostenible es la potencia relativa por kilo que puedes mantener. Configurable por atleta.

4. Exports estructurados

  • FIT: workout Garmin nativo con pasos por distancia/tiempo. Cabecera y CRC calculados según spec FIT SDK.
  • TCX: XML estándar Garmin Training Center.
  • CSV: UTF-8 con BOM (compatible con Excel en Windows).
  • ICS: calendario iCal con alertas por paso.
  • PDF: renderizado cliente-side con jsPDF, cero llamadas a servidor.

5. Auditabilidad

Ninguna calculadora del sitio hace peticiones a la API para hacer matemáticas. Todo se ejecuta en tu navegador, offline si es necesario. Puedes verificar los cálculos abriendo las DevTools y viendo plan-ledger.js en Sources.

Referencias completas en Fuentes.