🧠 Propuesta 31 · Cycle Intelligence
Duración del ciclo · gestión de inputs · inteligencia en app y web — con wireframes y customer journey para trabajar en Design · basada en el intercambio de founders del 31-jul · Epic M
1 · Lo que descubrió el intercambio
Lucía reportó "first bug": su Home marcaba Luteal · Día 37 con un baseline de onboarding de 28 días (último período 26-jun). La app sigue contando sin decir nada.
Pilar lo defendió como diseño, no bug: hay mujeres que llegan a día 37 y más; el ciclo no se cierra artificialmente — lo cierra la usuaria con "Start my cycle" o registrando su período. Lo dejó así a propósito.
Lucía aceptó, con matiz clave: no es intuitivo — la app debe avisar al final esperado para pedir el nuevo registro.
Juanjo elevó la apuesta: rebaseline automático con datos reales ("the users should not think"), detección de datos fuera de patrón (ej. 57 días), notificaciones, y una pantalla de tendencias en la zona del Calendario.
Pilar: existe un doc de notificaciones preparado con Lucía → semilla del sistema. (Pendiente: compartirlo.)
⚠ Dos bugs colaterales reales detectados en la misma conversación:
1 · El sábado desaparecido (Lucía): columna S de sábado vacía y sábados saltando al domingo siguiente. A Pilar le va bien → desfase de primer-día-de-semana según locale. Fix inmediato (M-0).
2 · El anillo sin señal: en día 37 de 28 el anillo pinta como si nada — debe pasar a estado "esperando tu nuevo ciclo".
2 · Los tres principios (cada founder puso uno)
1 · El ciclo lo cierra la usuaria, nunca el algoritmo (Pilar) — la variabilidad es información fisiológica, no un error a corregir.
2 · El silencio no es neutral (Lucía) — en día 37/28 sin mensaje, la usuaria concluye "esto está roto". Cuando el dato se sale del patrón, la app habla.
3 · La inteligencia trabaja para que la usuaria no piense (Juanjo) — el baseline se recalibra solo; la usuaria registra hechos, no mantiene parámetros.
3 · Customer journey — "el viaje de María" (baseline 28 días)
Cada tarjeta: qué ve → qué hace → qué hace la app por detrás → el copy propuesto (Lucía/Pilar: vuestro terreno — ajustad tono y palabras).
0Onboarding
Ve: las preguntas de siempre (último período, 28 días, 5 días).
Hace: responde y entra.
🔧 Se crea el ciclo 0 en cycle_records (origen: onboarding). Baseline efectivo = 28.
1Días 1–28 · en rango
Ve: Home y Calendario como hoy: fase, día, recomendaciones.
Hace: registra comidas, ánimo, síntomas.
🔧 Nada nuevo. El día se clasifica "en rango".
1bCambio de fase
Ve: al entrar en cada fase (menstrual → folicular → ovulatoria → luteal), un aviso que celebra el cambio y explica qué se ajusta.
Hace: nada — o abre las recomendaciones del día.
🔧 4 momentos por ciclo, calculados del modelo de fases. In-app siempre; push opcional (M-3). Añadido por comentarios founders 1-ago.
"🌱 Hoy empiezas la fase folicular — tu energía tiende a subir. He ajustado tu nutrición y movimiento a esta fase."
2Día 29–31 · gracia
Ve: el anillo se congela lleno y cambia de copy; banda ámbar en Home y Calendario; badges del mes en hueco discontinuo.
Hace: nada, o registra su período si le vino.
🔧 Estado "gracia" (baseline+1…+7). Fase mostrada: "Luteal (extendida)". Predicciones no se rompen.
"Día 30 · tu media es 28. ¿Te ha venido? Los ciclos varían — es normal. → Registrar período"
3Día 31 noche · aviso
Ve: primera notificación (push + Notification Center).
Hace: la abre → aterriza en Registrar período.
🔧 Regla T+3 del registro de notificaciones (D9). Solo una, no insistimos a diario.
"🌙 ¿Cómo vas? Si tu período llegó, cuéntamelo y ajusto tus recomendaciones. Si no, tranquila — te acompaño."
4Día 32 · registra
Ve: confirmación cálida; Home renace en fase Menstrual día 1.
Hace: pulsa "Empezó mi período" (botón de Pilar).
🔧 Ciclo anterior se cierra en 31 días y se guarda; se abre ciclo nuevo. El dato entra en la media móvil.
"Ciclo de 31 días guardado 💾 Ya son 2 ciclos reales — uno más y tu ciclo personal sustituye al inicial."
53 ciclos · rebaseline
Ve: aviso informativo, no una pregunta (D10).
Hace: nada. Cero mantenimiento.
🔧 Ciclo personal = media móvil de 3 (29·33·31 → 31). Sustituye al onboarding en anillo, calendario, predicciones.
"✨ Tu ciclo personal es de 31 días (media de tus 3 últimos). Tus predicciones ya lo usan. Puedes verlo en Trends."
6Un ciclo raro · 47 días
Ve: a los +8: mensaje de deriva; a los +14: mensaje de cuidado con enlace al Aviso de Salud. Al cerrar, el ciclo aparece rayado en Trends.
Hace: registra cuando llegue; o corrige su baseline si se equivocó al configurar.
🔧 Flag outlier: se guarda pero NO mueve la media. Dos seguidos = nueva normalidad → entran. Jamás diagnóstico.
"Llevas 42 días — puede ser normal, pero si quieres revisa tu perfil o consulta a un profesional. Estoy aquí."
7Consulta · Trends
Ve: en Calendario → Trends: sus barras, su media, sus predicciones ±. En Progress: la estabilidad con las mini-barras.
Hace: entender su cuerpo. Editar un ciclo mal registrado si hace falta.
🔧 Una sola vista de datos, dos puertas (ver wireframes).
4 · Diseño — tres capas
Capa 1 · Memoria — cycle_records (una fila por ciclo: inicio, fin, longitud, origen) + vista cycle_stats (media/mediana/desviación de los últimos 3–6). Ciclo 0 sembrado por el onboarding. RLS por usuaria, borrado en cascada con la cuenta. Rebaseline automático tras 3 ciclos cerrados con media recortada (outliers fuera salvo repetición).
Capa 2 · Estados + inputs — cada día se clasifica contra el baseline efectivo: en rango (≤ baseline) · gracia (+1…+7, copy suave + CTA) · deriva (+8…+14, notificación + card) · fuera de patrón (>+14, mensaje de cuidado, jamás diagnóstico). Formularios: ciclo 21–45 pasa sin fricción; 15–90 con confirmación explícita. Nunca bloquear, siempre confirmar.
Capa 3 · Superficie — pantalla Trends en Calendario + asomo en Progress (wireframes abajo) + registro notification_rules sembrado con el doc de Pilar y Lucía. Tipos: fin de ciclo esperado (T-1/T0) · gracia (T+3) · deriva (T+8/T+14) · cierre de ciclo (confirmación con resumen: "Ciclo de 31 días guardado — empiezas fase menstrual, día 1") · cambio de fase (4 por ciclo, al entrar en cada una — añadido por comentarios founders 1-ago) · rebaseline aplicado · engagement contextual. Push del sistema + Notification Center in-app. Copy i18n ×14 desde el día uno.
5 · Wireframes — Calendario (la casa del trend)
Reparto recomendado: ambas pantallas, papeles distintos, UNA sola vista de datos. Calendario = los hechos y el futuro (vista completa como tercer segmento Month | Year | Trends — cero navegación nueva). Progress = la calidad y la constancia (se asoma y enlaza).
A — CABECERA VIVA + ESTADO GRACIA
Luteal
Hoy · 31 julio
Día 32 del ciclo
Ciclo personal
›31 días
media de tus últimos 3
Avg period5–6 díasestable ✓
⏳ Día 32 · tu media es 31. ¿Te ha venido? Registrar período — los ciclos varían, es normal.
La caja "Avg cycle" se vuelve viva: muestra el ciclo personal (no el del onboarding), mini-spark de los últimos 6 ciclos y chevron → abre Trends. En gracia/deriva aparece la banda ámbar con CTA. El dato deja de ser un rótulo muerto.
B — TERCER SEGMENTO: TRENDS
MonthYearTrends
Duración de tus ciclos
media 31
29mar
33abr
28may
47jun
31jul
▨ atípico (no cuenta en tu media) · franja = tu rango normal
Ciclo personal31 díasvs 28 onboarding
Próximo período≈ 27 ago± 2 días
Ovulación est.≈ 13 ago± 2 días
Histórico (editable)
26 jun – 31 jul · 31 dregistro
10 may – 25 jun · 47 datípico
12 abr – 9 may · 28 dbotón
Trends como tercer segmento de un control que ya existe: aparece exactamente "en la zona del calendario". Barras por ciclo, línea rosa = media móvil, franja crema = tu rango normal, atípicos rayados. Debajo: predicciones ± y el histórico editable por fila.
C — La grid del mes: los días posteriores al baseline llevan el badge del número de ciclo hueco con borde discontinuo (en vez de relleno lila): la cuadrícula misma cuenta que son días "en gracia". Solo un estado más del badge existente.
6 · Wireframe — Progress (el asomo)
CYCLE STABILITY, AMPLIADA
Cycle Stability
Volatile · Aligned · Stable
Duración de ciclos · últimos 6
29 · 33 · 28 · 47 · 31 · 31 días — variación ±2.1
View Trends ›
La tarjeta Cycle Stability gana la franja "Duración de ciclos": mini-barras de los últimos 6 + valores + desviación. Es su sitio natural: la estabilidad se calcula con esa varianza — el score enseña sus ingredientes. "View History" pasa a "View Trends" y salta al segmento del Calendario. Las filas "Last cycle / Best score" (hoy a "—") se rellenan con datos reales. Progress no duplica el gráfico grande: se asoma y enlaza.
7 · Fases de ejecución (Epic M)
M-0 · Hotfix (OTA, esta semana) — sábado/locale del calendario, cap visual del anillo, banda de gracia mínima con CTA "Registrar período". Sin nativo.
M-1 · Memoria + Trends v1 — cycle_records + stats + cierre por botón/registro con confirmación y resumen del ciclo guardado + avisos in-app de cambio de fase + segmento Trends + cabecera viva + badges huecos + franja en Progress. SQL + OTA.
M-2 · Rebaseline automático — media móvil de 3 con outliers recortados, mensaje de recalibración, histórico editable.
M-3 · Push + engagement — expo-notifications (nativo → build), doc de notificaciones de las founders como semilla, push de cambio de fase y cierre de ciclo, mensajes contextuales anti-abandono ("día nublado, ¿cómo está tu ánimo?").
8 · Tres decisiones para founders
| Pregunta | Opciones |
| D9 | ¿Cuántos días de gracia antes del primer aviso? | A · +3 días (recomendada) · B · +5 · C · el mismo día del fin esperado |
| D10 | ¿El rebaseline se aplica solo o pide confirmación? | A · Automático con aviso informativo (recomendada) — "users should not think" · B · Sugerido, la usuaria acepta |
| D11 | ¿Push de fin de ciclo activado por defecto? | A · Sí, con opt-out en Settings (recomendada) · B · Opt-in explícito |
Responder por WhatsApp con "D9-A, D10-A, D11-A" (o la combinación que sea) basta.
9 · Qué necesitamos de Lucía y Pilar
1 · El doc de notificaciones que preparasteis — es la semilla directa del registro de M-3.
2 · El copy en vuestra voz: los bocadillos del journey (§3) son propuestas — ajustad tono, palabras y emojis; los llevo a 14 idiomas después.
3 · Validación de umbrales (Pilar, criterio de salud): gracia +3/+5, deriva +8, cuidado +14, rango sin fricción 21–45, admisible 15–90, outlier fuera de media salvo 2 seguidos.
4 · Figma sobre estos wireframes (Lucía): cabecera viva A, segmento Trends B, badges huecos C y franja de Progress — con vuestro sistema visual (los míos son esqueletos de trabajo, no diseño final).
✅ Resumen en una frase — El día 37 no era un bug: era la app callándose algo importante. Guardamos cada ciclo real, avisamos con cariño cuando el patrón se rompe, recalibramos solos tras 3 ciclos y lo enseñamos en Trends (Calendario) con un asomo en Progress — la usuaria solo registra hechos; pensar es trabajo nuestro.
NutriSync · Propuesta 31 · Cycle Intelligence (Epic M) · wireframes + customer journey · 1 de agosto de 2026