Files

249 lines
8.8 KiB
Markdown

# Automatización Bot Prisa Yachts
**Fecha:** 2 julio 2026
**Responsable:** Álvaro
**n8n:** https://n8n.crewinghunters.com
---
## ¿Qué es esto?
Sistema de automatización de captación de clientes para **Prisa Yachts LLC**, empresa de servicios náuticos en Florida. El proyecto tiene dos pilares:
1. **Bot de WhatsApp** — atiende consultas 24/7, clasifica el servicio solicitado y notifica al especialista correcto
2. **Directorio marino de Florida** — base de datos de marinas, astilleros, almacenamiento y tiendas de suministros, con emails y websites, para campañas de captación
---
## Empresa: Prisa Yachts LLC
```
📞 (786) 396-3315
📧 info@prisayachts.com
🌐 prisayachts.com
📸 @prisayachts
Slogan: "Safe Command ♦ Luxury Maintenance and Care"
```
### Servicios y responsables
| # | Servicio | Especialista | WhatsApp |
|---|----------|-------------|----------|
| 1 | Engines & Mechanical | Álvaro | +1 (954) 655-4084 |
| 2 | Electrical & Electronics / NMEA | Álvaro | +1 (954) 655-4084 |
| 3 | Teak Deck Recovery | Federico | +1 (754) 209-3375 |
| 4 | Captaining & Crewing | Federico | +1 (754) 209-3375 |
| 5 | Yacht Care & Detailing | Federico | +1 (754) 209-3375 |
| 6 | Crew Placement & Staffing | Federico | +1 (754) 209-3375 |
| 7 | Other / Otro | Ambos | — |
---
## Pilar 1 — Bot de WhatsApp
### Arquitectura
```
Cliente WhatsApp
Meta Webhook ──► n8n Webhook (POST /prisa-whatsapp)
State Machine (Code node)
┌───────────┴───────────┐
▼ ▼
Is Verify? Is Send to Client?
(GET challenge) │
│ ▼
Respond 200 Enviar mensaje al cliente
Notify Specialist?
┌────────┴────────┐
▼ ▼
Is Both? Is Alvaro?
┌──┴──┐ ┌──┴──┐
▼ ▼ ▼ ▼
Álvaro Federico Álvaro Federico
```
### Flujo del bot (state machine)
```
PASO 1 — "new" / reset words (hola, hello, hi, menu, start)
→ Enviar MENÚ PRINCIPAL (opciones 1-7)
→ Estado: waiting_category
PASO 2 — "waiting_category"
→ Cliente responde 1-7
→ Enviar formulario del servicio específico
→ Estado: collecting_info
PASO 3 — "collecting_info"
→ Cliente envía sus datos
→ Enviar CONFIRMACIÓN al cliente
→ Notificar especialista con resumen del caso
→ Estado: complete
PASO 4 — "complete"
→ Siguiente mensaje reinicia el flujo desde el menú
```
### Estado actual del bot
| Ítem | Estado |
|------|--------|
| Workflow creado en n8n | ✅ Desplegado |
| Credential WhatsApp_Prisa | ✅ Creada (placeholder) |
| Workflow activo | ✅ Activo |
| Webhook URL | `https://n8n.crewinghunters.com/webhook/prisa-whatsapp` |
| Token de Meta | ⏳ **Pendiente aprobación Meta** |
| Phone Number ID | ⏳ **Pendiente aprobación Meta** |
### Pasos pendientes — Bot WhatsApp
- [ ] **Meta aprueba** la cuenta de WhatsApp Business
- [ ] Actualizar credencial `WhatsApp_Prisa` en n8n:
- Cambiar `PLACEHOLDER_PENDING_META_APPROVAL``Bearer <ACCESS_TOKEN>`
- [ ] En los 3 nodos HTTP del workflow, cambiar URL:
- Reemplazar `PLACEHOLDER_PHONE_NUMBER_ID``<YOUR_PHONE_NUMBER_ID>`
- [ ] Configurar webhook en Meta Developer Portal:
- URL: `https://n8n.crewinghunters.com/webhook/prisa-whatsapp`
- Verify Token: (cualquier string, ej. `prisayachts2025`)
- Suscribir a: `messages`
- [ ] Prueba final: enviar "hola" al número del negocio desde WhatsApp
---
## Pilar 2 — Directorio Marino de Florida
### Objetivo
Construir la base de datos más completa posible de negocios náuticos en Florida para usar en campañas de captación (email + WhatsApp). Cada registro incluye:
`Nombre | Dirección | Teléfono | Email | Ciudad | Condado | Website`
### Categorías del directorio
| Hoja | Descripción |
|------|-------------|
| `MARINAS` | Puertos deportivos y marinas |
| `ASTILLEROS` | Boatyards y talleres náuticos |
| `ALMACENAMIENTO` | Boat storage / dry stack |
| `SUMINISTROS` | Tiendas de suministros marinos |
### Cobertura geográfica actual
El archivo principal es `Directorio_Marino_FL_Acumulativo_4.xlsx`.
| Sesión | Zona | Condados principales |
|--------|------|---------------------|
| 1-3 | Florida Sur | Miami-Dade, Broward, Palm Beach |
| 4 | Florida Centro | Martin, St. Lucie, Okeechobee, Sarasota, Charlotte, Lee, Collier, Monroe (Keys) |
| 5 | Florida Oeste-Centro | Pinellas, Hillsborough, Manatee, Pasco, Hernando |
| 6 *(add_north_florida.js)* | Florida Norte | Volusia, Flagler, Indian River, Brevard, Citrus, Levy, Dixie, Taylor, Wakulla, Franklin, Gulf, Bay, Walton, Okaloosa, Santa Rosa, Escambia, Duval, St. Johns, Nassau |
**Registros Florida Norte (Sesión 6):**
- Marinas: 128
- Astilleros: 24
- Almacenamiento: 16
- Suministros: 37
- **Total sesión 6: 205 registros**
### Scraper de emails (`scrape_marine_emails.js`)
Automatiza la búsqueda de emails y websites para los registros que no los tienen:
```
Para cada negocio en el Excel:
1. Buscar en DuckDuckGo: "nombre" ciudad Florida marina contact email
2. Filtrar dominios basura (Yelp, Google, Facebook, etc.)
3. Scrapear homepage → página /contact → página /about
4. Extraer emails con regex, puntuar por relevancia
5. Guardar resultado en el Excel (checkpoint cada 25 filas)
```
**Última ejecución del scraper:**
- Procesó hoja MARINAS (174 filas)
- Guardado de emergencia a `_output.xlsx` (archivo bloqueado por Excel)
- Muchos registros de Miami/Broward sin email (negocios grandes, emails corporativos difíciles de scrapear)
### Pasos pendientes — Directorio
- [ ] Verificar completitud del Excel actual (contar registros por zona y categoria)
- [ ] Correr scraper en `MARINAS_NORTE`, `ASTILLEROS_NORTE`, `ALMACENAMIENTO_NORTE`, `SUMINISTROS_NORTE`
- [ ] Completar emails faltantes de Florida Sur manualmente (prioridad: marinas grandes)
- [ ] Decidir si expandir a otros estados (Georgia, Carolina del Sur, Texas...)
- [ ] Consolidar todos los acumulativos en un único archivo maestro limpio
---
## Pilar 3 — Campañas de Captación (próximo paso)
Una vez el directorio esté completo con emails, lanzar campañas automáticas:
### Email marketing
- Plataforma a definir: Mailchimp / Brevo / n8n con SMTP
- Segmentación por tipo de negocio y zona geográfica
- Template con brochure de Prisa Yachts (ya existe `Prisa_Yachts_Brochure.pdf`)
- Medir aperturas y clicks
### WhatsApp marketing (futuro)
- Usar la API aprobada de Meta para enviar mensajes masivos (templates aprobados)
- Segmentar por servicio relevante para cada tipo de marina
- Flujo: contacto frío → si responde, entra al bot automáticamente
---
## Archivos del proyecto
| Archivo | Descripción |
|---------|-------------|
| `create_whatsapp_workflow.js` | Despliega el bot en n8n (ejecutar una vez) |
| `scrape_marine_emails.js` | Scraper de emails del directorio |
| `add_north_florida.js` | Agrega datos de Florida Norte al Excel |
| `convert_to_pdf.js` | Genera `Prisa_Yachts_Brochure.pdf` desde HTML |
| `Directorio_Marino_FL_Acumulativo_4.xlsx` | Base de datos principal |
| `Directorio_Marino_FL_Acumulativo_4_output.xlsx` | Copia de emergencia del scraper |
| `Directorio_Marino_FL_Acumulativo_5.xlsx` | Datos adicionales (pendiente integrar) |
| `Prisa_Yachts_Brochure.html` | Brochure en HTML |
| `Prisa_Yachts_Brochure.pdf` | Brochure generado |
| `scrape_log.txt` | Log de la última ejecución del scraper |
---
## Dependencias técnicas
```json
{
"axios": "^1.18.1", // HTTP requests
"cheerio": "^1.2.0", // HTML parsing / scraping
"puppeteer": "^25.1.0", // HTML → PDF
"xlsx": "^0.18.5" // Lectura/escritura Excel
}
```
**n8n:** Self-hosted en `https://n8n.crewinghunters.com`
**API Key n8n:** En `create_whatsapp_workflow.js` (hardcoded — mover a variable de entorno)
---
## Resumen de prioridades
### 🔴 Bloqueado (esperando tercero)
1. Aprobación de Meta para WhatsApp Business API
### 🟡 En progreso
2. Completar directorio marino (scraper + revisión manual)
3. Integrar `Directorio_Marino_FL_Acumulativo_5.xlsx` al archivo principal
### 🟢 Listo para ejecutar cuando Meta apruebe
4. Actualizar credenciales en n8n y probar bot en producción
5. Lanzar primera campaña de email a marinas de Florida Sur
### 🔵 Próximos pasos estratégicos
6. Diseñar templates de WhatsApp aprobados por Meta
7. Construir workflow n8n para envío masivo de emails
8. Expandir directorio a otras costas (Gulf Coast, Carolinas)