¿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:

  • El Arquitecto (DeepSeek Reasoner) — analiza el contexto y genera la estrategia conversacional.
  • La Máscara (GPT-5.4) — ejecuta la estrategia con personalidad humana indistinguible.
  • Características principales

  • Conversación autónoma 24/7 sin intervención humana
  • Funnel de conversión automática de 7 fases
  • Anti-Ban Shield con 0 bans en +2.4M mensajes
  • Escucha notas de voz — transcripción STT via Gemini Flash
  • Genera notas de voz — síntesis TTS con ElevenLabs (voz clonada)
  • Analiza imágenes — Vision Agent con GPT-4o (comprobantes, NSFW, contexto)
  • Re-engagement automático para leads inactivos
  • Multi-persona: despliega varias identidades simultáneamente
  • Compatible con cualquier proveedor LLM (OpenRouter, DeepSeek, GPT, Claude...)
  • Dashboard con +40 parámetros configurables por persona
  • CCTV: monitorización en tiempo real desde Telegram
  • ¿Para quién es?

    GhostPilot está diseñado para equipos que necesitan escalar conversaciones de ventas, soporte o engagement sin escalar personal. Ideal para:

  • Agencias de gestión de OnlyFans y plataformas de suscripción
  • Chatting agencies que necesitan escalar sin contratar más VAs
  • Creadores de contenido que quieren automatizar DMs de conversión
  • Agencias de marketing digital y growth hacking
  • Cualquier negocio de alto volumen de leads que dependa de mensajería directa
  • Inicio rápido — 5 minutos

    Sigue estos pasos para tener tu primera persona operativa en menos de 5 minutos.

    Requisitos previos

  • Una cuenta de Telegram (número de teléfono para el userbot)
  • Tu suscripción GhostPilot activa (Solo, Growth, Agency o Enterprise)
  • API key de un proveedor LLM (OpenRouter recomendado)
  • (Opcional) API key de ElevenLabs para notas de voz
  • 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:

  • Control táctico preciso — el Arquitecto no se distrae con emojis o informalidad.
  • Personalidad consistente — la Máscara solo se enfoca en ser humana.
  • Escalabilidad de modelos — puedes usar un modelo barato para la Máscara y uno potente para el Arquitecto.
  • 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

    RolModeloPor qué
    ArquitectoDeepSeek Reasoner ⭐Razonamiento profundo, coste $0.28/M input
    ArquitectoDeepSeek ChatAlternativa más rápida y barata
    MáscaraGPT-5.4 ⭐SOTA abril 2026, español nativo, $0.003/M input
    MáscaraGPT-5.4 MiniFallback de emergencia, más caro pero fiable
    MáscaraLlama 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

    #FaseObjetivoTrigger de avanceMedia
    0COLDHook inicialRespuesta recibidaSolo texto
    1HOOKEDRapport + nombreNombre detectado (NER)Solo texto
    2IDENTIFIEDExtraer ciudadCiudad detectada (NER)1 hook_selfie
    3ENGAGEDGenerar confianzaEngagement > 0.72-3 teasing_light
    4PAYWALLEDForzar paywallHard-cap (20 msgs)0 fotos — crisis
    5CONVERTINGInyectar link OFClick detectado1 teasing_hot + link
    6SUBSCRIBERLead convertidoSuscripción confirmadaAuto-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:

  • Longitud de respuesta — mensajes más largos = más engagement
  • Velocidad de respuesta — respuestas rápidas = más interés
  • Preguntas del lead — hacer preguntas indica curiosidad
  • Emojis y tono — indicadores de conexión emocional
  • Temas personales — compartir información personal = confianza
  • Auto-pause

    Tras la conversión (Fase 6), el bot se pausa automáticamente para:

  • Conservar tokens del LLM
  • Evitar mensajes innecesarios post-venta
  • Liberar capacidad para nuevos leads
  • 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

    1.Fragmenta por puntuación natural: ., .., !, ?, emojis
    2.Si un fragmento >60 chars, busca comas o espacios para dividir
    3.Fotos se envían DESPUÉS del último fragmento de texto
    4.Voice notes se envían con ChatAction.RECORD_AUDIO previo

    Debounce 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

  • es-AR — Rioplatense (vos, che, onda)
  • es-ES — Peninsular (tú, vale, mola)
  • es-MX — Mexicano (tú, güey, chido)
  • en-US — Americano
  • pt-BR — Brasileño
  • ru-RU — Ruso
  • Aislamiento total

  • Cada persona tiene su propio estado de conversación
  • No se comparte contexto entre personas
  • Se pueden usar modelos diferentes por persona
  • Las métricas se rastrean individualmente
  • Configuración paso a paso

    Guía completa para configurar tu primera persona en GhostPilot.

    Requisitos

  • Suscripción GhostPilot activa (Solo, Growth, Agency o Enterprise)
  • Un número de teléfono con Telegram activo
  • API key de un proveedor LLM (OpenRouter recomendado)
  • (Opcional) API key de ElevenLabs para notas de voz
  • 1. Suscripción y acceso

    1.Elige tu plan en [ghostpilot.dev/#pricing](https://ghostpilot.dev/#pricing)
    2.Completa el pago y recibe tus credenciales por email
    3.Accede al Dashboard en dashboard.ghostpilot.dev

    2. Credenciales de Telegram

    Necesitas un API_ID y API_HASH de Telegram:

    1.Ve a [my.telegram.org](https://my.telegram.org)
    2.Inicia sesión con tu número de teléfono
    3.Ve a "API Development Tools"
    4.Crea una nueva aplicación
    5.Copia el API_ID y API_HASH al Dashboard

    3. 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

    1.Haz clic en "Activar Persona" en el Dashboard
    2.El bot se conecta automáticamente a Telegram
    3.Abre tu canal CCTV para ver la actividad en tiempo real
    4.Todos los parámetros se ajustan en caliente, sin reiniciar

    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?

  • Mejor seguimiento de instrucciones del mercado (SOTA abril 2026)
  • Español nativo de alta calidad, no "asistente traducido"
  • Mantiene personaje en conversaciones largas (+100 turnos)
  • Safety filters se bypassean moviendo lógica de fotos al orchestrator
  • Proveedores soportados

    ProveedorRol recomendadoModelos
    DeepSeek APIArquitectodeepseek-reasoner, deepseek-chat
    OpenRouterMáscara / STTGPT-5.4, Llama 4, Gemini Flash
    OpenAI directoMáscara / Visiongpt-5.4, gpt-4o
    GroqMáscara (ultra rápido)Llama 4 Scout
    Google AISTTGemini 2.0 Flash
    Custom (vLLM)MáscaraCualquier modelo local

    Costes por modelo (precios abril 2026)

    RolModeloInput/1MOutput/1MEst./1000 msgs
    ArquitectoDeepSeek Reasoner$0.28$0.42$0.12
    ArquitectoDeepSeek Chat$0.14$0.28$0.07
    MáscaraGPT-5.4$0.003$0.015$0.003
    MáscaraGPT-5.4 Mini$0.75$4.50$0.85
    MáscaraLlama 4 Scout (Groq)$0.11$0.34$0.08
    VisionGPT-4o$2.50$10.00~$0.02/foto
    STTGemini 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 completos

    Resultado: 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ámetroDefaultDescripción
    max_photos_per_phaseVaría por faseMáximo de fotos que se envían en cada fase del funnel
    photo_cooldown_msgs8Mensajes mínimos entre cada envío de foto
    photo_probability0.7Probabilidad de enviar foto cuando el Arquitecto la sugiere (0-1)
    voice_note_frequency10Enviar 1 audio cada N mensajes de texto
    voice_note_min_engagement0.5Engagement mínimo para activar audios (0-1)
    voice_enabledtrueHabilitar/deshabilitar notas de voz
    stt_enabledtrueHabilitar transcripción de audios entrantes
    vision_enabledtrueHabilitar análisis de fotos entrantes
    watermark_opacity0.04Opacidad del watermark en fotos (0-1)

    Parámetros del Funnel

    ParámetroDefaultDescripción
    hard_cap_messages20Forzar avance de fase tras N mensajes sin progreso
    engagement_threshold0.7Score mínimo para avanzar de ENGAGED → PAYWALLED
    auto_pause_on_conversiontruePausar bot tras conversión exitosa
    paywall_urlURL del OF/link de pago a inyectar
    max_reengagement_attempts2Intentos de re-engagement por lead
    stale_threshold_hours6Horas de inactividad para activar re-engagement

    Parámetros de Cadencia (Anti-Ban)

    ParámetroDefaultDescripción
    cadence_ms_per_char0.35Millisegundos de typing por carácter
    cadence_jitter_min3.0Delay mínimo antes de responder (seg)
    cadence_jitter_max6.0Delay máximo antes de responder (seg)
    inter_fragment_min4.0Pausa mínima entre sub-mensajes (seg)
    inter_fragment_max9.0Pausa máxima entre sub-mensajes
    debounce_seconds8Espera si el lead envía msgs rápidos
    rate_global20/sLímite global de mensajes por segundo
    rate_per_chat1/3sLímite por chat individual

    Parámetros de la Máscara (LLM)

    ParámetroDefaultDescripción
    mask_temperature0.85Creatividad de la Máscara (0-2)
    mask_max_tokens120Longitud máxima de respuesta
    mask_min_p0.0Min-P sampling (0 = desactivado)
    architect_temperature0.3Precisión del Arquitecto
    architect_max_tokens300Máx tokens para directiva JSON

    Parámetros de Identidad

    ParámetroDefaultDescripción
    display_nameNombre visible en Telegram
    ageEdad de la persona
    cityCiudad principal
    dialectes-ARDialecto de escritura
    bioBiografía/backstory del personaje
    personality.warmth0.8Calidez en la conversación (0-1)
    personality.humor0.6Nivel de humor (0-1)
    personality.flirtiness0.7Nivel de coqueteo (0-1)
    personality.emoji_frequency0.4Frecuencia de emojis (0-1)

    Parámetros de Horario

    ParámetroDefaultDescripción
    timezoneEurope/MadridZona horaria del personaje
    quiet_hours_start01:00Inicio de horario de silencio
    quiet_hours_end09:00Fin de horario de silencio
    weekend_shift_hours1Retraso de activación en fines de semana

    Parámetros de Voice (ElevenLabs)

    ParámetroDefaultDescripción
    elevenlabs_api_keyAPI key del cliente (su propia cuenta)
    elevenlabs_voice_idID de la voz clonada (Professional Cloning)
    elevenlabs_modeleleven_multilingual_v2Modelo de síntesis
    voice_stability0.50Estabilidad de voz (0-1)
    voice_similarity_boost0.80Fidelidad al clon (0-1)
    voice_style0.15Expresividad (0-1)
    voice_record_sim_min2.0Simulación mínima de grabación (seg)
    voice_record_sim_max4.5Simulació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:

  • Panel de personas — activar/desactivar, ver estado en tiempo real
  • Sliders de cadencia — ajustar velocidad de respuesta en vivo
  • Control de media — toggle fotos/audios, ajustar frecuencias
  • Monitor de funnel — ver distribución de leads por fase
  • Gráficas de coste — consumo de tokens en tiempo real
  • Logs CCTV — stream de conversaciones en el navegador
  • Pausar/reanudar — control granular por persona o global
  • 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

  • Resolución: 1080x1080 o 1080x1350 (formato Instagram)
  • Formato: JPG, calidad 85%
  • Privacidad: Usa CSS blur o herramientas de anonimización para rostros reales
  • Variedad: Mínimo 5 selfies para parecer natural
  • Preparar audios

  • Formato: OGG Opus (formato nativo de Telegram)
  • Duración: 5-30 segundos
  • Calidad: Grabación con micro, no TTS genérico
  • Contenido: Saludos, risas, comentarios casuales
  • 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.

  • Android: Pixel 9 Pro (TL Layer 185)
  • iOS: iPhone 16 (TL Layer 186)
  • 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:

  • Varianza de tipeo: ±15ms por carácter
  • Probabilidad de corrección: 2% por mensaje
  • Patrón de actividad: 8-12Hz (frecuencia alfa cerebral)
  • 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

    1.Crea un canal privado en Telegram
    2.Obtén el ID del canal (usa @userinfobot)
    3.Configura en .env:
    CCTV_CHANNEL_ID=-1001234567890
    CCTV_ENABLED=true
    CCTV_LOG_LEVEL=full

    Niveles de logging

    NivelQué muestra
    minimalSolo conversiones y errores
    standardMensajes entrantes/salientes + fases
    fullTodo: 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:

    ComandoAcción
    /stop <lead_id>Pausa conversación específica
    /stop allPausa todas las conversaciones
    /resume <lead_id>Reanuda conversación
    /resume allReanuda todas
    /ban <lead_id>Bloquea lead permanentemente
    /statusEstado del motor y todas las personas
    /statsMétricas últimas 24h
    /helpLista 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

    1.El lead envía una nota de voz en Telegram
    2.El bot descarga el archivo OGG vía MTProto
    3.Lo convierte a base64 y envía a Gemini Flash (via OpenRouter)
    4.Gemini transcribe el audio a texto
    5.El texto transcrito se inyecta como mensaje normal en el pipeline Split-Brain
    6.El bot responde como si hubiera "escuchado" al lead

    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

  • Modelo STT: Gemini 2.0 Flash — multimodal nativo con audio input
  • Formato soportado: OGG Opus (nativo Telegram)
  • Latencia: ~1.5s adicional al pipeline normal
  • Coste: ~$0.001 por transcripción (muy bajo)
  • Fallback: Si STT falla, el bot recibe el mensaje como "[El lead envió una nota de voz]" y responde propositivamente
  • 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

    1.Cuenta de ElevenLabs con plan Creator ($22/mes) o superior
    2.Una voz clonada con Professional Voice Cloning
    3.Las 3 variables se configuran desde el Dashboard:
    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

    1.El pipeline Split-Brain genera la respuesta de texto
    2.El texto se envía primero como mensaje normal
    3.En paralelo (Fire-and-Forget), se sintetiza el audio via ElevenLabs
    4.El audio se envía como Voice Note de Telegram segundos después
    5.Se simula el indicador "Grabando nota de voz" con timing proporcional

    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
    }
  • Stability 0.50 — balance entre variedad y consistencia
  • Similarity Boost 0.80 — alta fidelidad a la voz clonada
  • Style 0.15 — toque sutil de expresividad
  • Output: MP3 44.1kHz 192kbps
  • 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:

    1.Sube 5-10 muestras de audio limpias (sin música de fondo)
    2.Cada muestra: 30s-2min, hablando naturalmente
    3.Usa el modelo Eleven Multilingual v2 para mejor calidad en español
    4.Copia el voice_id generado al Dashboard de GhostPilot

    Coste para el cliente

    Plan ElevenLabsPrecioCaracteres/mesAudios aprox.
    Creator$22/mes100.000 chars~500 audios
    Pro$99/mes500.000 chars~2.500 audios
    Scale$330/mes2.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:

  • Fase del funnel: Fases 3-4 principalmente
  • Engagement score: Solo si > 0.5
  • Contexto: Respuestas personales o momentos de conexión
  • Frecuencia: Máximo 1 audio por cada 8-10 mensajes de texto
  • Fallback: Si ElevenLabs falla, se envía solo texto (nunca se bloquea)
  • 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:

  • Identifica la plataforma (Wise, PayPal, Revolut, Skrill, Zelle, CashApp)
  • Extrae el monto exacto en moneda original
  • Verifica que el destinatario coincida con tu cuenta
  • Busca anomalías de Photoshop (fuentes, píxeles, bordes)
  • Responde con [COMPROBANTE_VALIDO: MONTO_XXX] o [COMPROBANTE_INVALIDO: razón]
  • Modo B — Foto normal

    Si la imagen es una selfie, foto de entorno, etc.:

  • Analiza nivel patrimonial (marcas, entorno, vehículos)
  • Detecta edad aproximada
  • Clasifica contenido NSFW
  • Genera resumen de 2 líneas para el Arquitecto
  • 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

  • Las fotos nunca se almacenan — se eliminan tras el análisis
  • El análisis se inyecta como texto, no como blob binario
  • Si la API falla, se usa un placeholder y el pipeline nunca se rompe
  • 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.

  • Escanea Redis cada 30 minutos
  • Genera un mensaje de re-engagement contextual vía el pipeline Split-Brain
  • Respeta horarios circadianos (no envía a las 3am)
  • Máximo 2 intentos de re-engagement por lead
  • ProactivePushDaemon

    Para leads clasificados como whales (alto valor potencial):

  • Se activa cuando un whale lleva >14h inactivo
  • Envía contenido proactivo (foto lifestyle + mensaje casual)
  • Diseñado para generar FOMO y re-activar interés
  • 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íaSeñalesPrioridad
    whaleGasta en regalos, menciona trabajo bien pagadoMáxima — ProactivePush
    providerQuiere impresionar, pregunta preciosAlta
    resourceEstudiante, tiempo libre, curiosoNormal
    unknownInformación insuficienteNormal

    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étricaQué mide
    Conversión total% de leads que llegan a Fase 6
    Msgs promedio/convMensajes necesarios para convertir
    Tiempo promedio/convDuración en horas de una conversión
    Engagement medioScore promedio en Fase 4
    Coste/conversiónTokens 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):

  • 10.000 mensajes/mes
  • ~1.340 conversiones (67%)
  • Valor por conversión: $10 (suscripción)
  • Ingresos: $13.400/mes
  • Coste: $249 + ~$1.50 (LLM) = $250.50
  • ROI: 5.250%
  • 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