Óscar Romero Quincoces

Proyectos / Productos y herramientas

Agente de tareas en Telegram

Convierte el chat del equipo en tareas

En uso a diario2026Albujón Energy
Team group on TelegramGrupo del equipo en Telegram text messages and voice notesmensajes de texto y notas de voz voice notes: Gemininotas de voz: Gemini transcribes them firstlas transcribe antes Claude classifiesClaude clasifica new task, update, done or noisetarea nueva, avance, hecha o ruido PostgresPostgres every task and its statuscada tarea y su estado Weekday scheduleHorario de lunes a viernes 8:30 open tasks, 17:00 review8:30 tareas abiertas, 17:00 repaso posts the summary,publica el resumen, with buttons tocon botones para confirm what's doneconfirmar lo hecho
Figura 1. Cómo funciona el bot. No tiene pantalla propia, así que esto es un diagrama y no una captura

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.

Hecho con

Pythonpython-telegram-botClaude (classification)Gemini (voice transcription)PostgreSQL (psycopg 3)Railway