LeadAce

Agente de ventas salientes para Claude Code: investigación por prospecto, redacción de correos, envío por Gmail, seguimiento de respuestas y retroalimentación estructurada de rechazos.

Documentación

LeadAce

Status: Public Beta License Listed on mcpservers.org

Agente de ventas saliente autónomo en tu navegador. Crea listas de prospectos, redacta y envía un correo por empresa desde tu propia bandeja de entrada, y mejora su estrategia con cada respuesta y rechazo.

Sitio web: https://leadace.ai

Dos formas de ejecutarlo. Usa el servicio alojado en app.leadace.ai (plan gratuito — 30 prospectos, planes de pago desde $49/mes), o auto-aloja el backend en tu propio Cloudflare + Supabase. La aplicación web y el plugin opcional de Claude funcionan igual en ambos.

Para Usuarios

Comenzar

  1. Inicia sesión con Google en app.leadace.ai (plan gratuito — sin tarjeta). LeadAce pide permiso para enviar desde tu Gmail y leer tu bandeja de entrada, para poder detectar las respuestas.
  2. Pega tu sitio web en el chat. Ace propone a quién dirigirse y cómo abordarlos. Cambia lo que quieras y luego aprueba.
  3. Lee los primeros borradores. Nada se envía hasta que apruebes, y lo que apruebas sale desde tu propia bandeja de entrada.

El correo se ejecuta completamente en la aplicación web: la investigación, la redacción, el envío y la recopilación de respuestas se ejecutan en el servidor. Programa el ciclo diario desde el chat o la configuración del proyecto. Se pueden añadir más cuentas de Google y buzones SMTP en la configuración de la cuenta.

Plugin de Claude (opcional)

El plugin, para Claude Cowork o Claude Code, ejecuta el mismo trabajo desde una sesión de Claude y añade un navegador: envía los mensajes de formularios de contacto y los DM de SNS que la aplicación web deja para que los envíes manualmente. Funciona en los mismos proyectos que la aplicación web.

Requisitos previos

  • Claude Cowork (en la aplicación Claude Desktop) o Claude Code, en un plan Anthropic Pro o Max — verificado en macOS
  • Una cuenta de LeadAce en https://app.leadace.ai (plan gratuito — sin tarjeta)
  • Una cuenta de Gmail conectada — para enviar correos (se concede al iniciar sesión con Google, o mediante el banner "Conectar Gmail" en la aplicación web)
  • Gmail MCP (integrado en claude.ai) — para comprobar las respuestas de correo
  • Un navegador, solo para canales de navegador — los formularios de contacto se ejecutan en el navegador integrado de Cowork o en cualquier MCP de automatización de navegador que configures (p. ej., Playwright); los DM de SNS y la comprobación de respuestas de SNS requieren Claude en Chrome. Una ejecución programada solo llega al navegador mientras Claude Desktop esté abierto, con su navegador predeterminado elegido de antemano

Instalación

En Claude Desktop: Personalizar → Plugins → Añadir desde un repositorio → aitit-inc/leadace → Instalar → Conectores → Conectar, luego Personalizar → Conectores → LeadAce → Conectar e iniciar sesión con Google.

O una línea en tu terminal (Claude Code):

claude plugin marketplace add aitit-inc/leadace && claude plugin install leadace@leadace

O, desde una sesión de Claude Code en ejecución:

/plugin marketplace add aitit-inc/leadace
/plugin install leadace@leadace

Para actualizar más tarde:

/plugin marketplace update
/plugin update leadace@leadace

Iniciar sesión en LeadAce

La primera vez que el plugin llama a una herramienta de LeadAce, tu navegador se abre para el inicio de sesión con Google (la misma cuenta de Google que la aplicación web). El token se guarda en caché localmente para ejecuciones posteriores. Consulta plugin/README.md para más detalles y solución de problemas.

Uso

La mayoría de los comandos toman el nombre de tu proyecto como primer argumento (elegido durante la incorporación de /leadace); /leadace en sí mismo toma una pregunta de formato libre o una URL de página de inicio. Ejecútalos en una sesión de Cowork (la pestaña Cowork, no Chat — /daily-cycle ejecuta subagentes, que Chat no puede iniciar) o en Claude Code.

ComandoPropósito
Configuración
/leadacePunto de entrada — incorporación, configuración / verificación del entorno, redacción de estrategia, resumen y enrutamiento
Añadir prospectos (elige uno)
/build-list <name>Búsqueda web de nuevos prospectos
/import-prospects <name>Cargar CSV / Excel / SQLite
/match-prospects <name>Reutilizar prospectos ya existentes en tu espacio
Ciclo de ventas
/outbound <name>Enviar por correo electrónico, formularios de contacto, DM de SNS
/check-responses <name>Recopilar respuestas de Gmail + SNS → base de datos
/evaluate <name>PDCA — analizar, mejorar automáticamente la estrategia y mostrar señales tácticas de rechazo (cola de recontacto, referencias de tomadores de decisiones, pistas de segmentación)
Reflexión
/check-feedback <name>Mostrar señales de ajuste producto-mercado a partir de comentarios de rechazo (brechas de funciones, presencia de competidores) — reflexión de producto ad hoc
Automatización
/daily-cycle <name> [count]Paquete de un solo disparo: comprobar respuestas → evaluar → saliente + crear lista
/setup-cron <name>Configurar una ejecución diaria (un programa del lado del servidor que no necesita máquina, una tarea programada de Cowork, una tarea de Claude Code Desktop o un programador del sistema operativo)
Mantenimiento
/delete-project <name>Eliminar permanentemente un proyecto y todos sus datos

Los proyectos, prospectos, registros de divulgación y documentos de estrategia viven en la nube — no hay archivos locales que gestionar. Revisa todo en la aplicación web en https://app.leadace.ai.

Flujo

flowchart TD
  LA["/leadace<br/>onboard · setup · strategy"] --> P{add prospects}

  P -- web search --> BL["/build-list"]
  P -- CSV / Excel --> IP["/import-prospects"]
  P -- reuse tenant --> MP["/match-prospects"]

  BL --> OB["/outbound"]
  IP --> OB
  MP --> OB

  OB --> CR["/check-responses"]
  CR --> EV["/evaluate"]
  EV -- next round --> P

  CR -. PMF signals .-> CF["/check-feedback"]
  CF -. revisit strategy .-> LA

  DC["/daily-cycle<br/>check + outbound + build, one shot"]
  SC["/setup-cron<br/>daily schedule"] --> DC
  DC -. replaces manual loop .-> P

  DEL["/delete-project"]

Flechas sólidas = el bucle principal. Discontinuas = opcional / ocasional / envoltorio. /evaluate también consume la parte táctica de los comentarios de rechazo (solicitudes de recontacto, referencias de tomadores de decisiones, not_relevant grupos de industria) registrados por /check-responses — sin paso de usuario separado.


Licencia

LeadAce se publica bajo la Licencia de Código Abierto de LeadAce — una versión modificada de Apache 2.0 con dos condiciones adicionales:

  • Sin SaaS multiinquilino para terceros sin una licencia comercial de SurpassOne Inc. El auto-alojamiento para tu propia organización está bien.
  • El logotipo y los derechos de autor del frontend deben conservarse en cualquier implementación que exponga la consola de LeadAce.

Servicio alojado (nube)

  • Plan gratuito: 30 prospectos (de por vida), 1 proyecto, 1 buzón, 500 prospectos almacenados.
  • Planes de pago comienzan en $49/mes por 100 prospectos al mes. Un prospecto cuenta una vez, cuando se envía el primer mensaje; los seguimientos son gratuitos. Gestiona tu suscripción desde la aplicación web.

Auto-alojamiento

Consulta docs/self-host.md. La edición auto-alojada se ejecuta en el plan ilimitado — sin Stripe, sin límites. Para consultas sobre licencias comerciales, contacta con leo.uno@surpassone.com.


Para Desarrolladores

Estructura del repositorio

plugin/                          # Claude Code plugin
├── .claude-plugin/plugin.json   # Manifest
├── .mcp.json                    # MCP server config
├── skills/                      # Slash commands (each directory has SKILL.md)
├── scripts/fetch_url.py         # Local web fetch helper
└── references/                  # Shared reference docs
backend/                         # API + MCP servers (Cloudflare Workers, Hono, Drizzle)
frontend/                        # Web app (SvelteKit, Cloudflare Worker + static assets)
docs/                            # Project-wide docs (deploy runbook, self-host, architecture)
docker-compose.yml               # Bare Postgres for non-Supabase local dev
  • Convenciones del plugin y flujo de trabajo de cambios de esquema: CLAUDE.md
  • Auto-alojamiento y desarrollo local: docs/self-host.md

Inicio rápido (desarrollo local)

Configuración única — copia las plantillas de entorno:

cp backend/.dev.vars.example backend/.dev.vars
cp frontend/.env.example frontend/.env

Completa las claves de Supabase desde supabase status — las imprime una vez que la pila local está en ejecución, así que ejecuta make dev una vez primero (inicia Supabase), luego pega las claves.

Para el inicio de sesión con Google en tu pila local, también crea un cliente OAuth de Google y exporta SUPABASE_AUTH_EXTERNAL_GOOGLE_CLIENT_ID / _SECRET en tu shell (mediante .envrc) antes del primer make dev — inicia Supabase, que los lee del shell al inicio. Consulta docs/self-host.md → Desarrollo local. (Estas variables de shell controlan el inicio de sesión; las GOOGLE_CLIENT_ID / _SECRET en backend/.dev.vars son separadas — alimentan el envío de Gmail.)

Luego inicia toda la pila con un solo comando — Supabase, migraciones, la semilla maestra, los Workers de API/MCP y el frontend, todo junto. Ctrl-C detiene los servidores de desarrollo (Supabase permanece activo para un reinicio rápido; make stop lo detiene):

make dev          # or: ./scripts/dev.sh
ServicioURL
Frontendhttp://localhost:5273
API Workerhttp://localhost:8787
MCP Workerhttp://localhost:8788
Supabase Studiohttp://localhost:54323

Para ejecutar en puertos diferentes (p. ej., uno está ocupado por otro servidor de desarrollo), copia dev.ports.env.example a dev.ports.env y configura los puertos allí — dev.sh reconfigura cada URL dependiente (y el inicio de sesión con Google sigue funcionando). Los valores predeterminados no cambian cuando el archivo está ausente.

Ejecutar los pasos manualmente en su lugar
npx supabase start                      # Auth + Postgres on ports 54321/54322
cd backend
npm install
npm run db:migrate
npx tsx scripts/seed-master-documents.ts

npm run dev:api                         # API → http://localhost:8787
npm run dev:mcp                         # MCP → http://localhost:8788  (separate terminal)

cd ../frontend
npm install
npm run dev                             # → http://localhost:5273

Comprobaciones previas al lanzamiento:

cd backend && npm run typecheck
cd frontend && npm run check

Actualización de dependencias (problema del archivo de bloqueo)

npm install con node_modules ya presente puede eliminar dependencias opcionales de otras plataformas (binarios de @emnapi/*, @img/sharp-*, esbuild) de package-lock.json (npm/cli#7961, npm 10.3+–11.x). CI luego ejecuta npm ci contra ese archivo de bloqueo reducido y falla con Missing: … from lock file. Esto afecta tanto a backend/ como a frontend/, y es lo que hace que las PR de npm de Dependabot se pongan en rojo.

Cuando cambias un package.json / package-lock.json (o reparas una PR de Dependabot), regenera el archivo de bloqueo bajo el conjunto de herramientas fijado del repositorio — no en Docker:

nvm use                 # node 24 (repo .nvmrc) — matches CI
cd backend              # or cd frontend
rm -rf node_modules     # removing this first is what avoids the prune
npm install --no-audit --no-fund

Luego confirma el package-lock.json regenerado. Los cambios solo de código no necesitan esto — CI consume el archivo de bloqueo confirmado tal cual.