Biblioteca · Asistentes y bots de mensajería

AI Executive Assistant: un proyecto de asistente

Creador120 minActualizado: octubre de 2026
55 de 105 en la biblioteca

Módulo: 9. Funciones avanzadas | Tiempo: unos 30 min de teoría + 90 min de práctica

Lo esencial

Imagina un asistente personal que nunca duerme, lee todos los correos que te llegan, prepara tus reuniones antes que tú y cada mañana te deja en el escritorio un resumen del día ya digerido. No es ciencia ficción: es el AI Executive Assistant que vas a construir en esta lección. El enfoque es universal: la misma lógica se puede armar en Trigger.dev, como en los ejemplos de abajo, o con las herramientas listas de Claude (mira el bloque "Caminos ya hechos" más abajo).

Términos de la lección: workflow (flujo de trabajo), agent (agente: un ejecutor autónomo), API (interfaz de programación de aplicaciones), MCP (Model Context Protocol, protocolo de contexto del modelo), prompt (la instrucción que le das a la IA), scheduled task (tarea programada), cron (programador de tareas por horario), token (unidad de texto para la IA).

Conceptos clave

  • Arquitectura de un asistente de IA con varias funciones
  • Email Monitor, Meeting Prep, Daily Brief y Task Manager como workflows separados
  • Integración con herramientas reales a través de MCPs
  • Despliegue con horario y notificaciones en una app de mensajería (en el ejemplo, Telegram)

Teoría

Por qué un Executive Assistant como proyecto que reúne todo lo aprendido

🎨 Imagínalo así: el examen final de una escuela de cocina. No preparas platillos sueltos: preparas una cena completa de cinco tiempos. Cortes, salsas, tiempos, emplatado, todo a la vez. El Executive Assistant es tu cena de graduación hecha de código.

A estas alturas ya conoces: workflows, subagentes, despliegue en Trigger.dev, seguridad, manejo del contexto, GitHub. El Executive Assistant es un proyecto que junta todo eso en algo de verdad útil para ti.

No es un juguete. Es un sistema que puedes usar todos los días. También puedes mostrarlo como ejemplo de tu trabajo: "Esto es lo que armé para mí".


Qué sabe hacer el Executive Assistant

🎨 Imagínalo así: un operador de guardia en un conmutador: clasifica todas las llamadas que entran las 24 horas, pasa lo urgente de inmediato al jefe, resuelve él mismo lo rutinario y deja lo que no importa para la mañana. Nunca te pierdes algo importante, ni de noche.

Monitoreo del correo:

  • Revisa el correo cada 15-30 minutos
  • Clasifica: urgente / importante / puede esperar / spam
  • Responde solo las solicitudes simples y automáticas (confirmar una reunión, preguntas estándar)
  • Lo importante lo marca y te manda una notificación a tu app de mensajería

Preparación de reuniones (Meeting Prep):

  • Lee tu Google Calendar
  • Una hora antes de la reunión: ¿quiénes participan? ¿A qué se dedica la empresa? ¿De qué hablamos la última vez?
  • Genera un brief: contexto, preguntas clave, objetivos de la reunión
  • Te lo manda por mensaje

Daily Brief:

  • Todas las mañanas a las 8:00
  • Junta: correos importantes de la noche, reuniones del día, tareas pendientes
  • Escribe un resumen en un solo mensaje: 5 minutos de lectura en vez de una hora de escarbar

Task Manager:

  • Lleva la lista de tareas en Notion o en Google Docs
  • Te recuerda las fechas límite
  • Cierra tareas automáticamente cuando ve una confirmación en el correo

Arquitectura del sistema

🎨 Imagínalo así: la cocina de un restaurante con estaciones separadas: caliente, fría, repostería. Cada estación trabaja con su propio horario y su propio equipo. El chef (Trigger.dev) coordina a todos. El comensal (tú) recibe el platillo terminado y no sabe nada de las estaciones.

Código
┌─────────────────────────────────────────────────┐
│              Executive Assistant                  │
├──────────────┬──────────────┬────────────────────┤
│ Email Monitor│ Meeting Prep │   Daily Brief       │
│              │              │                     │
│ Trigger:     │ Trigger:     │ Trigger:            │
│ cada 30 min  │ 1 hora antes │ diario 08:00        │
│              │ de la reunión│                     │
│ Herramientas:│ Herramientas:│ Herramientas:       │
│ Gmail MCP    │ Calendar MCP │ Gmail + Calendar    │
│              │ Research API │ Notion MCP          │
├──────────────┴──────────────┴────────────────────┤
│              Task Manager                         │
│ Trigger: manual o por un correo                   │
│ Herramientas: Notion MCP                          │
├─────────────────────────────────────────────────┤
│           Notifications Layer                     │
│           Telegram Bot                            │
└─────────────────────────────────────────────────┘

Cada bloque es un workflow separado en Trigger.dev. No se estorban entre sí y pueden correr en paralelo.

Usamos Telegram en los ejemplos porque crear un bot ahí es sencillo y gratis. Puedes mandar las notificaciones a otro canal (correo, Slack, etc.); la lógica del asistente no cambia.


Caminos ya hechos: horarios sin servidor propio

Antes de escribir un workflow desde cero, mira lo que ya saben hacer las herramientas listas de Claude (a octubre de 2026; lo actual está en Lo vigente):

  • Routines en Claude Code: tareas en la nube por horario, por llamada a la API o por eventos de GitHub; funcionan con la computadora apagada. Se crean con /schedule o en claude.ai/code/routines. Disponibles en planes de pago, en estado research preview.
  • Tareas programadas en la app de escritorio: se ejecutan en tu computadora, con acceso a tus archivos locales.
  • /loop: repite un prompt dentro de una sesión abierta.
  • Claude Cowork: un modo para trabajo con conocimiento (no con código): puede ejecutar tareas por horario (diario, semanal, mensual), por ejemplo briefings matutinos y resúmenes.
  • Conectores a Gmail, Google Calendar, Google Drive y otros servicios se conectan como MCP.

Tu propio workflow en Trigger.dev tiene sentido cuando necesitas control total: tu servidor, tus integraciones, lógica fuera de lo estándar. Más sobre horarios: Loop y tareas programadas.


Integraciones y MCPs

Gmail a través de MCP:

En vez de trabajar directo con la API de Gmail (que pide configurar OAuth), usas un MCP que ya lo resolvió:

javascript
// En un workflow de Trigger.dev:
const emails = await gmail.listMessages({
  query: "is:unread after:" + yesterday,
  maxResults: 50
});

Google Calendar a través de MCP:

javascript
const meetings = await calendar.listEvents({
  timeMin: new Date().toISOString(),
  timeMax: endOfDay.toISOString(),
});

Notion a través de MCP:

javascript
// Crear una tarea:
await notion.createPage({
  parent: { database_id: TASKS_DB_ID },
  properties: {
    Name: { title: [{ text: { content: taskName } }] },
    Status: { select: { name: "Todo" } },
    Due: { date: { start: dueDate } }
  }
});

Telegram para las notificaciones:

javascript
await fetch(`https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`, {
  method: "POST",
  body: JSON.stringify({
    chat_id: CHAT_ID,
    text: briefText,
    parse_mode: "Markdown"
  })
});

Daily Brief: la arquitectura en detalle

🎨 Imagínalo así: un ayudante que cada mañana le deja al general una sola hoja en el escritorio: "Estos son los tres incendios, estas las reuniones del día, estas las tres tareas". El general toma su café y ya está al tanto, sin una hora de revisar reportes. El Daily Brief es esa hoja.

Es el workflow más fácil de entender y un buen punto de entrada para practicar.

javascript
// src/trigger/daily-brief.ts (las tareas viven en la carpeta /trigger)
import { schedules } from "@trigger.dev/sdk";

export const dailyBrief = schedules.task({
  id: "daily-brief",
  cron: {
    pattern: "0 8 * * 1-5",  // Lun-Vie a las 08:00
    timezone: "America/Toronto"  // pon tu zona horaria, p. ej. "America/Mexico_City" (por defecto el cron usa UTC)
  },
  
  run: async (payload, { ctx }) => {
    
    // 1. Juntar los datos en paralelo
    const [emails, meetings, tasks] = await Promise.all([
      getUnreadEmails({ since: "24h", maxCount: 20 }),
      getTodayMeetings(),
      getOpenTasks({ priority: "high" })
    ]);
    
    // 2. Pasárselos al agente para que los analice
    const result = await generateText({
      model: anthropic("claude-sonnet-5-5"),  // Sonnet 5.5 a octubre de 2026; IDs de modelos actuales: Lo vigente
      prompt: `
        Eres un asistente personal. Crea un Daily Brief breve.
        
        CORREOS RECIBIDOS (${emails.length}):
        ${emails.map(e => `- De: ${e.from}, Asunto: ${e.subject}`).join('\n')}
        
        REUNIONES DE HOY:
        ${meetings.map(m => `- ${m.time}: ${m.title} con ${m.attendees}`).join('\n')}
        
        TAREAS ABIERTAS (prioridad alta):
        ${tasks.map(t => `- ${t.name} (fecha límite: ${t.due})`).join('\n')}
        
        Formato: 
        1. 🔴 Urgente (requiere atención hoy)
        2. 📅 Reuniones del día
        3. ✅ Tareas de enfoque
        Máximo 200 palabras.
      `
    });
    
    // 3. Mandarlo a Telegram
    await sendTelegram(result.text);
    
    return { sent: true, timestamp: new Date().toISOString() };
  }
});

La seguridad del asistente

🎨 Imagínalo así: un apoderado con un poder limitado: puede leer documentos y firmar los estándar, pero no puede vender departamentos ni sacar dinero de la cuenta. Das exactamente los permisos que la tarea necesita, ni uno más.

El asistente tiene acceso a datos personales: correos, reuniones, tareas. Eso pide atención especial:

  1. Permisos mínimos: Gmail MCP solo con permiso de "read", no "full access", si el asistente no debe mandar correos
  2. Un bot aislado: un bot aparte solo para este asistente, no el mismo que usas para otras cosas
  3. Logs: registra lo que hizo el agente, por si algo sale mal
  4. Filtrar datos personales (PII): antes de mandar datos al LLM, asegúrate de que no haya datos de identificaciones oficiales ni datos bancarios de clientes
  5. Prueba con datos de sandbox: la primera vez, córrelo sobre un buzón de prueba
  6. Los correos son texto no confiable: dentro de un correo entrante puede venir escondida una instrucción para el asistente (prompt injection). No dejes que el asistente mande correos ni borre datos sin tu confirmación. Más detalle: defensa contra prompt injection

Práctica

Tarea: crear el workflow del Daily Brief

  1. Configura el proyecto:

    bash
    mkdir executive-assistant && cd executive-assistant
    npx trigger.dev@latest init
  2. Crea un Daily Brief básico sin integraciones reales (usa datos de prueba, mock):

    javascript
    // src/trigger/daily-brief.ts
    const mockEmails = [
      { from: "[email protected]", subject: "Pregunta sobre el proyecto" },
      { from: "[email protected]", subject: "Actualización de estado" }
    ];
    const mockMeetings = [
      { time: "10:00", title: "Llamada con el equipo", attendees: "3 personas" }
    ];
  3. Escribe el prompt del Daily Brief: usa la plantilla de la lección

  4. Córrelo en local:

    bash
    npx trigger.dev@latest dev
  5. Lanza el workflow a mano desde el dashboard de Trigger.dev y revisa el resultado en los logs

  6. Bonus: conecta un bot de Telegram real (créalo con @BotFather) y recibe tu primer Daily Brief en el mensajero


Plantilla: prompt de rutina diaria para el Executive Assistant

Usa este prompt como base para tu asistente diario. Adáptalo a tus tareas:

Escribe esto en el chat
Eres mi Executive Assistant personal. Cada mañana preparas el Daily Brief.

PROCESO:
1. Revisa los correos no leídos de las últimas 12 horas
2. Lee el calendario de hoy
3. Revisa las tareas abiertas de prioridad alta

FORMATO DEL DAILY BRIEF:

🔴 URGENTE (requiere respuesta antes de las 12:00):
- [lista de correos/tareas urgentes con contexto]

📅 REUNIONES DE HOY:
- [hora] — [nombre] — [quién participa] — [de qué trata (1 línea)]

✅ ENFOQUE DE HOY (top 3 tareas):
1. [tarea] — [por qué importa] — [fecha límite]
2. ...
3. ...

📬 EL RESTO DE LOS CORREOS (pueden esperar a la tarde):
- [resumen breve de cada uno]

💡 RECOMENDACIÓN:
[Un consejo basado en tu agenda: "Tienes 3 reuniones seguidas de 14 a 17,
bloquea de 13:30 a 14:00 para prepararte"]

Máximo 250 palabras. Sin relleno. Solo información accionable.

Herramientas y recursos

  • Trigger.dev: plataforma para workflows y horarios
  • Gmail API: acceso programático al correo: developers.google.com/gmail/api
  • Google Calendar API: acceso programático al calendario: developers.google.com/calendar
  • Gmail MCP: integración con el correo a través de MCP (simplifica OAuth)
  • Google Calendar MCP: integración con el calendario a través de MCP
  • Notion: base de tareas y notas: notion.com
  • Notion MCP: integración con Notion a través de MCP
  • @BotFather en Telegram: para crear el bot de Telegram de las notificaciones
  • Anthropic SDK: para generar texto con IA dentro del workflow

Ideas clave

El Executive Assistant no es un solo agente: es un sistema de cuatro workflows que trabajan de forma independiente y hacen cosas distintas. El Daily Brief es el mejor punto de entrada: simple, útil desde hoy, y le explica muy bien a un cliente qué es la automatización con IA. Acceso a datos personales = más responsabilidad en seguridad. Permisos mínimos, tokens aislados, logs.


Lecciones relacionadas


Siguiente lección

→ Loop y tareas programadas: cuándo usar cada cosa

La marca se guarda solo en este navegador y no se envía a ningún sitio. Mi progreso