Proyectos / Productos y herramientas
Agente de tareas en Telegram
Convierte el chat del equipo en tareas
Resumen
Un bot en el grupo del equipo de Albujón Energy. Lee cada mensaje y nota de voz, detecta tareas nuevas, avances y trabajo terminado, y publica un resumen a las 8:30 y a las 17:00 de lunes a viernes, con botones para confirmar lo que está hecho. El equipo lo usa a diario.
Python, Claude para clasificar, Gemini para las notas de voz y Postgres, en Railway.
El problema
En un equipo pequeño, el trabajo se reparte en el grupo de chat y en notas de voz, y luego se pierde hacia arriba en la conversación. Quería que la lista de tareas se construyera sola a partir de lo que se habla, sin pedirle a nadie que cambie su forma de escribir.
Qué hace
El bot lee cada mensaje del grupo del equipo de Albujón Energy y lo clasifica como tarea nueva, avance, problema de contexto o trabajo terminado. Reacciona con un pulgar arriba cuando registra algo y no dice nada cuando el mensaje es solo conversación. Las notas de voz se transcriben con Gemini y siguen el mismo camino; las fotos y los vídeos solo reciben un acuse.
- A las 8:30 de los días laborables publica las tareas abiertas; a las 17:00, el repaso del día.
- Las tareas pendientes de confirmar llevan botones, hecha o sigue abierta, y ese modo caduca a medianoche.
- Con comandos, cualquiera puede listar, crear, cerrar o cambiar de estado una tarea a mano. El equipo lo usa a diario.
Cómo está hecho
Python sencillo, separado en manejadores y tareas programadas, las llamadas a los modelos (Claude para clasificar, Gemini para transcribir) y una capa de Postgres con pool de conexiones. Corre en Railway como worker sin puerto público, junto a un Postgres gestionado, y cada push a main lo despliega.
Lo que aprendí
En python-telegram-bot, los días de una tarea diaria empiezan en el domingo como 0, mientras que el weekday() de Python empieza en el lunes. Si escribes de lunes a viernes al estilo de Python, el viernes desaparece sin avisar. Corregí los días y añadí una segunda comprobación con la convención de Python como red de seguridad.