I+D personal

Territorial Assistant

Un daemon basado en Discord que convierte mi propia actividad de trabajo en hojas de horas aprobadas y en una base curada de historias de ingeniería.

1/2Propuesta diaria en Discord: sesiones por cliente, trabajo sin correspondencia señalado, corrección en lenguaje natural

Reconstruir horas facturables de memoria y encontrar tiempo para escribir sobre el trabajo eran dos tareas que siempre posponía. Este asistente de proceso único lee ActivityWatch, git, GitHub y transcripciones de Claude Code, propone hojas de horas diarias en Discord y extrae de la misma evidencia historias que merecen publicarse.

En resumen

  • Un proceso TypeScript, una base Postgres, un bot de Discord; ninguna UI web que mantener
  • Claude se usa solo para criterio, nunca para contabilidad: reglas y cachés responden primero, y las llamadas se liberan solo con presupuesto sobrante en la suscripción
  • El asistente de hojas de horas propone entradas por cliente, aprende reglas de mapeo a partir de correcciones en lenguaje natural y registra los días aprobados en Territorial Invoices
  • El asistente de marketing extrae y puntúa historias cada semana y redacta posts; la información confidencial de clientes se excluye por diseño

Cómo funciona el asistente de hojas de horas

Cada quince minutos el daemon ingiere eventos de ventana y navegador de ActivityWatch, los compacta en bloques de actividad y resuelve todo lo que puede con reglas aprendidas: este repositorio es aquel cliente, este host de URL es aquel proyecto. Solo el resto ambiguo va a Claude. Los bloques se convierten en intervalos por cliente, los intervalos se fusionan en sesiones cognitivas con un margen de 15 minutos y una tolerancia de 45 minutos entre ellas, y cada sesión se enriquece con lo que realmente se hizo usando commits y transcripciones de esa ventana.

El resultado es una propuesta en un hilo de Discord, una por día. Respondo en lenguaje natural ("S2 es ACM, hito Maintenance & DevOps"), el bot revisa, aprende la regla y, al aprobar, registra una entrada por sesión y proyecto a través del endpoint MCP de Invoices. Los días incompletos se rechazan en lugar de registrarse a medias.

El asistente de marketing

El segundo módulo trata la experiencia como el producto. Reúne el historial git, pull requests y transcripciones de la semana, extrae qué pasó y cuál fue la lección, y puntúa cada elemento como un ángulo que le importaría a un gestor SIG o CTO aun sin conocer el proyecto. El lunes llega un resumen de candidatas a Discord; elijo y asigno cada una a un blog, el asistente redacta en un hilo, abre un pull request contra el repositorio del sitio al aprobar y prepara publicaciones para LinkedIn cuando el artículo está en línea. La base de conocimiento persiste entre semanas, así que los elementos con baja puntuación pueden rescatarse después.

Restricciones de diseño

Las etapas se comunican solo a través de la base de datos, así que cualquiera puede volver a ejecutarse. Claude se invoca mediante la CLI local con esquemas de salida estructurada, sin herramientas y sin persistencia de sesión, para que las llamadas generadas por el asistente nunca contaminen las transcripciones que luego lee. Una compuerta consulta el endpoint de uso de la suscripción y vacía una cola de prioridad solo cuando el presupuesto quedaría sin usar: respuestas interactivas primero, hojas de horas después, marketing al final.

Más proyectos

Todos los proyectos