Cómo entienden las apps de tareas «mañana a las 9»
Un recorrido corto por el procesamiento de fechas en lenguaje natural, los trucos de expresiones regulares detrás, y por qué la IA en el dispositivo está cambiando lo que es posible.
Escribe «Email a Sam mañana a las 9» en una buena app de tareas y debería pasar una de dos cosas. O recibes la tarea como un objeto limpio con título «Email a Sam» y fecha de vencimiento establecida a las 9:00 del día siguiente, o la app no hace nada y tienes que rellenar un selector de fecha. La diferencia entre esos dos resultados es lo que determina si de verdad usas la app.
El procesamiento de fechas en lenguaje natural lleva décadas existiendo. Impulsó Quicksilver. Impulsó Fantastical. Hoy impulsa prácticamente cualquier app de productividad que merezca la pena publicar. Pero la forma en que funciona por dentro ha cambiado de maneras interesantes en los últimos dos o tres años, y el resultado es que 2026 es el primer año en que esta tecnología está genuinamente resuelta para el inglés en la mayoría de las apps y empieza a funcionar bien en otros idiomas.
Esta entrada es un recorrido por cómo funciona.
La forma básica del problema
El usuario escribe una frase. La app necesita:
- Decidir si la frase contiene siquiera una fecha.
- Si la contiene, encontrar qué fragmento del texto se refiere a la fecha.
- Resolver ese fragmento en una fecha y hora absolutas.
- Eliminar el fragmento de fecha de la frase para que el texto restante sea solo el título de la tarea.
Cada uno de estos pasos tiene sus propios modos de fallo. La mayoría de las primeras implementaciones eran frágiles en el paso uno, generando falsos positivos. «Recoger los 15 informes» no debería recibir una fecha del día 15. «Comprar 3 manzanas» no debería interpretarse como algún tipo de expresión con tres. «Email a Sam en IBM» probablemente no está fijando la hora a «en I.B.M.».
La estrategia clásica son las expresiones regulares. Son sorprendentemente buenas para esto. Un puñado de patrones escritos con cuidado puede reconocer más del 90 % de las frases de fecha que la gente escribe realmente en apps de tareas:
\bin\s+(a|an|\d+|some|several)\s+(min|minute|minutes|hour|hours|hr|hrs|day|days|week|weeks|month|months)\b\b\d{1,2}(:\d{2})?\s*(am|pm)\b\b(tomorrow|today|tonight|noon|midnight)\b\b(monday|tuesday|wednesday|thursday|friday|saturday|sunday)\b
Combina quince o veinte de estos patrones y cubres la cola larga. Después unes las coincidencias: una palabra de día más una de hora se convierte en un instante concreto. Un nombre de día sin calificador significa «la siguiente ocurrencia de ese día». Una palabra de hora sin día significa hoy.
Dónde fallan las expresiones regulares
Las expresiones regulares chocan contra una pared en tres tipos de entrada:
- Frases vagas. «En algún momento de la próxima semana» es una fecha pero no una concreta.
- Ambigüedad. «El viernes por la tarde» podría ser las 14:00 o las 16:00 según la convención.
- Faltas de ortografía y jerga. «mñn a las 9» lo entiende un humano pero no una expresión regular estricta sin muchas variantes.
Durante mucho tiempo, las apps de tareas simplemente se encogían de hombros ante estos casos. Si escribías «mñn a las 9» no obtenías nada. Si escribías «lo primero de mañana» no obtenías nada. El usuario aprendía a escribir la versión formal.
El desarrollo interesante del último año es que los modelos de lenguaje en el dispositivo ahora pueden manejar estos casos sin enviar nada por la red. El framework Foundation Models de Apple, disponible desde macOS 26, incluye un modelo que funciona localmente y es lo bastante rápido para usarse como respaldo cuando las expresiones regulares fallan. Google tiene una oferta similar en Android. El patrón resultante es el siguiente:
El camino rápido cubre el 90 % de los casos. El modelo cubre el resto. Ninguna de las dos etapas envía el texto del usuario por la red. Se preservan tanto la privacidad como la velocidad.
Por qué «en 2 horas» es más difícil de lo que parece
La frase «en 2 horas» parece fácil. No lo es.
El usuario podría querer decir cualquiera de estas cosas:
- 2 horas a partir de ahora mismo, al minuto.
- 2 horas a partir de ahora mismo, redondeadas al cuarto de hora más cercano por limpieza.
- 2 horas a partir de ahora mismo, pero si cae durante las horas de sueño marcadas del usuario, la mañana siguiente.
- 2 horas a partir del inicio de la próxima hora («en 2 horas» dicho a las 13:55 podría significar las 16:00, no las 15:55).
La mayoría de las apps toman una decisión y la mantienen. La más habitual es «2 horas a partir de ahora mismo, al minuto», que cambia elegancia por previsibilidad. Un usuario que escribe «en 2 horas» a las 13:23 recibe una notificación a las 15:23. Aprende a escribir números redondos cuando quiere horas limpias.
Por qué «mañana» se establece por defecto a las 9 de la mañana
Cuando escribes «mañana» sin hora, la app tiene que elegir una. La convención ha convergido en las 9:00 en prácticamente todas las apps del mercado. ¿Por qué?
Porque el coste de equivocarse es asimétrico. Si la app elige las 9 y tú querías las 11, puedes ajustarlo rápido cuando lo notes. Si la app elige medianoche o alguna otra hora aleatoria, recibes una notificación mientras duermes o te la pierdes por completo. Las 9 son el predeterminado seguro para casi cualquier tipo de tarea de trabajo.
Algunas apps usan las 8 por defecto. Algunas usan la hora del día en que escribiste la tarea («lo dijiste a las 14:00, así que probablemente quieres decir las 14:00 de mañana»). Esto segundo es ingenioso pero poco fiable, porque la mayoría de la gente que escribe una tarea a las 14:00 lo hace durante la jornada laboral para tareas que quiere hacer durante una jornada laboral futura, no exactamente a las 14:00 del día siguiente.
Cómo se ve esto dentro de TodoBar
TodoBar usa el patrón de dos etapas descrito arriba. Escribe cualquier tarea con una expresión temporal y la capa de expresiones regulares se activa primero, en menos de un milisegundo. Si encuentra una fecha, la tarea aparece en tu lista con la hora correcta. Si la capa de expresiones regulares no puede resolver la frase, el clasificador de Foundation Models en el dispositivo lo intenta, con una latencia típica de unos 50 milisegundos. En cualquier caso, ningún texto sale de tu Mac.
Los patrones que reconoce la capa de expresiones regulares están documentados en la página de soporte. Como referencia rápida, todos estos funcionan:
- “en 30 minutos”
- “en 2 horas”
- “en un par de horas”
- “mañana”
- “mañana a las 9”
- “esta noche”
- “esta noche a las 8”
- “el próximo viernes”
- “viernes a las 5pm”
- “12 de mayo”
- “12 de mayo a las 2pm”
- “el día 15”
- “en 3 días”
- “1 semana desde ahora”
- “lo primero de mañana”
Si escribes algo que el procesador no puede manejar, la tarea se añade igualmente sin fecha de vencimiento, y puedes adjuntarle una manualmente desde el botón de campana de la fila. El modo de fallo del procesador es «sin fecha adjunta», no «tarea perdida».
Hacia dónde va todo esto
La siguiente frontera interesante es el procesamiento multilingüe. Frases en español como «mañana a las 9» deberían funcionar tan bien como su equivalente en inglés, y cada vez lo hacen más en apps que se toman en serio la localización. El modelo en el dispositivo de Apple maneja bien el español en nuestras pruebas internas. El mismo enfoque funcionará para el francés, el alemán, el japonés y probablemente la mayoría de los idiomas mayoritarios en el próximo año.
Las piezas están todas aquí. Lo que antes era una costosa ida y vuelta a la nube es ahora una llamada local a una función que tarda 50 milisegundos. Que una app de tareas independiente pueda ofrecer eso, de forma gratuita, sin factura de inferencia por usuario, es la verdadera historia.
TodoBar es una lista de tareas amigable para la barra de menú de macOS. Fechas en lenguaje natural, atajo global, sincronización con iCloud. Paga una vez, tuyo para siempre.
Descargar TodoBar en el App Store