Files
graph_explorer/issues/0020-email-bot-ingest.md
egutierrez 9042110ea2 docs(issues): plan enrichers asincronos + recoleccion web (0026-0030)
Cinco issues que componen el plan:
- 0026: sistema de jobs (infra, contrato wire)
- 0027: tipo Webpage + cache de documentos
- 0028: enricher fetch_webpage (MVP end-to-end)
- 0028b: enrichers extract_domain / extract_links / extract_text_entities
- 0029: variantes CDP (Chrome headless, screenshot)
- 0030: macro "Deep enrich" + expand_domain

Tambien anade los issues previos 0012-0025 que estaban untracked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 18:24:13 +02:00

47 lines
1.5 KiB
Markdown

---
id: 0020
title: Ingesta via email forwarding y bot Telegram/Signal
status: pending
priority: low
created: 2026-05-01
depends_on: [0012]
---
## Objetivo
Ingerir entidades sin estar delante del PC. Util para capturar cosas
sobre la marcha (movil, lectura en otra pantalla, conversaciones).
## Canales
- **Email**: direccion dedicada (mailbox o alias) que se chequea via
IMAP cada N minutos. Adjuntos -> ingesta como en 0015. Cuerpo ->
extract.
- **Bot Telegram/Signal**: forwardear un mensaje, una imagen, o escribir
comandos (`/add empresa Acme`, `/relate Acme owns Bravo`). El bot
habla con el endpoint 0012.
## Alcance
- Cliente IMAP minimo o uso de un MTA local (postfix+dovecot) que
redirija a un script.
- Bot Telegram: BotFather + python-telegram-bot o equivalente Go (vive
en `apps/<bot_name>/` con tag `service`).
- Auth: solo procesar mensajes de chat IDs / direcciones whitelisted en
config.
- Confirmacion: el bot responde con preview ("¿añado estas 3 entidades?
responde 'si' o 'no'") antes de commit.
## Decisiones
- Bot self-hosted (no SaaS) — corre como service en VPS o en el PC.
- Multiples grafos: el bot puede targetear distintos `operations.db`
segun el chat de origen (mapping en config).
## Definicion de hecho
- Reenvio un PDF a la direccion dedicada y, en menos de 2 minutos, veo
las entidades en el grafo con notificacion del bot.
- El bot rechaza mensajes de chat IDs no autorizados sin responder.
- Comando `/search Acme` desde el bot devuelve hits del grafo.