Job | task-reminders
1. Propósito
Funcionar como PM implacável (mas gentil): lembrar cada owner das tarefas vencendo hoje, amanhã ou já vencidas. DM direto, 2× ao dia.
2. Gatilho
- Cron manhã:
0 9 * * 1-5(seg–sex 09:00 BRT) — lembrete proativo do dia - Cron tarde:
0 17 * * 1-5(seg–sex 17:00 BRT) — check-in de fim de dia - Skip: feriado; se owner mandou mensagem ”✅ done” em DM nas últimas 4h
3. Input (leitura)
| Fonte | O que ler |
|---|---|
TASKS.md | Todas as tarefas abertas (parse via vault.parse_tasks_md()) |
06-directory/pessoas/*.md | Slack user ID de cada owner (campo contato.slack) |
memory/sessions/YYYY-MM-DD_task-reminders.md | Lembretes já enviados hoje (idempotência) |
4. Processo
Passo 1 — Parse de tarefas
Use vault.parse_tasks_md() para extrair as linhas. Para cada tarefa:
- Determine se entra na cesta de lembretes desta execução:
- Manhã (09:00): prazo hoje, prazo amanhã, ou vencidas (prazo < hoje) com status !=
concluida - Tarde (17:00): prazo hoje com status ainda
abertaouem progresso
- Manhã (09:00): prazo hoje, prazo amanhã, ou vencidas (prazo < hoje) com status !=
Passo 2 — Agrupar por owner
Use vault.tasks_by_owner(tasks) para pegar dict owner → [tarefas].
Observação: alguns owners são compostos (ex: “Pedro / Axios”, “Blaschek + Lucas + Gabriel”). Split já feito pela lib. Cada pessoa recebe 1 DM com suas tarefas.
Passo 3 — Resolver Slack user ID
Para cada owner em português (ex: “Rafael”, “Pedro”), olhar em 06-directory/pessoas/<slug>.md buscando:
- Frontmatter
contato.slackOUslack_id - Se não achar, logar warning em feedback e pular (não mandar DM genérica)
Passo 4 — Compor DM
Formato (manhã):
👋 Bom dia, [Nome]. Axios aqui — seu resumo de tarefas:
🔴 *Vencidas (ação hoje):*
- T-XXX | [tarefa] | venceu em [data] | [link-origem]
🟡 *Com prazo hoje:*
- T-XXX | [tarefa] | [link-origem]
🟢 *Com prazo amanhã:*
- T-XXX | [tarefa] | [link-origem]
Marque "✅" aqui no thread quando concluir alguma. Se precisar repassar prazo, me responde que registro.
Formato (tarde):
🌇 Boa tarde, [Nome]. Check-in de fim de dia:
*Pendentes de hoje:*
- T-XXX | [tarefa] | status atual: [aberta/em progresso]
Tudo sob controle? Se sim, só me confirma com "✅". Se precisar empurrar prazo ou marcar como bloqueada, também me avisa.
Passo 5 — Enviar e registrar
Para cada owner com DM a enviar:
slack.dm_user(slack_id, text)- Gravar TS e canal em memória
- Tolerar erro individual — se 1 owner falha, continua com os outros
Passo 6 — Consolidar
Gravar memory/sessions/YYYY-MM-DD_task-reminders.md com:
- Lista de owners notificados + IDs das tarefas mencionadas
- Nº total de DMs enviadas
- Owners pulados (sem Slack ID, ou silenciados)
5. Output
| Destino | Conteúdo |
|---|---|
| Slack (DMs) | 1 DM por owner com tarefas relevantes |
memory/sessions/YYYY-MM-DD_task-reminders.md | Log de envios |
memory/feedback/... (se aplicável) | Warnings de owner sem Slack ID |
6. Guardrails específicos
- Máximo 1 DM por owner por execução. Se manhã+tarde ambos enviariam, ok (são 2 runs distintas).
- Não mandar DM a Igor, Marcos, Michael, Daniel e outros não-Anouk sem autorização explícita do Pedro (configurável em
memory/integrations/slack.mdna listaexternal_do_not_dm). - Se tarefa é
concluidaoubloqueada, não lembrar - Se a tarefa tem dependência bloqueando (origem aponta para D-XXX com status bloqueado), mencionar isso no DM:
⏸️ bloqueada por D-XXX — aguardando [owner da dep] - Se >5 tarefas vencidas para o mesmo owner, incluir aviso suave:
Percebi que tem acumulado tarefas vencidas. Se quiser repriorizar comigo, só chamar. - Se alguém já respondeu ”✅” em thread anterior com
T-XXX, marcar como concluída na próxima atualização do TASKS.md (essa parte vai para um job futuro desync-task-responses, não este)
7. Critério de sucesso
- Todos os owners com tarefas relevantes receberam DM
- Nenhum DM duplicado na mesma execução
- Tarefas concluídas ou bloqueadas foram filtradas
- Session log gravado
8. Falha e retry
- Slack rate limit: respeitar Retry-After, pausar, retomar
- Se 3+ DMs falham consecutivas, abortar e DM a Pedro
9. Memória
Além da sessão normal, gravar tabela em memory/sessions/YYYY-MM-DD_task-reminders.md:
| Owner | Slack ID | Tarefas lembradas | Status |
|---|---|---|---|
| Antônio | U123 | T-001, T-002, T-003 | ok |
| Rafael | U456 | T-005, T-006, T-008 | ok |
| Pedro | U789 | T-011, T-012 | ok |
10. Referências
- jobs · daily-brief
- TASKS — fonte
- Integração Slack