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
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
- 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.
- Pega tu sitio web en el chat. Ace propone a quién dirigirse y cómo abordarlos. Cambia lo que quieras y luego aprueba.
- 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.
| Comando | Propósito |
|---|---|
| Configuración | |
/leadace | Punto 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
| Servicio | URL |
|---|---|
| Frontend | http://localhost:5273 |
| API Worker | http://localhost:8787 |
| MCP Worker | http://localhost:8788 |
| Supabase Studio | http://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.