Project Memory
by crtormo
README.md
# Project Memory 🧠
CRM personal inteligente que procesa conversaciones de WhatsApp para construir conocimiento sobre tus contactos, expuesto vía Model Context Protocol (MCP).
## ✨ Características
- **Procesamiento de Audio**: Diarización (pyannote) + Transcripción (Groq Whisper)
- **Identificación de Hablantes**: Distingue tu voz de la del contacto
- **Privacidad**: Sanitización de PII con Microsoft Presidio (RUT, teléfonos, emails)
- **Extracción Inteligente**: Qwen 3 32B via Groq para extraer hechos, sentimientos, temas
- **Búsqueda Semántica**: pgvector para encontrar conversaciones por contexto
- **MCP Server**: Expone tools para usar con Claude Desktop
## 🏗️ Arquitectura
```
WhatsApp → WaHA → n8n → Redis → Worker Python → PostgreSQL
↓
Claude Desktop ← MCP Server
```
## 🚀 Quick Start
```bash
# 1. Clonar
git clone https://github.com/crtormo/project-memory.git
cd project-memory
# 2. Configurar
cp .env.example .env
# Editar .env con tus API keys
# 3. Levantar
docker-compose up -d
# 4. Vincular WhatsApp
# Abrir http://localhost:3000 y escanear QR
```
## 🔧 Configuración
### Variables de Entorno
| Variable | Descripción |
|----------|-------------|
| `HUGGINGFACE_TOKEN` | Token para pyannote (diarización) |
| `GROQ_API_KEY` | API key de Groq (Whisper + Qwen) |
| `GOOGLE_API_KEY` | API key de Google AI Studio (fallback) |
### Servicios Docker
| Servicio | Puerto | Descripción |
|----------|--------|-------------|
| PostgreSQL | 5432 | Base de datos + pgvector |
| Redis | 6379 | Cola de mensajes |
| WaHA | 3000 | API WhatsApp |
| n8n | 5678 | Automatización |
## 🛠️ Herramientas MCP
| Tool | Descripción |
|------|-------------|
| `get_contact_summary` | Resumen completo de un contacto |
| `query_conversations` | Búsqueda semántica en historial |
| `add_reminder` | Crear recordatorio |
| `get_pending_reminders` | Ver recordatorios próximos |
| `list_contacts` | Listar todos los contactos |
### Configurar Claude Desktop
Agregar a `~/.claude/config.json`:
```json
{
"mcpServers": {
"project-memory": {
"command": "docker",
"args": ["exec", "-i", "project-memory-mcp", "python", "-m", "src.mcp_server.server"]
}
}
}
```
## 📁 Estructura
```
project-memory/
├── src/
│ ├── core/ # AudioProcessor, PrivacyService, Intelligence
│ ├── database/ # Models, Repositories, Connection
│ ├── services/ # BatchProcessor, MessageQueue, Notifications
│ └── mcp_server/ # Servidor MCP con tools
├── scripts/ # CLI utilities
├── docker/ # Dockerfiles
└── n8n/ # Workflows
```
## 📊 Stack Tecnológico
- **Python 3.11** + Poetry
- **PostgreSQL 16** + pgvector
- **Redis 7** para cola de mensajes
- **pyannote.audio** para diarización
- **Groq API** (Whisper + Qwen 3 32B)
- **Microsoft Presidio** para PII
- **MCP SDK** para Model Context Protocol
## 📝 Scripts CLI
```bash
# Verificar BD
python scripts/init_db.py
# Registrar tu voz
python scripts/enroll_voice.py
# Exportar datos
python scripts/export_data.py contacts --format csv
# Ver recordatorios
python scripts/check_reminders.py
```
## 🔒 Seguridad
- Las API keys nunca se commitean (están en `.env`)
- PII sanitizado antes de persistir
- Datos almacenados localmente (Home Lab)
## 📄 Licencia
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessSyncing