Outreach Machine v2

Outreach B2B con control total sobre cada contacto, cada email, cada envío.

Toma una lista fría, la convierte en decision-makers calificados con email válido, y te pone en bandeja de entrada de quien importa — con aprobación humana obligatoria antes de tocar el send y trazabilidad completa de cada cambio de estado.

1

Product sheet

Outreach Machine automatiza el camino desde un CSV de empresas hasta una reunión agendada. Cada contacto atraviesa un pipeline estructurado: se resuelve la empresa, se descubren los decision-makers en LinkedIn, se valida el email, se puntúa contra tu ICP y se redacta la secuencia. El operador aprueba antes de que salga un solo mensaje.

El agente interviene donde el dato es ambiguo: califica si una empresa encaja en el ICP, redacta el primer borrador de la secuencia y clasifica las respuestas entrantes para saber cuáles escalar. En todo lo demás — classificación de títulos, validación de email, reglas de unsubscribe — el sistema es completamente determinista y auditable.

Goal: convertir listas frías en reuniones agendadas con un pipeline auditable donde el humano aprueba cada envío — maximizando deliverability y compliance sin sacrificar volumen.

Problema que resuelve

Las herramientas de outreach optimizan volumen y velocidad, pero dejan el control en manos del dato sucio y del envío automático: emails no validados que queman el dominio, sin trazabilidad de por qué un contacto entró a una secuencia, y unsubscribes que se ignoran. Outreach Machine v2 invierte la prioridad — control y auditoría primero, volumen después.

Tipos de usuario

SDR / Operador

Ejecuta el pipeline y trabaja la review queue: aprueba, rechaza o bloquea contactos antes del envío.

Growth / RevOps

Define el ICP y las secuencias, mide conversión y ajusta el scoring.

Admin de workspace

Gestiona tenancy, integraciones (Composio) y dominios verificados vía Clerk.

Agencia multi-cliente

Aísla cada cliente en su propia org con RLS y auditoría independiente.

Jobs to be done

Cuando tengo una lista de empresas target, necesito identificar a los decision-makers correctos

sin gastar horas buscando en LinkedIn manualmente ni arriesgar mi dominio con emails sin validar.

Cuando quiero lanzar una secuencia de outreach, necesito saber que cada email es entregable

antes de enviarlo, para proteger la reputación del dominio y no desperdiciar cuota de envío.

Cuando el agente redacta o califica un contacto, necesito revisar y aprobar antes de que salga algo

porque soy yo quien responde ante el cliente, no la IA.

Cuando llega una respuesta, necesito saber si es interés real, rechazo o un unsubscribe

para actuar de inmediato: agendar, cerrar o bloquear sin que nada se pierda en el ruido.

Cuando algo sale mal, necesito saber exactamente qué pasó, cuándo y por qué

para auditar, corregir y demostrar compliance — no adivinar a partir de logs parciales.

Cuando gestiono varios clientes o equipos, necesito que los datos estén completamente aislados

y que cada workspace tenga su propia configuración de ICP, secuencias y credenciales.

Capabilities & features

Data & discovery
CSV / bulk importImport de contactos con deduplicación por clave natural; idempotente por diseño.
Company resolutionDominio → datos de empresa (nombre, industria, tamaño, HQ) vía enriquecimiento automático.
LinkedIn decision-maker discoveryBúsqueda de perfiles en LinkedIn por empresa y criterios ICP usando Bright Data como colector.
Title classificationRule engine determinista (patrones ES + EN) para identificar seniority y función. Sin LLM en runtime; 100% reproducible.
ICP scoring & filteringCada contacto se puntúa contra el ICP del workspace. Reglas deterministas + juicio del agente en los casos límite.
Verified fields immutabilityCampos verificados (email, LinkedIn URL) nunca se sobreescriben; protección contra enriquecimiento posterior sucio.
Email & deliverability
Email resolutionBúsqueda del email corporativo vía Hunter con captura del raw payload antes de parsear.
Email validation (hard gate)Validación real vía NeverBounce; un email no válido bloquea el enrollment — no puede saltar el gate.
outreach_ready viewVista computada que agrega todas las condiciones de elegibilidad. Nunca almacenada; siempre derivada del estado actual.
Rate limiting por proveedorToken de rate consumido antes de cada llamada; raw payload persistido a Storage antes de parsear. Sin pérdida de datos en caso de error.
Sequencing & sending
Secuencias multi-stepPasos con delay configurable, condiciones de salida y variables de merge nativas del schema.
Template versioningCada plantilla tiene versiones; el agente crea drafts, el humano aprueba la versión que entra a producción.
Review queue (mandatory)Cola de aprobación obligatoria antes de cualquier envío. Ningún code path la salta — ni el agente.
Email send via ResendEnvío transaccional con tracking de entrega, apertura y clics. Job asíncrono, idempotente.
Sequence enrollment & unenrollmentEnroll y stop atómicos; un unsubscribe detiene todos los enrollments activos del contacto en la misma transacción.
Agent-drafted sequencesEl agente redacta borradores siguiendo el playbook de 12 reglas; el operador edita y aprueba antes de activar.
Reply management & CRM
Tier-1 classification (regex)Unsubscribe, bounce y OOO detectados de forma determinista — gratis, sin LLM, sin latencia.
Tier-2 classification (keyword)Positivos y rechazos claros identificados por patrones de keyword configurables por workspace.
Tier-3 classification (agent)Casos ambiguos resueltos por el agente; output mapeado a los 4 valores canónicos del enum.
Unsubscribe terminalEstado blocked irreversible desde código. Ningún flujo — humano o agente — puede reactivar un contacto bloqueado.
CRM sync (HubSpot)Respuestas positivas sincronizadas a HubSpot vía Composio (OAuth gestionado, sin credenciales en el repo).
Calendar bookingIntención de reunión detectada → creación de evento en Google Calendar vía Composio.
Slack notificationsAlertas de replies positivos y aprobaciones pendientes a canales configurados por workspace.
Intelligence & agent
ICP qualification (LLM judgment)El agente aplica reglas de juicio sobre empresa y perfil en los casos donde las reglas deterministas no son suficientes.
Natural language operatorInterfaz conversacional: "encuentra 50 empresas más como estas", "resume los replies de esta semana".
MCP serverExpone capacidades de outreach como herramientas MCP para otros agentes y sistemas externos.
MCP clientConecta a MCP servers externos que traiga el usuario (otros agentes, fuentes de datos, sistemas internos).
Playbooks (skills)Lógica de razonamiento del agente en markdown versionado: company-qualification, email-sequences, reply-classification, icp-template.
Compliance & audit
contact_event append-onlyCada cambio de estado del contacto escribe un evento inmutable con actor, timestamp y payload.
system_event por actorCada acción de operador, agente o worker queda registrada con contexto completo.
Idempotencia por diseñoClaves naturales + constraints únicos. Los workers toleran recibir el mismo input dos veces sin duplicar estado.
Raw payload a StorageRespuesta cruda del proveedor persistida antes de parsear. Reproducibilidad y debugging garantizados.
Multitenancy & platform
Clerk OrganizationsEl tenant es una Clerk Org. Invites, roles y Verified Domains gestionados por Clerk — sin código custom.
RLS + composite tenant FKsRow Level Security en cada tabla de negocio. workspace_id en todas las queries. Aislamiento garantizado a nivel DB.
Feature flags por workspaceCada story se activa con workspace_settings.features_enabled. Los tenants adoptan nuevas funciones de forma independiente.
Secrets via DopplerUna sola fuente de verdad para secrets en dev/stg/prd. Sync nativo a Vercel, Fly.io y Supabase.
Async jobs queueToda operación larga es un jobs row en Postgres. Los workers en Fly.io la reclaman — sin timeouts de Edge Functions.

El pipeline en un vistazo

Import→ Company resolution→ LinkedIn discovery→ Title classification→ Email resolve→ Validate→ Score→ Manual approval→ Enroll & send→ Reply classify→ CRM & booking

Reglas load-bearing (no negociables)

Aprobación manual obligatoria

Ningún code path envía sin pasar por la review queue. El agente propone; el humano aprueba.

Unsubscribe es terminal

contact_status = 'blocked' y se detienen todos los enrollments en una sola transacción.

Verified fields inmutables

Nunca se sobreescribe un campo verificado. Se chequea verified_fields antes de cada write.

Audit-first

Cada cambio de estado escribe un contact_event; cada acción de actor, un system_event.

Garantías operativas

Async ops

100% jobs

Idempotencia

By design

Tenancy

RLS + FKs

Email gate

Validado

2

Benchmark against competitors

Las plataformas de sales-engagement automatizan el envío. Outreach Machine v2 antepone control, auditoría y propiedad del dato: pipeline determinista, gate de aprobación humana y un agente que razona pero nunca dispara.

Capacidad Outreach Machine v2 Outreach / Salesloft Apollo.io Clay Instantly / Smartlead
Data & discovery
Import de contactos (CSV / bulk, idempotente) Nativo
Company resolution automática (dominio → datos) Nativo Parcial via enrichment
LinkedIn decision-maker discovery Bright Data Add-on via enrichment
Title classification rule engine (ES + EN, sin LLM) Nativo Básico Básico
ICP scoring configurable por workspace Nativo Limitado
Email & deliverability
Email resolution (Hunter) Hunter Propio Propio via enrichment
Validación de email que bloquea enrollment NeverBounce Opcional
outreach_ready como view computada (nunca almacenada) Nativo
Sequencing & sending
Secuencias multi-step con delays y condiciones de salida Nativo
Template versioning (draft → approved) Nativo
Review queue — aprobación humana obligatoria antes de enviar Forzada Opcional Opcional
Unsubscribe terminal (blocked irreversible + stop de enrollments) Nativo
Reply management & CRM
Clasificación de replies 3 tiers (regex + keyword + agente) Nativo Básico Básico
CRM sync (HubSpot) Composio Nativo Nativo Zapier
Calendar booking automático (Google Calendar) Composio
Intelligence & agent
Agente con juicio en pasos difusos (ICP, drafting, replies) Anthropic SDK AI add-on AI add-on AI cols
Interfaz en lenguaje natural para el operador Nativo
MCP server + client (bidireccional) Nativo
Compliance, audit & platform
Audit-first (event append-only por cada cambio de estado) Nativo
Pipeline determinista + state machine auditable Nativo
Propiedad del dato (Postgres propio + RLS por tenant) Nativo SaaS SaaS SaaS SaaS
Multitenancy nativo (Clerk Orgs + Verified Domains) Nativo
Feature flags por workspace Nativo

nativo · parcial / add-on · no disponible. Posicionamiento cualitativo según contratos y modelo de producto, no un benchmark de performance.

3

Strategic vision

Las herramientas actuales de AI SDR resuelven el problema equivocado: automatizan el envío pero no el pensamiento. Estas cinco capacidades son la diferencia entre una herramienta de outreach y un sistema de GTM.

1
Moat

Historical layer — memoria de cuenta, contacto y organización

El feature más ausente en los AI SDR actuales. La memoria convierte cada interacción en contexto acumulado que los competidores no pueden copiar.

Account memory

  • Campañas anteriores y sus resultados
  • Mensajes que ya se enviaron
  • Objeciones recibidas y cómo se respondieron

Contact memory

  • Historial de replies y tono de cada uno
  • Contenido con el que interactuó
  • Perfil de personalidad inferido

Organization memory

  • Qué mensajes, canales y timings convierten mejor
  • Qué segmentos responden más
  • Qué no funciona y por qué
2
Casi nadie lo tiene

Strategy agent — decide la estrategia, no solo el mensaje

Las herramientas actuales preguntan "¿qué mensaje envío?". La pregunta correcta es "¿qué estrategia corro para esta cuenta?".

Herramientas actuales

  • ¿Qué email envío ahora?
  • ¿Cuántos follow-ups programo?
  • ¿Cuál es el mejor subject line?

Strategy agent

Señal: empresa acaba de cerrar Serie A
No email todavía Engagement en LinkedIn del CEO Mencionar al founder en podcast Buscar warm intro Email después de la señal de interés
3
Diferenciador

Experimentation agent — multi-armed bandit, no A/B testing

El A/B testing clásico es estático y lento. Un agente de experimentación aprende y ajusta continuamente sin intervención manual.

A/B testing clásico

  • Define variante A y B manualmente
  • Espera N semanas para significancia estadística
  • Aplica el ganador — hasta el próximo test
  • Optimiza una variable a la vez

Multi-armed bandit agent

  • Aprende continuamente qué ICPs convierten
  • Aprende qué señales predicen respuesta positiva
  • Aprende qué ángulos de mensaje funcionan por segmento
  • Aprende qué canales y timings convierten más
  • Ajusta automáticamente la distribución de recursos
4
Expansión

Trigger marketplace — señales de intención accionables

Regie tiene 100+ señales. El mercado irá mucho más lejos: los usuarios necesitan crear sus propios triggers sobre cualquier dato público o privado.

Señales de empresa

  • Ronda de financiamiento
  • Cambio de liderazgo (CXO nuevo)
  • Lanzamiento de producto
  • Adopción de competidor
  • Cambio en pricing page
  • Job posting relevante

Señales de contacto

  • Aparición en podcast
  • Post viral en LinkedIn
  • Review en G2 / Capterra
  • Cambio de empresa o rol
  • Cambio en website

Triggers custom

  • El usuario define cualquier condición sobre datos propios o externos
  • El agente actúa cuando se cumple el trigger
  • Cada trigger tiene su propia estrategia de respuesta
5
Oportunidad mayor

GTM operating system — más allá del outbound

Todos los competidores se enfocan en outbound. La oportunidad real es ser el sistema operativo de revenue: desde account planning hasta el next step después de la reunión.

Competitors focus on

  • Outbound email
  • Sequence automation
  • Email personalization

GTM OS covers

  • Account planning y priorización
  • Prospecting multi-canal
  • Outreach y follow-up
  • Meeting prep (contexto + agenda)
  • CRM updates automáticos post-call
  • Next-step recommendations
4

Agentic layer and integrations

Un agente interno (Anthropic Agent SDK, modelo Claude más reciente) corre como apps/agent en Fly.io. Es a la vez tool user y endpoint MCP: otros agentes pueden invocar nuestras capacidades de outreach como herramientas, en ambas direcciones.

Domain tools

Wrappers tipados sobre packages/core + Supabase: consultar contactos/empresas, encolar jobs, qualify/classify/score, redactar secuencias, leer ICP.

Composio tools

OAuth gestionado: HubSpot, Google Calendar, Slack, Gmail/Outlook y la long tail. Toolset dinámico por workspace.

MCP client + server

Conecta a MCP servers externos que traiga el usuario y expone el suyo propio. CORS con allow-list, nunca *.

Dónde actúa el agente

Calificación ICP

Juicio sobre empresa/perfil con reglas LLM dentro del ingest Stage-B.

Redacción de secuencias

Genera versiones draft que requieren aprobación antes de cualquier envío.

Desambiguación de replies (Tier 3)

Razona con labels ricos y un mapping los colapsa a los 4 valores canónicos.

Requests NL del operador

"Encuentra 50 más como estos" — su superficie de lenguaje natural.

Lo que nunca hace

Saltar la aprobación de envío

Regla 6 — manual approval mandatory. Propone, no dispara.

Reactivar un unsubscribe

Regla 7 — el estado blocked es terminal.

Sobreescribir verified fields

Regla 1 — inmutabilidad de los campos verificados.

Clasificar títulos en runtime

Story 4 es rule-based; el agente solo sugiere reglas a aprobar.

Integraciones — Composio vs adaptadores directos

Composio — OAuth gestionado

OAuth, refresh de tokens y breadth los gestiona Composio.

HubSpot · CRMGoogle Calendar · bookingSlack · notifyGmail / Outlook

Adaptadores directos — packages/providers

Alto volumen, determinista, con captura de raw payload a Storage antes de parsear y rate-token antes de la llamada.

Bright Data · LinkedInHunter · findNeverBounce · validateResend · send
5

Tech stack

Monorepo pnpm + Turborepo, Node 20 LTS, TypeScript en todas partes, Zod everywhere. Una sola fuente de verdad para secrets (Doppler) y para la identidad (Clerk, a través de packages/auth).

Frontend

  • Next.js 14 — App Router, RSC, Server Actions
  • Tailwind + shadcn/ui
  • TanStack Query — server state
  • Zustand — UI state
  • Deploy en Vercel

Backend & runtime

  • Fly.io — apps/worker job executors
  • Fly.io — apps/agent + MCP server
  • Anthropic Agent SDK
  • Composio — OAuth integrations

Datos & estado

  • Supabase Postgres + RLS
  • Realtime — live pipeline UI
  • Storage — raw payloads
  • jobs queue + Edge Functions

Identidad & secrets

  • Clerk — Orgs + Verified Domains
  • Doppler — única fuente de secrets
  • RLS lee el org activo del JWT
  • Zod — contratos compartidos

Layout del monorepo

apps/

web · worker · agent

packages/

core · providers · db · jobs · auth · schemas · integrations

skills/

playbooks markdown del agente

supabase/

migrations · edge functions

6

Detalle arquitectónico

Tres planos de ejecución coordinados por una cola de jobs en Postgres. El estado vive en un solo lugar (Supabase); Vercel sirve la UI, Fly.io corre el trabajo largo, y Clerk + Doppler eliminan el plumbing de tenancy y secrets.

Topología runtime: Clerk y Doppler alimentan Vercel, Supabase y Fly.io; los workers reclaman jobs de la cola y llaman a providers; el agente usa Composio y expone MCP.

Topología runtime — color por sistema: purple Clerk · amber Doppler · gray Vercel · green Supabase · violet Fly.io · orange Composio

Responsabilidades por plano

Vercel

Next.js FE, Server Actions, webhook routes rápidas (<1s). BFF para la UI.

Supabase

Postgres+RLS, Realtime, Storage, cola jobs, Edge Functions (cron tick + webhooks ultra-rápidos).

Fly.io

Job executors + agent runtime. Sin techo de tiempo de ejecución; mantiene contexto del agente; escala a cero.

Clerk

Identidad, Organizations (tenant), Verified Domains. Borra el código custom de org/invite/domain.

Composio

OAuth gestionado (HubSpot, Calendar, Slack, long tail). El agente recibe tools dinámicas.

Doppler

Secrets para todo lo anterior, por ambiente (dev/stg/prd). Sync nativo, sin duplicación manual.

Flujo canónico

UI → Server Action → insert jobs row (Supabase)
→ cron tick despacha → Fly worker reclama
→ corre pure logic + provider/Composio → persiste + emite contact_event
→ Realtime empuja el status a la UI

Multitenancy — la gran simplificación

El tenant es una Clerk Organization. La app nunca construye membership, roles, invites ni domain allow-lists. El org activo viene de la sesión (JWT org_id), nunca de la URL — las URLs no llevan slug. En la DB, workspaces es una proyección read-only de las orgs de Clerk, sincronizada por webhook. RLS colapsa a "el workspace cuyo clerk_org_id = el org activo de la sesión".

Máquina de estados del contacto

imported → pending_company_resolution → company_resolved → linkedin_discovered → title_classified → email_resolved → email_validated → pending_review → scored → approved | rejected | blocked → enrolled → engaged | unsubscribed | bounced → booked | closed_lost

El pipeline se mantiene determinista de punta a punta. El agente añade juicio solo en los pasos difusos y jamás puentea los gates duros (aprobación, unsubscribe, verified fields).