Terminado

Desarrollo de Automatización Rag con N8n, Supabase y Whatsapp para Gestión de Conocimiento Personal Cliente enterprise

Publicado el 30 Enero, 2026 en Programación y Tecnología

Sobre este proyecto

Abierto

### Contexto general

Se debe desarrollar una automatización en n8n compuesta por dos flujos independientes (lectura y escritura), ambos conectados a un único RAG (Retrieval Augmented Generation) en Supabase con pgvector. Cada flujo se explicará en un vídeo independiente. El sistema debe: 1) permitir consultar conocimiento personal desde WhatsApp mediante un agente; 2) alimentar y mantener actualizado ese conocimiento a partir de notas locales de Obsidian vía API local. Los flujos deben ser atómicos, reutilizables y desacoplados, confluyendo solo en el RAG.

### Arquitectura

Orquestador: n8n (self-hosted o cloud).
Vector store: Supabase con pgvector.
Entrada de consultas: WhatsApp (WhatsApp Business Cloud API o proveedor equivalente).
Fuente de conocimiento: Obsidian local vía Local rest api, expuesta mediante túnel seguro.
LLM: compatible con embeddings y generación de texto.
RAG: un único esquema y tablas compartidas por ambos flujos.

### Flujo 1: lectura (WhatsApp → RAG → WhatsApp)

Objetivo: que el usuario envíe preguntas por WhatsApp y reciba respuestas basadas exclusivamente en el conocimiento indexado.

Funcionamiento:

1. El usuario envía un mensaje por WhatsApp.
2. El proveedor lo entrega a n8n por webhook.
3. N8n convierte la pregunta en embedding.
4. Consulta Supabase para recuperar los chunks más relevantes por búsqueda vectorial.
5. Construye un prompt de contexto con los chunks recuperados (sin duplicados y con límite de tamaño).
6. El LLM genera una respuesta usando solo el contexto recuperado.
7. N8n devuelve la respuesta por WhatsApp.

Requisitos técnicos:

* Búsqueda vectorial con top_k configurable (recomendado inicial: 8).
* Filtros por metadatos en la recuperación: tipo_nota, ruta/carpeta de origen, tags si existen.
* Evitar duplicados en el contexto final y controlar el máximo de contexto para no degradar respuestas.
* Errores explícitos: sin resultados relevantes, fallo del LLM, fallo de conexión con Supabase o WhatsApp.
* Logs en n8n: top_k usado, número de chunks recuperados, tiempo aproximado de respuesta.

Entradas: texto libre desde WhatsApp.
Salidas: respuesta por WhatsApp + logs de ejecución.

### Flujo 2: escritura (Obsidian → RAG)

Objetivo: sincronizar notas locales de Obsidian hacia el RAG manteniéndolo actualizado y evitando duplicados/reindexación innecesaria.

Activación: manual o programada.

Funcionamiento:

1. Verificar disponibilidad de la API local de Obsidian antes de iniciar (healthcheck).
2. Si está disponible, listar notas a sincronizar que cumplan al menos una condición:

  * Contienen la etiqueta sincronizar.
  * Están dentro de una carpeta configurada.
3. Para cada nota seleccionada:

  * Obtener contenido en markdown.
  * Obtener nombre de fichero e id único si existe.
  * Normalizar texto.
  * Calcular hash de integridad (ej. SHA-256).
  * Comparar contra el último hash guardado en Supabase:

    * Si no cambió: omitir nota.
    * Si cambió o no existe: chunking, embeddings y upsert en Supabase con control anti-duplicados.
4. Finalizar con un resumen de sincronización.

Tipos de nota soportados (metadato tipo_nota):
Recursos externos, Objetivos, Diario, Memoria digital, Modelos mentales, Activos, Proyectos.
La clasificación puede basarse en carpeta, etiqueta o frontmatter YAML.

Requisitos técnicos del flujo 2:

* Identificador estable por nota (source_id):

  * Preferente: id persistente en YAML.
  * Alternativa: ruta completa del fichero.
* Anti-duplicados:

  * file_hash criptográfico (SHA-256 recomendado).
  * Comparación previa antes de reindexar.
  * Upsert en Supabase con clave única: source_id + chunk_index (o chunk_id).
* Chunking:

  * Tamaño recomendado: 500–900 tokens.
  * Solape: 10–15%.
* Embeddings coherentes con el modelo usado en el flujo de lectura.
* Manejo de errores: API Obsidian no disponible, fallo del túnel, errores de escritura en Supabase.

### Datos mínimos en Supabase (por chunk y por nota)

source_id, file_path, file_hash, file_name (para futuras actualizaciones), tipo_nota, tags, chunk_id, chunk_index, chunk_text, embedding, fecha_ultima_sincronizacion.

### Entregables

* Workflow n8n del flujo de lectura exportado en JSON.
* Workflow n8n del flujo de escritura exportado en JSON.
* Script SQL para crear tablas e índices en Supabase.
* Documentación técnica paso a paso: variables de entorno, configuración de proveedores, flujo de datos.
* Pruebas funcionales:

  * 2 ejemplos de sincronización desde Obsidian (uno por etiqueta y otro por carpeta).
  * 2 consultas completas desde WhatsApp al RAG.
* 2 vídeos (uno por flujo) explicando proceso, cada nodo y pruebas.

### Criterios de aceptación

* Segunda ejecución del flujo de escritura sin cambios no genera nuevos registros.
* Consultas desde WhatsApp devuelven respuestas coherentes y basadas en contenido sincronizado.
* No hay duplicados en Supabase tras múltiples sincronizaciones.
* Ambos flujos se ejecutan de forma independiente y solo comparten el RAG.

Categoría Programación y Tecnología
Subcategoría Inteligencia Artificial
Tamaño del proyecto Grande

Plazo de Entrega: No definido

Habilidades necesarias

Otros proyectos publicados por M.