¿Qué es GhostPilot?
GhostPilot es un motor cognitivo diseñado para automatizar conversaciones en plataformas de mensajería con una tasa de conversión del 67%.
A diferencia de los chatbots tradicionales, GhostPilot usa una arquitectura Split-Brain (Mixture of Architects) donde dos modelos de lenguaje trabajan en tándem:
Características principales
¿Para quién es?
GhostPilot está diseñado para equipos que necesitan escalar conversaciones de ventas, soporte o engagement sin escalar personal. Ideal para:
Inicio rápido — 5 minutos
Sigue estos pasos para tener tu primera persona operativa en menos de 5 minutos.
Requisitos previos
Paso 1: Acceder al Dashboard
Entra en tu panel de control en dashboard.ghostpilot.dev con las credenciales que recibes al suscribirte.
Paso 2: Crear tu primera persona
Desde el Dashboard, haz clic en "Nueva Persona" y configura:
Nombre: Azul Idioma: Español (Argentina) Ciudad: Buenos Aires Edad: 22 Personalidad: Extrovertida, cálida, curiosa
Paso 3: Conectar Telegram
Introduce tu API_ID, API_HASH y número de teléfono. GhostPilot maneja la autenticación automáticamente.
TELEGRAM_API_ID=tu_api_id TELEGRAM_API_HASH=tu_api_hash TELEGRAM_PHONE=+34600000000
Paso 4: Configurar LLM
Elige tu proveedor y modelos desde el Dashboard:
Proveedor: OpenRouter (recomendado) Arquitecto: DeepSeek Reasoner Máscara: GPT-5.4
Paso 5: Activar y verificar
Haz clic en "Activar Persona". Abre tu canal CCTV de Telegram para ver la actividad:
[system] 22:31:04 — Lead entrante: +34 612***891 [system] 22:31:04 — Fase: COLD → Activando hook [mask] holaa! 😊 cómo te llamás?
¡Listo! Tu persona está operativa. Todos los parámetros se pueden ajustar en tiempo real desde el Dashboard.
Arquitectura Split-Brain (MoA)
La arquitectura Split-Brain es el núcleo de GhostPilot. Separa la inteligencia estratégica de la ejecución conversacional.
¿Por qué dos LLMs?
Un solo modelo tiende a perder el hilo estratégico cuando mantiene una personalidad. La separación permite:
Flujo de un mensaje
Lead envía mensaje
↓
[Arquitecto] Recibe: contexto completo + historial + perfil lead
↓
[Arquitecto] Genera: directiva JSON
{
"táctica": "rapport",
"objetivo": "generar confianza",
"tono": "casual-cálido",
"fase_actual": "NAME",
"siguiente_acción": "preguntar sobre trabajo"
}
↓
[Máscara] Recibe: directiva + personalidad configurada
↓
[Máscara] Genera: mensaje final con personalidad humana
"marcos! qué onda, de qué trabajás? 😄"
↓
[Anti-Ban] Aplica: delay variable + typing simulation
↓
Lead recibe mensaje (8-25 segundos después)Modelos en producción
| Rol | Modelo | Por qué |
|---|---|---|
| Arquitecto | DeepSeek Reasoner ⭐ | Razonamiento profundo, coste $0.28/M input |
| Arquitecto | DeepSeek Chat | Alternativa más rápida y barata |
| Máscara | GPT-5.4 ⭐ | SOTA abril 2026, español nativo, $0.003/M input |
| Máscara | GPT-5.4 Mini | Fallback de emergencia, más caro pero fiable |
| Máscara | Llama 4 Scout (Groq) | Ultra rápido, buen roleplay, $0.11/M input |
Funnel de Conversión — 7 Fases
El funnel opera de forma determinística: cada fase tiene un objetivo claro y un trigger de avance automático.
Las 7 fases
| # | Fase | Objetivo | Trigger de avance | Media |
|---|---|---|---|---|
| 0 | COLD | Hook inicial | Respuesta recibida | Solo texto |
| 1 | HOOKED | Rapport + nombre | Nombre detectado (NER) | Solo texto |
| 2 | IDENTIFIED | Extraer ciudad | Ciudad detectada (NER) | 1 hook_selfie |
| 3 | ENGAGED | Generar confianza | Engagement > 0.7 | 2-3 teasing_light |
| 4 | PAYWALLED | Forzar paywall | Hard-cap (20 msgs) | 0 fotos — crisis |
| 5 | CONVERTING | Inyectar link OF | Click detectado | 1 teasing_hot + link |
| 6 | SUBSCRIBER | Lead convertido | Suscripción confirmada | Auto-pause |
Hard-Cap determinístico
Si el lead no avanza orgánicamente de Fase 4 a Fase 5, el sistema fuerza la transición después de un número configurable de mensajes (default: 20).
{
"funnel": {
"hard_cap_messages": 20,
"engagement_threshold": 0.7,
"auto_pause_on_conversion": true
}
}Engagement Score
El engagement se calcula automáticamente basado en:
Auto-pause
Tras la conversión (Fase 6), el bot se pausa automáticamente para:
CadenceEngine — Fragmentación humana
El CadenceEngine es el motor que convierte respuestas de IA en secuencias de sub-mensajes que imitan el patrón de escritura humana.
¿Por qué fragmentar?
Un humano NO envía un mensaje de 200 caracteres de golpe. Lo divide en 2-4 mensajes cortos con pausas entre ellos. El CadenceEngine replica esto.
Ejemplo
Input del pipeline:
"hola marcos! todo bien?? ando por madrid jaja vos de dónde sos"
Output fragmentado:
[typing 3.2s] → "hola marcos!" [pause 1.4s] [typing 2.1s] → "todo bien?? ando por madrid jaja" [pause 1.8s] [typing 1.5s] → "vos de dónde sos"
Parámetros configurables
CADENCE_MS_PER_CHAR=0.35 # 350ms por carácter de typing CADENCE_JITTER_MIN=3.0 # Jitter mínimo pre-fragmento (seg) CADENCE_JITTER_MAX=6.0 # Jitter máximo pre-fragmento CADENCE_INTER_FRAGMENT_MIN=4.0 # Pausa mínima entre fragmentos CADENCE_INTER_FRAGMENT_MAX=9.0 # Pausa máxima entre fragmentos CADENCE_LONG_THRESHOLD=60 # Si >60 chars, forzar split en coma
Lógica de split
., .., !, ?, emojisChatAction.RECORD_AUDIO previoDebounce inteligente
Si el lead envía múltiples mensajes rápidos, el bot espera 8 segundos de silencio antes de procesar. Esto agrupa mensajes y evita respuestas parciales.
Sistema Multi-Persona
Cada persona es una configuración independiente que define la identidad completa del agente conversacional.
Estructura de una persona
{
"id": "azul",
"name": "Azul",
"age": 24,
"city": "Buenos Aires",
"language": "es-AR",
"bio": "Estudiante de psicología, le gusta el yoga y los gatos",
"personality": {
"warmth": 0.8,
"humor": 0.6,
"flirtiness": 0.7,
"emoji_frequency": 0.4
},
"llm": {
"architect": "deepseek/deepseek-chat-v3",
"mask": "meta-llama/llama-4-maverick"
},
"funnel": {
"hard_cap_messages": 20,
"engagement_threshold": 0.7,
"paywall_url": "https://..."
},
"content_vault": "./vaults/azul/"
}Crear una nueva persona
npm run persona:create -- \ --name "Sara" \ --age 37 \ --city "Madrid" \ --lang "es-ES" \ --bio "Funcionaria, le gusta el vino y viajar"
Dialectos soportados
Aislamiento total
Configuración paso a paso
Guía completa para configurar tu primera persona en GhostPilot.
Requisitos
1. Suscripción y acceso
dashboard.ghostpilot.dev2. Credenciales de Telegram
Necesitas un API_ID y API_HASH de Telegram:
API_ID y API_HASH al Dashboard3. Crear tu Persona
Desde el Dashboard, configura tu nueva persona:
Nombre: [nombre del personaje] Idioma: es-AR / es-ES / en-US / pt-BR Ciudad: [ciudad donde "vive"] Edad: [edad del personaje] Personalidad: [descripción libre] Funnel link: [tu link de OF u otra plataforma]
4. Configurar LLM
Elige tu proveedor y modelos desde el Dashboard:
Proveedor: OpenRouter (recomendado) API Key: sk-or-... Arquitecto: DeepSeek Reasoner Máscara: GPT-5.4
5. (Opcional) Conectar ElevenLabs
Si quieres notas de voz con tu voz clonada:
ELEVENLABS_API_KEY=sk_... ELEVENLABS_VOICE_ID=tu_voice_id ELEVENLABS_MODEL=eleven_multilingual_v2
> Requiere plan Creator ($22/mes) o superior en ElevenLabs.
6. Activar y monitorizar
Configurar proveedores LLM
GhostPilot es compatible con cualquier proveedor que implemente la API de OpenAI.
Configuración en producción (default)
Esta es la configuración que usamos en producción con los mejores resultados:
# Nodo 1: La Arquitecta (DeepSeek API directa — Estrategia) DEEPSEEK_API_KEY=sk-... DEEPSEEK_BASE_URL=https://api.deepseek.com DEEPSEEK_MODEL=deepseek-reasoner # Nodo 2: La Máscara (GPT-5.4 vía OpenRouter — Renderizado) MASK_BASE_URL=https://openrouter.ai/api/v1 MASK_MODEL=openai/gpt-5.4 MASK_FALLBACK_MODEL=openai/gpt-5.4-mini # STT (Transcripción de audios del lead) STT_MODEL=google/gemini-2.0-flash-001 # Vision Agent (Análisis de imágenes) VISION_MODEL=openai/gpt-4o
¿Por qué GPT-5.4 como Máscara?
Proveedores soportados
| Proveedor | Rol recomendado | Modelos |
|---|---|---|
| DeepSeek API | Arquitecto | deepseek-reasoner, deepseek-chat |
| OpenRouter | Máscara / STT | GPT-5.4, Llama 4, Gemini Flash |
| OpenAI directo | Máscara / Vision | gpt-5.4, gpt-4o |
| Groq | Máscara (ultra rápido) | Llama 4 Scout |
| Google AI | STT | Gemini 2.0 Flash |
| Custom (vLLM) | Máscara | Cualquier modelo local |
Costes por modelo (precios abril 2026)
| Rol | Modelo | Input/1M | Output/1M | Est./1000 msgs |
|---|---|---|---|---|
| Arquitecto | DeepSeek Reasoner | $0.28 | $0.42 | $0.12 |
| Arquitecto | DeepSeek Chat | $0.14 | $0.28 | $0.07 |
| Máscara | GPT-5.4 ⭐ | $0.003 | $0.015 | $0.003 |
| Máscara | GPT-5.4 Mini | $0.75 | $4.50 | $0.85 |
| Máscara | Llama 4 Scout (Groq) | $0.11 | $0.34 | $0.08 |
| Vision | GPT-4o | $2.50 | $10.00 | ~$0.02/foto |
| STT | Gemini 2.0 Flash | $0.10 | $0.40 | ~$0.001/audio |
Coste total en producción (default)
Con DeepSeek Reasoner + GPT-5.4 (configuración por defecto):
Arquitecto: ~$0.12 / 1.000 msgs
Máscara: ~$0.003 / 1.000 msgs
Vision: ~$0.02 / foto analizada
STT: ~$0.001 / audio transcrito
─────────────────────────────────
Total: ~$0.15 / 1.000 mensajes
~$2.00 / 1.000 leads completosResultado: Un plan Growth ($249/mes, 10.000 msgs) consume ~$1.50 en tokens LLM. El 99.4% del coste es la suscripción, no los LLMs.
Dashboard — Control total por persona
Cada persona tiene parámetros configurables que se controlan desde el Dashboard (panel web) o directamente via el archivo de configuración JSON.
Parámetros de Media (fotos y audios)
| Parámetro | Default | Descripción |
|---|---|---|
max_photos_per_phase | Varía por fase | Máximo de fotos que se envían en cada fase del funnel |
photo_cooldown_msgs | 8 | Mensajes mínimos entre cada envío de foto |
photo_probability | 0.7 | Probabilidad de enviar foto cuando el Arquitecto la sugiere (0-1) |
voice_note_frequency | 10 | Enviar 1 audio cada N mensajes de texto |
voice_note_min_engagement | 0.5 | Engagement mínimo para activar audios (0-1) |
voice_enabled | true | Habilitar/deshabilitar notas de voz |
stt_enabled | true | Habilitar transcripción de audios entrantes |
vision_enabled | true | Habilitar análisis de fotos entrantes |
watermark_opacity | 0.04 | Opacidad del watermark en fotos (0-1) |
Parámetros del Funnel
| Parámetro | Default | Descripción |
|---|---|---|
hard_cap_messages | 20 | Forzar avance de fase tras N mensajes sin progreso |
engagement_threshold | 0.7 | Score mínimo para avanzar de ENGAGED → PAYWALLED |
auto_pause_on_conversion | true | Pausar bot tras conversión exitosa |
paywall_url | — | URL del OF/link de pago a inyectar |
max_reengagement_attempts | 2 | Intentos de re-engagement por lead |
stale_threshold_hours | 6 | Horas de inactividad para activar re-engagement |
Parámetros de Cadencia (Anti-Ban)
| Parámetro | Default | Descripción |
|---|---|---|
cadence_ms_per_char | 0.35 | Millisegundos de typing por carácter |
cadence_jitter_min | 3.0 | Delay mínimo antes de responder (seg) |
cadence_jitter_max | 6.0 | Delay máximo antes de responder (seg) |
inter_fragment_min | 4.0 | Pausa mínima entre sub-mensajes (seg) |
inter_fragment_max | 9.0 | Pausa máxima entre sub-mensajes |
debounce_seconds | 8 | Espera si el lead envía msgs rápidos |
rate_global | 20/s | Límite global de mensajes por segundo |
rate_per_chat | 1/3s | Límite por chat individual |
Parámetros de la Máscara (LLM)
| Parámetro | Default | Descripción |
|---|---|---|
mask_temperature | 0.85 | Creatividad de la Máscara (0-2) |
mask_max_tokens | 120 | Longitud máxima de respuesta |
mask_min_p | 0.0 | Min-P sampling (0 = desactivado) |
architect_temperature | 0.3 | Precisión del Arquitecto |
architect_max_tokens | 300 | Máx tokens para directiva JSON |
Parámetros de Identidad
| Parámetro | Default | Descripción |
|---|---|---|
display_name | — | Nombre visible en Telegram |
age | — | Edad de la persona |
city | — | Ciudad principal |
dialect | es-AR | Dialecto de escritura |
bio | — | Biografía/backstory del personaje |
personality.warmth | 0.8 | Calidez en la conversación (0-1) |
personality.humor | 0.6 | Nivel de humor (0-1) |
personality.flirtiness | 0.7 | Nivel de coqueteo (0-1) |
personality.emoji_frequency | 0.4 | Frecuencia de emojis (0-1) |
Parámetros de Horario
| Parámetro | Default | Descripción |
|---|---|---|
timezone | Europe/Madrid | Zona horaria del personaje |
quiet_hours_start | 01:00 | Inicio de horario de silencio |
quiet_hours_end | 09:00 | Fin de horario de silencio |
weekend_shift_hours | 1 | Retraso de activación en fines de semana |
Parámetros de Voice (ElevenLabs)
| Parámetro | Default | Descripción |
|---|---|---|
elevenlabs_api_key | — | API key del cliente (su propia cuenta) |
elevenlabs_voice_id | — | ID de la voz clonada (Professional Cloning) |
elevenlabs_model | eleven_multilingual_v2 | Modelo de síntesis |
voice_stability | 0.50 | Estabilidad de voz (0-1) |
voice_similarity_boost | 0.80 | Fidelidad al clon (0-1) |
voice_style | 0.15 | Expresividad (0-1) |
voice_record_sim_min | 2.0 | Simulación mínima de grabación (seg) |
voice_record_sim_max | 4.5 | Simulación máxima de grabación (seg) |
Ejemplo de configuración completa
{
"id": "azul",
"display_name": "Azul",
"age": 24,
"city": "Buenos Aires",
"dialect": "es-AR",
"personality": {
"warmth": 0.8,
"humor": 0.6,
"flirtiness": 0.7,
"emoji_frequency": 0.4
},
"media": {
"max_photos_per_phase": { "2": 1, "3": 3, "5": 1 },
"photo_cooldown_msgs": 8,
"photo_probability": 0.7,
"voice_note_frequency": 10,
"voice_note_min_engagement": 0.5,
"voice_enabled": true,
"stt_enabled": true,
"vision_enabled": true,
"watermark_opacity": 0.04
},
"funnel": {
"hard_cap_messages": 20,
"engagement_threshold": 0.7,
"auto_pause_on_conversion": true,
"paywall_url": "https://onlyfans.com/azuulitaa",
"max_reengagement_attempts": 2,
"stale_threshold_hours": 6
},
"cadence": {
"ms_per_char": 0.35,
"jitter": [3.0, 6.0],
"inter_fragment": [4.0, 9.0],
"debounce_seconds": 8
},
"llm": {
"architect_model": "deepseek-reasoner",
"architect_temperature": 0.3,
"mask_model": "openai/gpt-5.4",
"mask_temperature": 0.85,
"mask_max_tokens": 120
},
"voice": {
"elevenlabs_voice_id": "imRteb2FRAXcVJ4vtElN",
"stability": 0.50,
"similarity_boost": 0.80,
"style": 0.15
},
"schedule": {
"timezone": "Europe/Madrid",
"quiet_hours": [1, 9],
"weekend_shift": 1
}
}Dashboard UI (roadmap)
El Dashboard web permitirá controlar todos estos parámetros visualmente:
Content Vault — Media organizada
El Content Vault es el sistema de archivos que organiza las fotos, audios y media de cada persona.
Estructura del vault
vaults/azul/ ├── selfies/ │ ├── casual_01.jpg │ ├── casual_02.jpg │ └── glam_01.jpg ├── audios/ │ ├── greeting.ogg │ ├── laugh.ogg │ └── flirty_01.ogg ├── stories/ │ ├── gym_01.jpg │ └── coffee_01.jpg └── config.json
Config del vault
{
"selfie_strategy": "progressive",
"selfie_phases": {
"ENGAGED": ["casual_01.jpg", "casual_02.jpg"],
"PAYWALL": ["glam_01.jpg"]
},
"audio_strategy": "contextual",
"audio_phases": {
"CITY": ["greeting.ogg"],
"ENGAGED": ["laugh.ogg", "flirty_01.ogg"]
}
}Preparar fotos
Preparar audios
Anti-Ban Shield — Sistema multicapa
El Anti-Ban Shield es lo que hace que GhostPilot tenga 0 bans en +2.4 millones de mensajes.
Capas de protección
1. IP Residencial
Cada persona opera desde una IP residencial única, no datacenter.
PROXY_TYPE=socks5 PROXY_HOST=residential.proxy.com PROXY_PORT=1080 PROXY_USER=user PROXY_PASS=pass
2. Device Fingerprinting
Emula un dispositivo real con TLS fingerprints válidos.
3. Cadencia Humana
Delay variable entre mensajes con distribución gaussiana:
{
"anti_ban": {
"delay_min_ms": 8000,
"delay_max_ms": 25000,
"delay_distribution": "gaussian",
"typing_duration_per_char_ms": 45
}
}4. Tremor Neuromotor
Simula micro-delays y errores de tipeo propios de la motricidad fina humana:
5. Horario Circadiano
El bot respeta horarios de sueño configurables:
{
"schedule": {
"active_hours": [9, 23],
"timezone": "Europe/Madrid",
"weekend_shift": 1
}
}6. Typing Simulation
El indicador "escribiendo..." se activa con duración proporcional al mensaje generado, imitando velocidad de tecleo real.
CCTV — Control en tiempo real
El CCTV (Closed-Circuit Telegram View) te permite observar y controlar cada conversación desde un canal de Telegram dedicado.
Configurar el canal CCTV
@userinfobot).env:CCTV_CHANNEL_ID=-1001234567890 CCTV_ENABLED=true CCTV_LOG_LEVEL=full
Niveles de logging
| Nivel | Qué muestra |
|---|---|
minimal | Solo conversiones y errores |
standard | Mensajes entrantes/salientes + fases |
full | Todo: directivas del Arquitecto, scores, timing |
Formato de los logs
[system] 22:31:04 — Lead: +34 612***891 | Fase: COLD
[lead] hola guapa 😍
[architect] → {"táctica":"warmHook","objetivo":"extraer nombre"}
[mask] holaa! 😊 cómo te llamás?
[system] 22:32:18 — Fase: COLD → NAME ✓
[system] 22:33:45 — Engagement: 0.73 ▲Comandos de control
Envía estos comandos al canal CCTV para controlar el motor:
| Comando | Acción |
|---|---|
/stop <lead_id> | Pausa conversación específica |
/stop all | Pausa todas las conversaciones |
/resume <lead_id> | Reanuda conversación |
/resume all | Reanuda todas |
/ban <lead_id> | Bloquea lead permanentemente |
/status | Estado del motor y todas las personas |
/stats | Métricas últimas 24h |
/help | Lista de comandos |
Escucha de Voice Notes (STT)
GhostPilot no ignora las notas de voz. Cuando un lead envía un audio, el sistema lo transcribe y responde en contexto.
Cómo funciona
Configuración
LLM_API_KEY=sk-or-v1-... # Misma key que el pipeline principal LLM_BASE_URL=https://openrouter.ai/api/v1 STT_MODEL=google/gemini-2.0-flash-001
Ejemplo en CCTV
[lead] 🎤 Nota de voz (12s)
[system] STT: descargado 45.2KB → transcribiendo...
[system] STT OK: "hola guapa quería saber si estás en madrid"
[architect] → {"tactica":"reveal_city","trigger_media":"NONE"}
[mask] ay sii estoy en madrid! vos de dónde sos? 😊Detalles técnicos
Voice Notes IA — ElevenLabs (BYOK)
GhostPilot genera notas de voz con voz clonada profesional usando la API de ElevenLabs. El resultado es indistinguible de una persona real.
> BYOK (Bring Your Own Key): Cada cliente conecta su propia cuenta de ElevenLabs. GhostPilot no incluye créditos de ElevenLabs — tú controlas tu plan, tu voz clonada y tus costes.
Requisitos del cliente
ELEVENLABS_API_KEY=sk_... # Tu API key de ElevenLabs ELEVENLABS_VOICE_ID=abc123... # ID de tu voz clonada ELEVENLABS_MODEL=eleven_multilingual_v2
Cómo funciona
Corrección fonética automática
Antes de sintetizar, el motor aplica correcciones para que la ñ suene natural:
España → Espania cariño → carinio mañana → maniana cumpleaños → cumpleanios
Esto asegura que ElevenLabs pronuncie correctamente fonemas problemáticos.
Voice Settings
{
"stability": 0.50,
"similarity_boost": 0.80,
"style": 0.15,
"use_speaker_boost": true
}Timing de entrega
VOICE_RECORD_SIM_MIN=2.0 # Simula 2s mínimo de "grabación" VOICE_RECORD_SIM_MAX=4.5 # Simula 4.5s máximo VOICE_RECORD_MS_PER_CHAR=0.08 # 80ms extra por carácter
El lead ve el indicador "Grabando audio..." exactamente el tiempo que tomaría grabar ese audio manualmente.
Professional Voice Cloning
Para clonar una voz en ElevenLabs:
voice_id generado al Dashboard de GhostPilotCoste para el cliente
| Plan ElevenLabs | Precio | Caracteres/mes | Audios aprox. |
|---|---|---|---|
| Creator | $22/mes | 100.000 chars | ~500 audios |
| Pro | $99/mes | 500.000 chars | ~2.500 audios |
| Scale | $330/mes | 2.000.000 chars | ~10.000 audios |
> Nota: Si el cliente no conecta ElevenLabs, el bot funciona perfectamente solo con texto. Los audios son opcionales y mejoran la conversión un ~15%.
Cuándo enviar un audio
El Arquitecto decide basándose en:
Análisis de Imágenes (Vision Agent)
Cuando un lead envía una foto, el VisionAgent la analiza automáticamente con GPT-4o y extrae contexto útil para la conversación.
Dos modos de operación
Modo A — Comprobante de pago
Si la imagen parece un recibo de transferencia, el agente actúa como auditor de fraude:
[COMPROBANTE_VALIDO: MONTO_XXX] o [COMPROBANTE_INVALIDO: razón]Modo B — Foto normal
Si la imagen es una selfie, foto de entorno, etc.:
Configuración
VISION_MODEL=openai/gpt-4o VISION_TIMEOUT=25 VISION_TEMP_DIR=/app/tmp/vision PAYMENT_WISE_NAME=Tu Nombre PAYMENT_WISE_EMAIL=tu@email.com
Flujo completo
Lead envía foto
↓
Bot descarga a /app/tmp/vision/
↓
Base64 encode + detección MIME (jpg/png/webp/gif)
↓
GPT-4o analiza (detail: low para reducir tokens)
↓
Contexto inyectado como:
"[El Lead ha enviado una FOTO. Análisis: Selfie casual, mujer ~25,
entorno urbano, nivel patrimonial medio-alto]"
↓
Arquitecto recibe contexto enriquecido → decide respuesta
↓
Foto temporal eliminada (cleanup automático)Seguridad
Re-Engagement automático
GhostPilot incluye dos daemons que re-activan leads inactivos automáticamente.
ReEngagementDaemon
Detecta leads que fueron identificados pero dejaron de responder hace más de 6 horas.
ProactivePushDaemon
Para leads clasificados como whales (alto valor potencial):
Configuración
{
"reengagement": {
"scan_interval_minutes": 30,
"stale_threshold_hours": 6,
"max_attempts": 2,
"quiet_hours": [1, 9]
},
"proactive_push": {
"whale_threshold_hours": 14,
"content_type": "lifestyle_photo",
"enabled": true
}
}Money Script
El Arquitecto clasifica cada lead en una categoría de "gasto potencial":
| Categoría | Señales | Prioridad |
|---|---|---|
| whale | Gasta en regalos, menciona trabajo bien pagado | Máxima — ProactivePush |
| provider | Quiere impresionar, pregunta precios | Alta |
| resource | Estudiante, tiempo libre, curioso | Normal |
| unknown | Información insuficiente | Normal |
Esta clasificación influye en la agresividad del funnel y los timings de re-engagement.
Métricas y ROI
GhostPilot rastrea métricas detalladas para medir el rendimiento y optimizar conversiones.
Métricas por persona
| Métrica | Qué mide |
|---|---|
| Conversión total | % de leads que llegan a Fase 6 |
| Msgs promedio/conv | Mensajes necesarios para convertir |
| Tiempo promedio/conv | Duración en horas de una conversión |
| Engagement medio | Score promedio en Fase 4 |
| Coste/conversión | Tokens consumidos × precio del modelo |
Acceder a las métricas
npm run stats
Output:
╔═══════════════════════════════════════╗ ║ GhostPilot Stats — Últimas 24h ║ ╠═══════════════════════════════════════╣ ║ Personas activas: 3 ║ ║ Leads procesados: 847 ║ ║ Conversiones: 567 (67.0%) ║ ║ Msgs enviados: 12,340 ║ ║ Audios enviados: 234 ║ ║ Fotos enviadas: 456 ║ ║ Coste total LLM: $2.84 ║ ║ Coste/conversión: $0.003 ║ ║ Bans: 0 ║ ╚═══════════════════════════════════════╝
Calcular ROI
Fórmula:
ROI = (Ingresos por conversiones - Coste GhostPilot) / Coste GhostPilot × 100
Ejemplo con plan Growth ($249/mes):
Exportar datos
npm run export -- --format csv --period 30d npm run export -- --format json --period 7d
¿Listo para empezar?
Únete a la comunidad y configura tu primera persona en 5 minutos.
Unirse a la comunidad