Wiki Sellerfy
S
Wiki Sellerfy

Manual Operativo
Completo

Guia integral para el equipo comercial y de marketing. Producto, proceso de ventas, tecnologia, CRM, analytics y operaciones.

9 secciones Actualizado: Marzo 2026 Documento interno

Seccion 1

El Producto

1.1 Que es Sellerfy

La IA que convierte tus datos en rentabilidad real

Y si pudieras saber EXACTAMENTE cuanto ganas por cada producto... y optimizarlo con IA?

Sellerfy es una plataforma SaaS B2B de inteligencia artificial disenada exclusivamente para sellers de marketplaces. Conecta directamente con las APIs oficiales de Amazon y Mercado Libre para extraer, procesar y analizar los datos operativos del vendedor en tiempo real. A diferencia de herramientas tradicionales de analytics que se limitan a mostrar graficos y tablas, Sellerfy transforma la data cruda en acciones concretas: calcula la ganancia neta real por producto (descontando fees, envios, impuestos, publicidad y devoluciones), identifica productos que pierden dinero, y a traves de su asistente de IA propietaria Sofi genera recomendaciones accionables y priorizadas para maximizar la rentabilidad del catalogo completo.

Sellerfy no solo muestra datos: te dice que hacer y te ayuda a ejecutarlo. Desde optimizar un titulo de listing hasta reasignar presupuesto publicitario, la plataforma cierra la brecha entre "ver la data" y "actuar sobre la data", eliminando las hojas de calculo manuales y las decisiones a ciegas que caracterizan la operacion de la mayoria de los sellers.

Propuesta de valor unica (UVP)

La unica plataforma que combina calculo de ganancia neta real + IA accionable + dual marketplace (Amazon + MercadoLibre). Ninguna otra herramienta en el mercado ofrece esta combinacion con soporte nativo en espanol.

Resultados comprobados

+60% eficiencia operativa — elimina horas de trabajo manual en Excel y centraliza la operacion.
+40% incremento en ventas — decisiones basadas en datos reales, no suposiciones.
Propuesta de valor basada en el uso de la plataforma.

Razon social Autonomous
Tipo de producto SaaS B2B / AI for E-commerce
Fundacion 2024
Sitio web sellerfy.ai
Aplicacion app.sellerfy.ai
Email hola@sellerfy.ai
WhatsApp +1 (979) 432-7797
Mercados activos Mexico, Colombia, Argentina, Chile, Peru, Brasil, Espana, Estados Unidos, Uruguay, Venezuela
Vision Ser la plataforma #1 de rentabilidad para sellers en LATAM y mercados hispanohablantes

1.2 Target: Ambitious Marketplace Sellers

El perfil objetivo de Sellerfy son sellers activos en Amazon y/o MercadoLibre que ya generan ingresos significativos pero carecen de visibilidad real sobre su rentabilidad. No son principiantes buscando que vender: son operadores con catalogo activo que necesitan optimizar lo que ya tienen para escalar de forma sostenible.

Perfil demografico

Edad

25 – 50 anos

Facturacion mensual

$5,000 – $500,000 USD

Tamano de equipo

1 – 20 personas

Perfil psicografico (6 rasgos clave)

1

Orientados a resultados y numeros

Toman decisiones basadas en metricas, no intuicion. Valoran dashboards accionables sobre reportes estaticos.

2

Frustrados con herramientas pasivas

Han probado tools que muestran datos sin decir que hacer. Quieren recomendaciones claras, no mas graficos que interpretar.

3

Buscan escalar sin multiplicar costos

Quieren crecer su operacion sin contratar mas personas ni aumentar proporcionalmente sus gastos operativos.

4

Valoran el tiempo por sobre todo

Dedican horas semanales a tareas repetitivas (Excel, reportes manuales). Quieren automatizar lo operativo para enfocarse en estrategia.

5

Quieren ventaja competitiva con tecnologia

Entienden que la IA es el diferenciador. Buscan herramientas que los pongan un paso adelante de su competencia.

6

Hablan espanol y quieren soporte en su idioma

La mayoria de herramientas del mercado estan en ingles con soporte en ingles. Sellerfy es nativo en espanol con equipo hispanohablante.

5 Microsegmentos de mercado

seller_manual Eficiencia

Dolor: Calculos manuales o en Excel — dedica horas semanales a armar reportes que quedan desactualizados al dia siguiente.

Mensaje: Sellerfy calcula tu ganancia neta real automaticamente. Adios a los spreadsheets, hola a decisiones en 2 minutos.

seller_scaling Crecimiento

Dolor: Quiere crecer pero no sabe en que productos enfocarse — invierte en ads sin saber cuales generan profit real.

Mensaje: Sofi analiza tu catalogo y te dice exactamente que productos tienen mayor potencial de rentabilidad. Crece con datos, no con intuicion.

seller_data_blind Visibilidad

Dolor: Vende mucho pero no sabe cuanto gana realmente — confunde revenue con profit y toma decisiones a ciegas.

Mensaje: Net Profit Real te muestra la verdad: cuanto ganas por producto despues de TODOS los costos. Sin sorpresas, sin suposiciones.

seller_multi Consolidacion

Dolor: Opera en Amazon y MercadoLibre pero no puede comparar rendimiento — alterna entre dashboards sin vision unificada.

Mensaje: Una sola vista para ambos marketplaces. Compara, optimiza y decide con datos consolidados en un solo panel.

agency_reseller Escalabilidad

Dolor: Gestiona multiples cuentas de clientes y necesita eficiencia — el overhead operativo crece linealmente con cada cuenta nueva.

Mensaje: Gestiona todas las cuentas de tus clientes desde una plataforma, con reportes automaticos y recomendaciones de IA por cuenta individual.

Criterios de calificacion de leads

Criterio Bajo Medio Alto
Plataforma Aun no vende en marketplace Solo MercadoLibre o solo Amazon Amazon + MercadoLibre activos
Facturacion mensual Menos de $5,000 USD $5,000 – $50,000 USD Mas de $50,000 USD
Experiencia Menos de 1 ano 1 – 5 anos Mas de 5 anos

1.3 Core Features

Sellerfy cuenta con 12 funcionalidades core, distribuidas entre los tres planes segun el nivel de profundidad que el seller necesita. Cada feature esta disenada para cerrar la brecha entre ver datos y actuar sobre ellos.

1. Sofi IA

Todos los planes

Asistente de inteligencia artificial propietaria de Sellerfy. Analiza los datos del seller, detecta oportunidades de mejora y genera recomendaciones accionables paso a paso. Funciona como un experto en eCommerce disponible 24/7 que entiende los numeros especificos de cada negocio.

Diferenciador: No es un chatbot generico — entiende tu negocio, tus numeros y tu contexto operativo.

Lite: 2 reco/mes Growth: 5 reco/mes Scale: Ilimitadas

2. Net Profit Real

Todos los planes

Calcula la ganancia neta REAL por producto, descontando automaticamente fees del marketplace, costos de envio, publicidad, devoluciones, impuestos y todos los costos ocultos que las herramientas tradicionales ignoran. Muestra profit, no solo revenue.

Diferenciador: La mayoria de herramientas te muestran revenue. Sellerfy te muestra profit real.

Nota: Landed Cost requerido para profit completo (Growth+Scale)

3. Monitor (Torre de Control)

Todos los planes

Dashboard ejecutivo centralizado que reune todas las metricas clave del negocio en una sola vista. Incluye salud general del catalogo, historial de metricas, metricas organicas, estado de inventario y alertas. Reemplaza las 4+ horas semanales que un seller dedica a Excel.

Diferenciador: Utilidad real visible desde el minuto 1. Ahorro inmediato de tiempo vs operacion manual.

4. Product Health (Semaforo)

Todos los planes

Sistema visual de semaforo que clasifica cada producto del catalogo segun su rentabilidad. Verde indica productos saludables, amarillo requiere atencion, y rojo senala productos que estan perdiendo dinero y necesitan ajustes inmediatos en precio, publicidad o costos.

Diferenciador: Vision instantanea de que productos son rentables y cuales estan quemando margen.

5. Monitor de Publicidad

Growth + Scale

Control completo de ACOS (Advertising Cost of Sales) y ROAS (Return on Ad Spend) por campana y por producto. Identifica exactamente donde se esta desperdiciando presupuesto publicitario y que campanas generan profit real versus las que solo generan clics sin conversion rentable.

Diferenciador: Identifica presupuesto desperdiciado en ads y permite reasignar con datos reales de profit.

6. Monitor de Finanzas

Growth + Scale

Panel financiero detallado que desglosa todos los componentes economicos de la operacion del marketplace: revenue, fees, costos de envio, comisiones, devoluciones, impuestos retenidos y mas. Permite entender exactamente a donde va cada peso de la facturacion bruta.

Diferenciador: Claridad financiera completa sin necesidad de contador o analista externo.

7. Playlists (Modulos de Accion)

Scale exclusivo

Monitor de salud por producto combinado con rutas de optimizacion por tarea. Sofi analiza el catalogo completo y genera listas priorizadas de acciones concretas: ajustar precios, optimizar listings, reasignar presupuesto de ads. Sofi puede bajar el ACOS y optimizar anuncios 24/7 de forma autonoma.

Diferenciador: De la data a la accion en un clic. La IA no solo recomienda, ejecuta.

8. Dual-Marketplace

Todos los planes

Conecta Amazon y Mercado Libre en una sola plataforma unificada. Permite comparar rendimiento entre marketplaces, identificar que productos funcionan mejor en cada canal, y tomar decisiones de asignacion de inventario y presupuesto con una vista consolidada.

Diferenciador: Ninguna herramienta del mercado cubre ambos marketplaces con la misma profundidad.

9. Estimacion de Impacto

Todos los planes

Antes de ejecutar un cambio (subir un precio, modificar un listing, ajustar presupuesto de ads), Sellerfy proyecta el impacto estimado en la ganancia. Permite al seller evaluar el efecto de cada decision antes de implementarla, eliminando el enfoque de prueba y error.

Diferenciador: Toma decisiones informadas, no a ciegas. Ve el resultado antes de actuar.

10. Control de Costos (Landed Cost)

Growth + Scale

Permite cargar el costo real de adquisicion de cada producto (landed cost) para que el Net Profit Real incluya absolutamente todos los costos. Sin landed cost, Sellerfy muestra revenue menos fees; con landed cost, muestra la ganancia real despues de todos los costos incluyendo el costo del producto.

Diferenciador: Si tu utilidad es igual a tu venta, necesitas cargar tu Landed Cost para ver la verdad.

11. Toolkit de Optimizacion

Todos los planes

Conjunto de herramientas de optimizacion de listings que cubre titulos, bullet points y descripciones de producto. Utiliza mejores practicas de SEO de marketplace y datos de rendimiento para sugerir mejoras que incrementen la visibilidad y conversion de cada producto.

Diferenciador: Optimizacion de listing basada en datos de performance, no en suposiciones genericas.

12. Diagnostico por WhatsApp

Scale exclusivo

Envio proactivo de alertas y diagnosticos directamente al WhatsApp del seller. En lugar de esperar a que el vendedor entre al dashboard, Sellerfy le notifica cuando detecta anomalias, oportunidades o acciones urgentes que requieren atencion inmediata.

Diferenciador: La IA va al seller, no al reves. Alertas proactivas donde el seller ya esta: WhatsApp.

1.4 Sincronizacion de Datos

La sincronizacion es el motor que alimenta a Sofi IA y todas las metricas de la plataforma. Sellerfy se conecta via APIs oficiales (Amazon SP-API y API de Mercado Libre) para descargar automaticamente datos de ventas, inventario, publicidad, fees y devoluciones. La frecuencia de actualizacion depende del plan contratado.

Lite

Cada 4 dias

Actualizacion periodica automatica

Growth

Cada 4 dias

Actualizacion periodica automatica

Scale

Tiempo real

Ilimitada + actualizacion manual

Informacion importante sobre sincronizacion

  • Primera sincronizacion: La descarga inicial de historial toma entre 12 y 24 horas. Es completamente normal que el dashboard muestre $0 durante este periodo. No indica un error.
  • Diferencia con datos del marketplace: Las cifras de Sellerfy pueden ser menores a lo que muestra el dashboard de Amazon o MercadoLibre. Esto es correcto: Sellerfy resta automaticamente envios, comisiones e impuestos del monto de venta para mostrarte la ganancia REAL, no el revenue bruto.
  • Net Profit Real: Esta es la metrica que diferencia a Sellerfy. El marketplace muestra revenue bruto; Sellerfy calcula el profit neto real descontando todos los costos operativos. Si la utilidad es igual a la venta, el seller necesita cargar su Landed Cost.

1.5 Planes y Precios

Tres planes disenados para cubrir desde sellers individuales que estan profesionalizando su operacion hasta equipos de alto volumen que necesitan datos en tiempo real e IA ilimitada. Todos los precios en dolares americanos (USD).

Lite

Para vendedores que inician y quieren organizar metricas basicas

$99 USD/mes
Trim: $89/mes Anual: $79/mes
1 usuario 100 productos/marketplace (200 total)

Sofi IA: 2 recomendaciones/mes por categoria

Sincronizacion: cada 4 dias

Incluido

  • Monitor de salud general + historial
  • Metricas organicas e inventario
  • Net Profit Real basico
  • Toolkit de Optimizacion (Titulos, Bullets, Descripciones)
  • Dashboard ejecutivo + alertas basicas
  • Sofi IA (2 reco/mes por categoria)

No incluido

  • Monitor de Publicidad
  • Monitor de Finanzas
  • Control de Costos (Landed Cost)
  • Playlists (Modulos de Accion)
  • Diagnostico por WhatsApp

Ideal para sellers profesionalizando su operacion con hasta 100 productos por marketplace.

Scale

Solucion premium para vendedores de alto volumen

$249 USD/mes
Trim: $219/mes Anual: $189/mes
3 usuarios 1,000 productos/marketplace (2,000 total)

Sofi IA: recomendaciones ilimitadas

Sincronizacion: tiempo real ilimitada

Incluido (todo de Growth +)

  • Playlists — Modulos de Accion (rutas de optimizacion)
  • Diagnostico proactivo por WhatsApp
  • Actualizacion de datos ilimitada (tiempo real)
  • 3 usuarios incluidos
  • Sofi IA ilimitada
  • Account Manager dedicado
  • Consultoria estrategica personalizada
  • Reportes personalizados
  • API access para integraciones custom

Ideal para vendedores de alto volumen con equipos que necesitan datos en tiempo real y soporte premium.

Facturacion y opciones de pago

  • Trimestral: ~10% de ahorro vs precio mensual. Cobro por adelantado al inicio del trimestre.
  • Anual: ~20% de ahorro vs precio mensual. Cobro por adelantado al inicio del ano.
  • Procesador: Stripe (tarjeta de credito/debito). Los datos financieros nunca tocan servidores de Sellerfy.
  • Cambio de plan: Inmediato. Ajustes de cobro proporcionales. Funciones activadas al instante.

Guia rapida de decision

LITE: Vendes en 1 marketplace y quieres organizar metricas basicas.

GROWTH: Te preocupa la publicidad (ACOS/ROAS) y quieres controlar rentabilidad financiera.

SCALE: Alto volumen, equipo operativo, necesitas datos en tiempo real con IA ilimitada.

Regla del bot

Si el usuario pregunta "Cual me conviene?", preguntar primero su volumen de productos y si le preocupa mas la publicidad o solo organizar su inventario. Si dudan del compromiso, recomendar trimestral como punto medio. Si buscan maximo ahorro, recomendar anual.

Nota de seguridad

La unica forma oficial de suscribirse o pagar es a traves del boton "Registrate" en la web principal (sellerfy.ai). No se gestionan pagos por otros medios. Se pueden generar Cotizaciones (Quotes) profesionales desde HubSpot para envio formal al cliente.

1.6 Garantia y Flexibilidad

7 dias de garantia de satisfaccion

Devolucion del dinero garantizada dentro de los primeros 7 dias si el cliente decide no continuar. El proceso es completamente automatico y sin preguntas: se gestiona desde Configuracion > Facturacion en el dashboard del usuario. No requiere intervencion del equipo de soporte.

El seller puede probar la plataforma con sus datos reales, sin compromiso. Si no le genera valor en 7 dias, recupera el 100% de su dinero.

Cambio de plan inmediato

El seller puede subir o bajar de plan en cualquier momento. Los ajustes de cobro son proporcionales al tiempo restante del ciclo y la activacion de las nuevas funciones es instantanea. No hay periodos de espera.

Cancelacion sin penalizaciones

El seller puede cancelar en cualquier momento desde Configuracion > Facturacion. No hay clausulas de permanencia, no hay penalizaciones, no hay cargos ocultos. La cancelacion es efectiva al final del periodo de facturacion vigente.

1.7 Seguridad

La seguridad es la prioridad fundamental de Sellerfy. La plataforma opera bajo estandares internacionales para garantizar proteccion total de la cuenta y los datos del seller. Ningun aspecto de la operacion compromete las credenciales o la integridad de la cuenta del vendedor en el marketplace.

APIs oficiales exclusivamente

Utilizamos Amazon SP-API y la API oficial de Mercado Libre. Somos Partners Oficiales de ambos marketplaces. Amazon prefiere herramientas autorizadas como Sellerfy.

Sin contrasenas

Nunca solicitamos ni almacenamos contrasenas. El acceso se gestiona mediante tokens de autorizacion oficiales del marketplace. El seller autoriza directamente desde su cuenta.

Solo lectura

La conexion se limita a metricas, catalogo y publicidad. Sellerfy no puede modificar listings, cambiar precios ni ejecutar acciones en la cuenta del marketplace. Acceso de solo lectura garantizado.

Cifrado bancario

Procesamiento de datos cifrado bajo estandares de seguridad bancaria. Toda la comunicacion entre la plataforma y las APIs de marketplace esta encriptada end-to-end.

Pagos via Stripe

Los datos financieros del cliente (tarjetas, informacion bancaria) nunca tocan los servidores de Sellerfy. Todo se procesa directamente por Stripe, certificado PCI DSS Level 1.

SOC 2 en proceso

Sellerfy esta en proceso de certificacion SOC 2, el estandar de la industria para seguridad y manejo de datos en plataformas SaaS. Partners Oficiales de Amazon y MercadoLibre.

1.8 App Movil

Sellerfy funciona como una Progressive Web App (PWA). No requiere descarga desde Play Store ni App Store. Se instala directamente desde el navegador del celular y funciona como una aplicacion nativa: icono en la pantalla de inicio, pantalla completa y acceso rapido a todas las funciones del dashboard.

Ventaja clave

El seller puede monitorear su Net Profit Real, recibir alertas de Product Health y consultar a Sofi desde cualquier lugar sin necesidad de estar frente a la computadora.

Instalacion paso a paso

  1. 1

    Abrir app.sellerfy.ai en el navegador del celular (preferiblemente Google Chrome).

  2. 2

    Tocar el menu de opciones (tres puntos verticales en Chrome, o el icono de compartir en Safari).

  3. 3

    Seleccionar "Agregar a la pantalla de inicio" (o "Add to Home Screen").

  4. 4

    Confirmar. El icono de Sellerfy aparecera en la pantalla de inicio como cualquier otra app.

1.9 Integraciones

Sellerfy se conecta con los marketplaces y servicios de pago a traves de APIs oficiales. Cada integracion esta disenada para extraer datos de forma segura (solo lectura) y alimentar el motor de IA con informacion actualizada y precisa.

A

Amazon SP-API

Conexion oficial via Selling Partner API. Acceso a metricas de ventas, inventario, publicidad (Advertising API), fees y devoluciones. Sellerfy es Partner Oficial de Amazon.

Activa
ML

Mercado Libre API

Integracion oficial con la API de MercadoLibre. Datos de catalogo, ventas, metricas organicas, inventario y comisiones. Cobertura completa para todos los paises de LATAM donde opera ML.

Activa
S

Stripe

Procesador de pagos para todas las suscripciones. Certificado PCI DSS Level 1. Los datos de tarjeta nunca pasan por servidores de Sellerfy. Gestion automatica de cobros recurrentes, upgrades y reembolsos.

Activa

Proximamente (Roadmap)

Shopify En desarrollo
WooCommerce En desarrollo

1.10 Comparativa vs Competencia

Sellerfy se diferencia de las herramientas tradicionales de eCommerce por su enfoque en accion inmediata, no en exceso de datos. Mientras otras plataformas abruman al seller con graficos y metricas que requieren interpretacion, Sellerfy convierte la data en tareas concretas y accionables.

Sellerfy vs Helium 10

Caracteristica Sellerfy Helium 10
Enfoque Acciones y tareas claras Exceso de datos (Overkill) — decenas de herramientas que abruman
Curva de aprendizaje Simplicidad estrategica Compleja y tecnica — requiere semanas de onboarding
Mercado Amazon + Mercado Libre Mayormente Amazon — sin soporte nativo para MercadoLibre
IA proactiva Alertas automaticas via WhatsApp Graficos pasivos — el seller tiene que ir a buscar la informacion
Idioma y soporte Nativo en espanol Ingles principal, espanol limitado
Net Profit Real Calculo automatico con todos los costos Muestra revenue y estimaciones, no profit neto real

Sellerfy vs Jungle Scout

Jungle Scout esta disenado para research de producto: ayuda a encontrar que vender, analizar nichos y validar ideas de productos nuevos. Es una herramienta de descubrimiento enfocada en la fase previa a la operacion.

Sellerfy, en cambio, esta disenado para OPERAR y OPTIMIZAR un negocio de marketplace existente. Se enfoca en maximizar la rentabilidad del catalogo actual, controlar costos y ejecutar mejoras con IA.

Conclusion: Se complementan perfectamente. Jungle Scout para encontrar productos, Sellerfy para hacerlos rentables.

Sellerfy vs Keepa

Keepa es una herramienta de tracking de precios e historial. Permite ver como ha fluctuado el precio de un producto a lo largo del tiempo, el ranking BSR y la estimacion de ventas. Es una referencia util para analisis puntual.

Sellerfy va mucho mas alla: no solo trackea precios, sino que calcula la GANANCIA real por producto despues de todos los costos y usa IA para generar un plan de accion que maximice esa ganancia de forma continua.

Conclusion: Keepa muestra que pasa con los precios. Sellerfy muestra que hacer para ganar mas.

Resumen diferencial: Ninguna herramienta del mercado combina Amazon + MercadoLibre con calculo de net profit real + IA accionable + soporte nativo en espanol. Esta combinacion es exclusiva de Sellerfy.

1.11 Testimonios

Testimonios reales de sellers que usan Sellerfy en su operacion diaria. Utiles para compartir en conversaciones de ventas cuando el prospecto necesita social proof o esta en fase de decision.

Por fin se cuanto gano de verdad. Resulta que mi producto estrella era el menos rentable.

SA

Seller de Amazon MX

Descubrio que su producto mas vendido tenia margen negativo despues de ads y fees

Sofi me dijo que subiera el precio de 3 productos. No le crei, pero lo hice. Mis ventas no bajaron y mi margen subio 15%.

SM

Seller de MercadoLibre

IA detecto elasticidad de precio favorable en 3 SKUs del catalogo

Antes tardaba 4 horas a la semana en Excel. Ahora lo veo todo en un dashboard en 2 minutos.

MM

Seller multi-marketplace

Centralizo la operación de dos marketplaces en una sola vista y elimine reportes manuales

El Action Playlist cambio mi forma de trabajar. Ya no adivino — sigo los pasos que Sofi me da.

SC

Seller en crecimiento

Paso de decisiones intuitivas a ejecucion guiada por IA en su operacion diaria


Seccion 2

Proceso Comercial

2.1 Regla de Oro

"Lo que no se mide no mejora, y lo que no se prospecta no se vende."

Esta frase no es un eslogan motivacional — es el cimiento operativo de todo el equipo comercial de Sellerfy. Cada interaccion con un seller debe quedar registrada, cada metrica debe ser rastreada, y cada dia sin prospeccion activa es un dia en el que el pipeline se seca. La cultura SDR de Sellerfy se construye sobre dos pilares inseparables: disciplina de datos (medir todo, registrar todo, analizar todo) y prospeccion constante (el pipeline no se llena solo — se llena con accion deliberada y repetida). Si un SDR interioriza esta regla, el resto del proceso fluye naturalmente. Si la ignora, ninguna tactica ni herramienta lo va a salvar.

2.2 Cultura SDR — Los 5 Principios

Estos cinco principios definen como opera un SDR de Sellerfy. No son sugerencias — son compromisos no negociables que separan a un vendedor comun de un profesional que construye relaciones y cierra deals de forma consistente.

1

Foco en el Seller

Entendemos su operacion en Amazon o Mercado Libre antes de vender. No vendemos features, vendemos soluciones a su situacion especifica. Antes de abrir la boca, el SDR debe saber: en que marketplace vende, cuantos SKUs maneja, cual es su facturacion aproximada y cual es su dolor principal. Vender sin contexto es disparar a ciegas. Vender con contexto es cirujia de precision.

2

Prioridad Absoluta al Cliente

Ante cruces de agenda entre un cliente y una reunion interna, el SDR DEBE priorizar al cliente. El tiempo del cliente es sagrado. Siempre. Una reunion interna se puede reagendar en 5 minutos; un cliente que se siente ignorado no regresa. Esto aplica para demos, follow-ups, llamadas de soporte y cualquier interaccion donde el cliente ya separo tiempo. Si hay conflicto, se avisa al equipo interno, se mueve la reunion, y se atiende al cliente. Sin excepciones.

3

Disciplina de Datos

Si el lead no esta en HubSpot con su informacion completa, el trabajo no se hizo. Sin datos completos, no hay seguimiento efectivo, no hay metricas, no hay aprendizaje. Esto incluye: nombre completo, pais, marketplace, facturacion estimada, numero de SKUs, notas de la conversacion, y el proximo paso acordado. Un CRM limpio no es un capricho administrativo — es la memoria colectiva del equipo. Cuando un SDR se va de vacaciones o cambia de rol, el siguiente debe poder retomar cualquier lead sin perder un segundo.

4

Sentido de Urgencia

Los leads se enfrian rapido; el seguimiento debe ser inmediato. Un lead que espera 24 horas probablemente ya hablo con la competencia. La velocidad de respuesta es el predictor numero uno de conversion en ventas B2B SaaS. La velocidad de primer contacto es uno de los factores mas decisivos en conversion de leads B2B. En Sellerfy, la regla es simple: si un lead llega, se atiende ahora. No despues del almuerzo, no manana temprano — ahora.

5

Mentalidad de Cazador

Si el calendario esta vacio, salimos a buscar leads (Outbound). No esperamos sentados. El pipeline no se llena solo. Un SDR que depende exclusivamente del inbound es un SDR vulnerable. Los mejores SDRs tienen un instinto depredador: revisan LinkedIn buscando sellers, monitorean grupos de sellers en Facebook, buscan tiendas nuevas en los marketplaces, piden referidos a clientes satisfechos. El outbound no es un plan B — es una disciplina diaria que asegura que siempre haya oportunidades en el pipeline, sin importar cuantos leads lleguen por marketing.

6

Cultura de KPIs

Aqui medimos todo. Los numeros diarios son el pulso del equipo: si los KPIs del dia se cumplen, los resultados mensuales llegan solos. Sin excepcion. Lo que no se mide no se mejora, y lo que no se mejora se estanca. Cada SDR es responsable de conocer sus metricas, revisarlas a diario, y tomar accion cuando un indicador baja. Los KPIs no son para controlar — son para que cada persona del equipo sepa exactamente donde esta y que necesita ajustar.

7

Dueno del Follow-up

Un "no" hoy es un "quizas" manana. El seguimiento constante y respetuoso es lo que separa a un SDR promedio de uno excepcional. Cada interaccion debe terminar con un proximo paso claro: una fecha, una accion, un compromiso. Si no hay proximo paso, la oportunidad muere. El follow-up no es insistencia — es profesionalismo. Es decirle al seller "me importa tu negocio y no me olvide de ti."

2.3 Rutina Diaria (Kick-off)

Cada manana, antes de hacer cualquier otra cosa, el SDR ejecuta estos tres pasos en orden. Esta rutina no debe tomar mas de 20 minutos y establece el enfoque del dia completo.

1

Consulta de Calendario

Revisar el dia completo. Identificar huecos disponibles para prospeccion activa. Confirmar todas las demos agendadas — enviar recordatorio al prospecto si la demo es en las proximas 2 horas. Preparar fichas de cada cliente que tiene reunion hoy: revisar su historial en HubSpot, notas previas del bot, y si es posible, echar un vistazo rapido a su tienda en el marketplace. Llegar a una demo sin preparacion es una falta de respeto al tiempo del prospecto.

2

Revision de Inbox

Atender respuestas de clientes primero — antes de cualquier tarea interna. Revisar mensajes en Slack (#sales). Responder WhatsApps pendientes en la bandeja compartida de Chatwoot. Los mensajes sin respuesta de la noche anterior son la maxima prioridad: cada hora que pasa sin respuesta reduce la probabilidad de conversion. Si hay mensajes que requieren informacion que no tienes, responde acusando recibo y comprometete a una hora especifica de respuesta.

3

HubSpot

Revisar las tareas pendientes del dia en el panel de actividades. Luego, revisar la actividad reciente del pipeline: ¿quien abrio un correo? ¿Quien hizo clic en el link de demo? ¿Quien visito la pagina de pricing? Esos leads tienen prioridad — un lead que interactuo con tu contenido en las ultimas horas esta caliente y receptivo. Contactarlos ahora puede ser la diferencia entre cerrar y perder. Finalmente, verificar que no haya contactos sin propietario asignado o leads huerfanos en el pipeline.

2.4 El Funnel de Ventas

A. Captacion y Filtros (Inbound)

No todos los leads son iguales. El proceso de calificacion determina cuanto tiempo y energia dedicar a cada prospecto. Un seller con $50k USD mensuales en Amazon merece un approach completamente distinto a uno que esta comenzando con 5 SKUs en Mercado Libre. La tabla siguiente define los criterios de filtro y sus valores posibles:

Criterio Valores Implicacion
Plataforma Mercado Libre · Amazon · Ambos Define que funcionalidades mostrar en la demo y que pain points atacar primero
Facturacion mensual <$5k USD · $5k-$50k USD · >$50k USD Determina el plan recomendado y el nivel de atencion personalizada
Experiencia <1 ano · 1-5 anos · >5 anos Sellers con mas experiencia valoran datos avanzados; nuevos necesitan guia basica

Prioridad de atencion: Los leads con facturacion >$5k USD y experiencia >1 ano son el sweet spot de Sellerfy. Tienen suficiente volumen para que la herramienta genere un ROI inmediato y suficiente experiencia para entender el valor de los datos. Leads con <$5k se atienden pero se orientan al plan mas basico y al flujo self-service.

B. Preparacion de la Demo

Investigacion Previa

  • • Revisar la ficha completa del lead en HubSpot: pais, marketplace, facturacion estimada, numero de SKUs
  • • Entender que problema especifico lo trajo a Sellerfy — revisar notas del bot si existe conversacion previa en Chatwoot
  • • Buscar la tienda del seller en el marketplace para tener contexto real: que vende, cuantas resenas tiene, como se posiciona
  • • Identificar 2-3 puntos de dolor probables basados en su perfil para personalizar la demo

Setup Tecnico

  • • Tener abierto el entorno de demo de Sellerfy con datos de ejemplo listos para mostrar
  • • Tener la ficha de HubSpot del prospecto lista para tomar notas en tiempo real durante la reunion
  • • Tener preparado el link de Stripe y la herramienta de Cotizaciones de HubSpot por si se cierra en la llamada
  • • Verificar que la sala virtual (Google Meet / Zoom) funciona correctamente: audio, video, compartir pantalla

C. La Reunion — Showroom de Impacto

La demo no es una presentacion de slides. Es un showroom en vivo donde el seller ve, con datos reales, el impacto de Sellerfy en su operacion. Hay tres momentos clave que deben ejecutarse en orden:

1

Monitor (Torre de Control)

Primer impacto. Mostrar el dashboard ejecutivo con datos reales. Demostrar la utilidad inmediata y el ahorro de tiempo vs Excel. El seller debe ver en los primeros 60 segundos que esto es algo que necesita.

"Esto que ves aqui es lo que normalmente te toma 4 horas en Excel. Aqui lo tienes en 2 minutos, actualizado automaticamente."

2

Product Health (Semaforo)

El momento de la verdad. Identificar productos que pierden dinero con el sistema de semaforo. Rojo = requiere ajustes urgentes. Amarillo = atencion requerida. Verde = todo bien. Este es el punto donde la mayoria de sellers se sorprenden, porque descubren que su percepcion de rentabilidad estaba equivocada.

"¿Ves este producto? Creias que era tu estrella, pero esta perdiendo dinero en publicidad."

3

Playlist (Sofi IA en accion)

El diferenciador. Mostrar como Sofi analiza el catalogo completo y crea listas priorizadas de acciones concretas. Mostrar como puede bajar el ACOS y optimizar anuncios 24/7 sin intervencion manual. Este es el momento donde Sellerfy se separa de cualquier competidor — no solo diagnostica, actua.

"Sofi no solo te dice que pasa — te dice que hacer y lo ejecuta."

D. Cierre y Onboarding

Pago

Compartir link de Stripe directamente o generar una Cotizacion (Quote) profesional desde HubSpot. La unica via oficial para self-service es el boton "Registrate" en sellerfy.ai. Para enterprise o cierres asistidos, usar siempre el sistema de Quotes de HubSpot que incluye branding, desglose de precios y CTA claro.

Conexion Inmediata

El valor real debe verse en los primeros minutos despues de la compra. Guiar al cliente paso a paso para conectar sus cuentas de marketplace. Explicar claramente que la primera sincronizacion toma 12-24 horas — es completamente normal ver $0 durante este periodo inicial. Anticipar esta expectativa evita tickets de soporte innecesarios y ansiedad del cliente.

Seguimiento 48h

Contactar al cliente 48 horas despues de la conexion para verificar que los datos se sincronizaron correctamente y resolver cualquier duda. Este touchpoint es critico: es la diferencia entre un cliente que se queda y uno que pide reembolso en los primeros 7 dias. Preguntar: ¿ya ves tus datos? ¿Los numeros se ven coherentes? ¿Tienes alguna duda sobre lo que ves?

REGLA INQUEBRANTABLE

Si el lead no esta en HubSpot con su informacion completa, el trabajo no se hizo. Cada demo sin datos registrados es una oportunidad desperdiciada. Sin nombre, pais, marketplace, facturacion, notas de la conversacion y proximo paso — la demo no existio.

2.5 Como Crear Deseo — La Estrategia de Valor

Vender Sellerfy no es empujar un producto — es hacer que el seller visualice un futuro donde tiene control total de su rentabilidad. Estas cinco tecnicas, aplicadas en secuencia, transforman una conversacion fria en una decision de compra natural.

1

Descubre su dolor

Empieza con la pregunta: "¿Cual es tu mayor reto ahorita vendiendo en [marketplace]?" Cuando te lo dicen, CONECTA inmediatamente con como Sellerfy resuelve exactamente eso. No hables de features — habla de su problema especifico y como desaparece. Si dice "no se cuanto gano realmente", conectas con Monitor. Si dice "gasto mucho en publicidad", conectas con Product Health. Si dice "no tengo tiempo para optimizar", conectas con Sofi.

2

Usa numeros que impactan

"¿Sabias que la mayoria de sellers no conocen su ganancia neta real? Muchos descubren que su 'producto estrella' es en realidad su menos rentable." Los datos generan autoridad y urgencia real (no falsa). Una observacion concreta vale mas que diez adjetivos. Cuando planteas la pregunta, el seller mentalmente se pregunta: "¿sere yo parte de ese grupo?" — y la respuesta casi siempre es si.

3

Pinta el resultado

NO digas "tenemos un dashboard". DI: "Imagina abrir Sellerfy manana y ver, producto por producto, cuanto ganas REALMENTE. Y que Sofi te diga: 'Sube el precio de estos 3 productos — tus ventas no van a bajar y tu margen sube 15%.'" Hazlo tangible, personal, especifico. El prospecto debe poder verse usando la herramienta. No vendas el software — vende el momento en que abre Sellerfy por primera vez y finalmente entiende su negocio.

4

Social proof

Usa testimonios reales: "Un seller nos dijo: 'Por fin se cuanto gano de verdad. Resulta que mi producto estrella era el menos rentable.'" Los testimonios de pares generan confianza mas que cualquier argumento tecnico. Un seller confia en otro seller mas que en un pitch de ventas. Cuando puedas, menciona el marketplace y pais del testimonio para hacerlo aun mas relevante (“un seller de Amazon Mexico nos dijo...”).

5

La demo cierra

"Esto es mejor verlo que escucharlo. En la demo te conectamos con tus datos reales y ves tu Net Profit en tiempo real. 30 minutos que te van a cambiar la forma de ver tu negocio." La demo con datos reales del seller es el closer mas poderoso que tenemos. Ningun PDF, ningun video, ningun correo tiene el mismo impacto que ver tus propios numeros en pantalla. Todo lo anterior (dolor, numeros, resultado, social proof) construye hacia este momento: agendar la demo.

2.6 Gestion de WhatsApp — Reglas y Limites

WhatsApp es el canal mas poderoso para comunicarse con sellers en LATAM, pero viene con restricciones estrictas de Meta que debemos respetar para evitar suspensiones.

!

Limite Meta: 1,000 mensajes de plantilla al mes

Este limite es para todo el portal — no por SDR. Uso selectivo obligatorio. No desperdiciar en leads frios o contactos que ya indicaron desinteres. Cada template enviado debe tener un proposito claro y un prospecto calificado.

24h

Ventana de 24 horas

Solo se abre el "chat libre" (mensajes sin template) cuando el cliente responde. A partir de su respuesta, tienes 24 horas para enviar mensajes libres. Fuera de esta ventana, solo se pueden enviar templates aprobados por Meta. Esto hace que cada respuesta del prospecto sea oro — aprovechala para avanzar la conversacion.

Monitoreo en Chatwoot

El SDR debe estar pendiente de la bandeja compartida en Chatwoot para responder de inmediato. Un mensaje sin respuesta equivale a una oportunidad perdida. Configurar notificaciones del navegador y movil para no perder ninguna respuesta entrante.

Templates Aprobados

Solo usar templates previamente aprobados por Meta. No enviar contenido promocional fuera de template — esto puede resultar en suspension del numero. Si necesitas un template nuevo, solicitalo al equipo de operaciones con al menos 48 horas de anticipacion.

2.7 Manual Tecnico HubSpot para SDRs

HubSpot es la columna vertebral del proceso comercial. Cada accion del SDR debe quedar reflejada aqui. Un CRM bien mantenido es la diferencia entre un equipo que escala y uno que se estanca.

Registro de Llamadas

Al terminar una llamada, registrar SIEMPRE el resultado en HubSpot. Incluir: resultado (conecto / buzon / no contesto), duracion, notas relevantes de lo hablado, y el proximo paso acordado con el prospecto. Una llamada sin registro es una llamada que no existio para el equipo.

WhatsApp

Usar la bandeja de entrada de HubSpot para mantener el historial vinculado al contacto. NUNCA responder desde el telefono personal — toda comunicacion debe quedar registrada en HubSpot. Si un seller te escribe al personal, redirigirlo amablemente al numero oficial.

Secuencias

NO enviar correos manuales a leads frios — usar Secuencias personalizadas de HubSpot. Las secuencias estan disenadas con timing y contenido optimizado basado en datos historicos de apertura y conversion. El SDR puede personalizar el primer correo, pero la cadencia y follow-ups deben seguir la secuencia establecida.

Show vs No-Show — OBLIGATORIO

Marcar "Completada" o "No asistio" despues de cada demo. Esto es obligatorio, no opcional. Esta accion alimenta las metricas de conversion y activa los flujos de follow-up automaticos. Un no-show sin marcar rompe todo el pipeline de automatizacion. Ademas, registrar la razon del no-show si es conocida.

Quotes (Cotizaciones)

Usar la herramienta de "Cotizaciones" de HubSpot para enviar links profesionales de pago. No compartir links de Stripe crudos en conversaciones — las Quotes incluyen branding de Sellerfy, desglose detallado de precios, y un CTA claro. Ademas, las Quotes quedan asociadas al contacto y al deal en HubSpot para trazabilidad completa.

2.8 Personas Clave del Equipo Comercial

MC

Miguel Camargo

Sales Development Manager

Toma demos personalizadas. Se puede mencionar por nombre al compartir su link de agenda con el prospecto para humanizar la interaccion.

PE

Pablo Estrada

CEO

NUNCA mencionar en conversaciones comerciales a menos que sea estrictamente necesario. Escalaciones criticas unicamente.

2.9 KPIs del Equipo Comercial

Cada SDR debe rastrear estas metricas de forma consistente. Los KPIs se dividen en tres cadencias: diarios (actividad operativa), semanales (eficiencia del pipeline) y mensuales (resultados de negocio). Sin metricas no hay visibilidad, sin visibilidad no hay mejora.

KPIs Diarios (Actividad Operativa)

Estos se miden cada dia como parte de la rutina de kick-off y cierre de jornada. Son indicadores de esfuerzo y disciplina — si no se cumplen, el pipeline se seca en 1-2 semanas.

KPI Meta Como se mide Por que importa
Calendario revisado 100% antes de las 9am Autocontrol — primer paso del kick-off Identificar huecos para prospeccion y preparar demos del dia
Inbox limpio 0 mensajes sin respuesta al inicio del dia Chatwoot + HubSpot inbox + Slack #sales Mensajes sin respuesta de la noche anterior son prioridad maxima
Tareas HubSpot completadas 100% de las tareas del dia Panel de actividades de HubSpot Tareas pendientes = oportunidades que se enfrían
Llamadas registradas 100% de llamadas con resultado en HubSpot Registro de llamadas en HubSpot (resultado + notas + proximo paso) Llamada sin registro = llamada que no existio para el equipo
Demos completadas Marcar "Completada" o "No asistio" en cada demo HubSpot meetings — OBLIGATORIO Alimenta metricas de conversion y activa follow-ups automaticos
Leads contactados (prospeccion) Minimo 5-10 contactos nuevos/dia en huecos de agenda HubSpot activity log + WhatsApp templates enviados Mentalidad de cazador: si el calendario esta vacio, se prospecta
Touchpoints totales Minimo 40 acciones diarias (llamadas + WhatsApp + emails + seguimientos) HubSpot activity log — suma total de actividades registradas en el dia Volumen de actividad garantiza cobertura del pipeline y velocidad de respuesta

KPIs Semanales (Eficiencia del Pipeline)

Se revisan cada lunes en la reunion de equipo. Son indicadores de eficiencia y conversion — muestran si el esfuerzo diario se esta traduciendo en resultados. Las metas se definen internamente por el equipo segun la etapa del negocio.

KPI Que mide Formula / Fuente Accion si esta bajo
Demos agendadas Volumen de oportunidades generadas por SDR HubSpot meetings creados en la semana Aumentar prospeccion outbound, revisar calidad del messaging
Tasa de show-up Porcentaje de prospectos que asisten a la demo Demos completadas / Demos agendadas Mejorar recordatorios pre-demo (2h y 24h antes), calificar mejor
Tasa de conversion demo → pago Efectividad del showroom de impacto Nuevos clientes / Demos completadas Revisar calidad del showroom, battlecards, follow-up post-demo
Tiempo promedio de respuesta Velocidad de primer contacto con leads nuevos Chatwoot first response time Configurar notificaciones movil, priorizar inbox en kick-off
Valor del pipeline Tendencia del valor total de deals abiertos HubSpot deal pipeline total value Si el pipeline baja, aumentar volumen de prospeccion

KPIs Mensuales (Resultados de Negocio)

Indicadores de impacto en el negocio. Se revisan en el cierre de cada mes y definen la estrategia del mes siguiente. Las metas numéricas las define el equipo de liderazgo.

KPI Que mide Fuente de datos
MRR (Monthly Recurring Revenue) Ingresos recurrentes mensuales — tendencia mes a mes Stripe → stripe_sync.py → HubSpot (propiedad mrr)
Nuevos clientes Suscripciones nuevas en el mes Stripe new subscriptions + HubSpot lifecycle transitions a Customer
Churn rate Porcentaje de clientes que cancelaron Clientes cancelados / Clientes activos inicio de mes (Stripe)
Leads generados (por canal) Volumen y origen de leads nuevos HubSpot nuevos contactos + UTMs por acquisition_channel
LTV promedio Valor de vida promedio de clientes HubSpot propiedad ltv (calculado por ltv_backfill.py desde Stripe)
Conversion total (lead → cliente) Eficiencia global del funnel Nuevos clientes / Total leads del mes
Costo de adquisicion (CAC) Inversion por cada nuevo cliente Gasto marketing / Nuevos clientes (Google Ads + orgánico)

Donde ver cada KPI

Diarios: HubSpot panel de actividades + Chatwoot bandeja compartida + calendario personal.

Semanales: HubSpot reportes de pipeline + Chatwoot metricas de conversacion.

Mensuales: Stripe dashboard (MRR, suscripciones, churn) + HubSpot reportes de funnel + GA4 via analytics_sync.py.

Automatizado: stripe_sync.py corre diario a las 6am UTC y actualiza MRR, estado de suscripcion, y lifecycle stages automaticamente en HubSpot.

2.10 Playbook de Prospeccion Outbound

Si el calendario no tiene demos, salimos a cazar. El outbound no es un plan de emergencia — es una disciplina diaria. Esta seccion detalla los canales, tacticas y cadencias que el SDR debe seguir para generar oportunidades de forma proactiva.

Canales de Prospeccion

LinkedIn

  • • Usar Sales Navigator para buscar sellers por marketplace, pais, y tamano de operacion
  • • Conectar con mensaje personalizado mencionando su marketplace o nicho especifico
  • • Compartir contenido de valor (tips de rentabilidad, optimizacion de ads) para calentar la relacion antes del pitch
  • • Buscar perfiles que mencionan Amazon, Mercado Libre, ecommerce, FBA, o seller en su headline o experiencia

Grupos y Comunidades

  • • Participar activamente en grupos de sellers en Facebook y WhatsApp (no solo observar — aportar valor)
  • • Monitorear preguntas frecuentes sobre rentabilidad, publicidad, o herramientas — esas son oportunidades de contacto natural
  • • Nunca hacer spam ni publicar links de venta directos — primero aportar, luego presentar Sellerfy en contexto
  • • Identificar sellers activos que postean sobre problemas que Sellerfy resuelve

Marketplace Research

  • • Buscar tiendas nuevas o en crecimiento directamente en Amazon y Mercado Libre
  • • Identificar sellers con volumen alto de SKUs pero probables problemas de rentabilidad (muchos productos, margins comprimidos)
  • • Buscar sellers que hacen mucha publicidad — alto gasto en ads indica necesidad de optimizacion
  • • Pedir referidos a clientes satisfechos: el mejor outbound es una recomendacion

Re-engagement de Leads Frios

Los leads que no convirtieron no estan muertos. Antes de buscar leads nuevos, revisa el pipeline de leads inactivos:

Tipo de Lead Estrategia de Re-engagement Canal
No-show a demo Reagendar con mensaje directo y empatico ("Se que la agenda es complicada. Puedo mostrarte Sellerfy en 15 minutos si te queda mejor.") WhatsApp / Email
Demo sin cierre Enviar contenido de valor (caso de uso similar, nueva feature relevante) y preguntar si hay dudas pendientes Email / WhatsApp
Registro sin activacion Ofrecer ayuda para conectar su marketplace ("Vi que te registraste pero no conectaste tu tienda. Te puedo guiar en 5 minutos.") WhatsApp
Lead frio (>30 dias) Re-contactar con algo nuevo: un feature lanzado, un webinar, o una mejora en su plan de interes Email con secuencia

Cadencia recomendada de prospeccion

Diario: Minimo 5 nuevos contactos + revision de leads inactivos en huecos de agenda.
Semanal: Revisar pipeline completo, identificar leads frios que no se han contactado en >7 dias.
Regla: Si una manana no tiene demos agendadas, esa manana es 100% prospeccion. No hay excusa para tener el calendario vacio y no estar buscando leads activamente.


Seccion 3

Battlecards

3.1 ¿Que son las Battlecards?

Las Battlecards son respuestas pre-disenadas y probadas para las objeciones mas comunes que enfrenta un SDR en cada etapa del proceso de venta. No son scripts rigidos — son marcos de respuesta que capturan la estructura y el mensaje central que funciona, permitiendo al SDR adaptarlos al contexto de cada conversacion.

Como usar las Battlecards

  • Memoriza el nucleo: No necesitas recitar la respuesta palabra por palabra. Entiende la logica detras de cada respuesta y adaptala a tu estilo.
  • Personaliza siempre: Usa el nombre del seller, su marketplace, su situacion especifica. Una respuesta generica se siente como un script; una personalizada se siente como una conversacion.
  • Practica en equipo: Haz role-play con tu companero SDR. La objecion que te paraliza hoy sera la que cierras manana si la practicas.
  • Evoluciona: Si descubres una respuesta que funciona mejor, compartela en #sales para actualizar las Battlecards.

Principio clave: Una objecion no es un rechazo — es una pregunta disfrazada. Cuando un seller dice "es muy caro", en realidad esta preguntando "que valor me da esto?". Tu trabajo es responder la pregunta real, no la superficial.

3.2 Objeciones en Prospeccion

Estas son las objeciones que surgen cuando el SDR esta intentando abrir la conversacion por primera vez — ya sea por WhatsApp, llamada o redes sociales. El objetivo aqui no es cerrar; es mantener la conversacion viva y avanzar hacia la demo.

Objecion Respuesta Por que funciona
"No tengo tiempo" "Precisamente por eso te busco: para recuperarte 5 horas a la semana con automatizacion. Lo que haces hoy en Excel en 4 horas, con Sellerfy lo ves en 2 minutos. ¿Cuando podriamos hacer una demo rapida de 20 minutos?" Reenmarca la objecion como la razon exacta para hablar. El "no tengo tiempo" se convierte en "entonces necesitas esto aun mas". Ademas, proponer 20 minutos (en vez de 30 o 60) reduce la barrera.
"Enviame un correo" "Claro, te lo envio hoy. Para mandarte informacion relevante y no generica: ¿vendes mas en Amazon o Mercado Libre? Asi te mando datos especificos de tu nicho y marketplace." Acepta la solicitud (no pelea la objecion) pero la usa como puerta para calificar al lead. Ahora sabes su marketplace y tienes una razon para hacer follow-up personalizado. La conversacion sigue viva.
"Ya uso otra herramienta" "Excelente, ¿esa herramienta te da el margen neto real descontando publicidad por cada producto individual? Sellerfy se complementa perfecto con herramientas de research — nosotros nos enfocamos en la rentabilidad neta que otras no calculan." Posiciona a Sellerfy como complementario, no como reemplazo. Esto elimina la resistencia de "ya tengo algo" y abre la puerta a mostrar un valor diferencial que su herramienta actual probablemente no cubre: Net Profit por SKU.

3.3 Objeciones en Demo

Estas objeciones surgen durante o inmediatamente despues de la demo. El prospecto ya vio el producto — ahora esta evaluando si lo vale. Las respuestas deben ser concretas, basadas en datos, y respaldadas por lo que acaba de ver.

Objecion Respuesta Por que funciona
"Es muy caro" "Miremos el Product Health que acabamos de ver: Sellerfy cuesta menos que lo que estas perdiendo hoy por esos productos en rojo. Y tienes 7 dias de garantia de devolucion — si no ves el valor, te regresamos el 100%. Riesgo cero." Muestra ROI con los datos propios del seller que acaba de ver en la demo. Al anclar el costo contra las perdidas visibles, el precio parece pequeno. La garantia elimina la percepcion de riesgo.
"Prefiero mi Excel" "Entiendo, Excel es una herramienta que conoces bien. Pero Excel es manual y se equivoca — un error de formula puede costarte miles. Sellerfy es tiempo real, via API oficial, y lo que te toma 4 horas a la semana lo ves en 2 minutos. ¿Cuanto vale tu tiempo?" No ataca a Excel (el seller lo quiere). Reconoce su valor pero contrasta con limitaciones concretas: errores humanos, tiempo invertido, falta de actualizacion en tiempo real. El cierre con pregunta retórica fuerza la reflexion.
"Miedo a la conexion" "Totalmente valido que te preocupe. Somos Partners Oficiales de Amazon y Mercado Libre. La conexion es via API encriptada de solo lectura — nosotros no vemos tus claves, no podemos modificar nada en tu cuenta. De hecho, Amazon prefiere que uses herramientas autorizadas como la nuestra." Valida la preocupacion (no la minimiza). Luego apila tres capas de confianza: Partner Oficial, solo lectura, y el endorsement implicito de Amazon. La seguridad tecnica se vuelve un argumento a favor.
"¿Mis datos son seguros?" "Nunca solicitamos contrasenas. Usamos tokens de autorizacion oficiales, de solo lectura, con cifrado de nivel bancario. Tu informacion esta mas segura con nosotros que en una hoja de Excel compartida por correo. Es el mismo nivel de seguridad que usa tu banca en linea." La especificidad tecnica genera confianza: "tokens", "solo lectura", "cifrado bancario". Comparar con Excel compartido por correo (que es lo que muchos sellers hacen) pone en perspectiva el riesgo real.

3.4 Objeciones de Soporte

Estas objeciones vienen de clientes activos que enfrentan fricciones. Son oportunidades para fortalecer la relacion y, en algunos casos, para hacer upsell a un plan superior. La clave: resolver primero, vender despues.

Objecion Respuesta Por que funciona
"Sofi no me ayudo" "Entiendo, y lamento la experiencia. Sofi es excelente con consultas generales y optimizacion automatica, pero para casos especificos como el tuyo, revisemos tu situacion manualmente ahora mismo. ¿Me cuentas que estabas intentando hacer?" Reconoce la frustracion sin defender la IA. Escala inmediatamente a atencion humana, que es lo que el cliente realmente necesita. La pregunta abierta al final recopila informacion para mejorar a Sofi en el futuro.
"Miedo a bloqueos" "Es una preocupacion comun y totalmente valida. Sellerfy es Partner Oficial. Usamos la API de solo lectura — no modificamos, no publicamos, no tocamos nada en tu cuenta. De hecho, Amazon prefiere que uses herramientas autorizadas en lugar de scraping o extensiones no oficiales." Posiciona a Sellerfy como la opcion segura frente a alternativas no oficiales. El miedo a bloqueos es real (Amazon bloquea cuentas), y al ser Partners Oficiales, Sellerfy es la solucion, no el riesgo.
"Ventas no reflejadas" "Entiendo la frustracion. En los planes Lite y Growth, la sincronizacion tiene intervalos de 4 dias — esto es normal y no significa que haya un error. Si necesitas datos en tiempo real, el plan Scale ofrece sincronizacion continua. ¿Quieres que revisemos si Scale se ajusta a tu operacion?" Da una explicacion tecnica clara (no es un bug, es el intervalo del plan). Luego abre naturalmente la puerta al upsell sin presionar. El cliente entiende que tiene opciones, no limitaciones.

3.5 Principios de Manejo de Objeciones

Mas alla de las respuestas especificas, estos principios guian toda interaccion con objeciones. Son la brujula etica y estrategica del equipo comercial.

NUNCA

  • × Manipular o crear urgencia falsa ("oferta limitada", "solo por hoy", "ultimo cupo"). La confianza es el activo mas valioso — una mentira la destruye para siempre.
  • × Hablar mal de competidores directamente. Posicionarse como superior no requiere atacar a otros — requiere demostrar valor propio.
  • × Inventar datos que no estan en el Knowledge Base. Si no sabes la respuesta, di "Dejame confirmarlo con el equipo" — nunca improvises con datos falsos.
  • × Presionar despues de un "no" claro. Un "no" es un "no". Agradece, deja la puerta abierta, y sigue adelante. La persistencia tiene un limite.
  • × Enviar mas de 2 mensajes sin respuesta. Si no contesta despues de 2 intentos, espera. Un tercer mensaje sin respuesta se siente como acoso, no como persistencia.

SIEMPRE

  • Respetar el "no" del prospecto. Un seller que se fue respetado puede regresar en 3 meses. Uno que se fue presionado no regresa jamas.
  • Escuchar antes de proponer. La mejor respuesta a una objecion empieza con "Entiendo" o "Totalmente valido", no con un contraargumento inmediato.
  • Si no sabes la respuesta: "Dejame confirmarlo con el equipo y te escribo." Honestidad > improvisacion. El seller respeta mas un "no se pero lo averiguo" que una respuesta inventada.
  • Hacer que cada conversacion se sienta personalizada y relevante. Usar el nombre del seller, mencionar su marketplace, referenciar su situacion. Nadie quiere sentirse como un numero mas en un embudo.
  • Usar datos y testimonios reales, no promesas vacias. "Un seller como tu nos dijo X" es 10 veces mas poderoso que "nuestro producto es el mejor del mercado".

3.6 Regla de Oro Final

Al final de cada dia, el SDR debe revisar su Pipeline en HubSpot y verificar que cada negocio activo tenga una proxima actividad programada. Si hay deals sin "Proxima actividad," el SDR debe agendar una llamada, un email, o un mensaje de WhatsApp antes de cerrar la jornada.

0

Deals sin proxima actividad al cerrar el dia

100%

De interacciones terminan con un proximo paso claro

24h

Maximo entre una interaccion y el siguiente touchpoint

Un lead sin proximo paso es un lead que se enfria. Donde lo ubicarias en tu Pipeline si no hay accion agendada? Si la respuesta es "en ninguna parte," entonces no es un lead — es una oportunidad perdida.


Seccion 4

Bot de Nurturing

4.1 Vision General

Agente autonomo de ventas por WhatsApp que maneja la conversacion completa de nurturing: desde el primer contacto hasta el agendamiento de demo, sin intervencion humana. Opera 24/7, responde en segundos, extrae datos de la conversacion, los sincroniza al CRM, y escala a humanos solo cuando es necesario.

El bot no es un chatbot de respuestas predefinidas. Es un agente conversacional con IA que entiende contexto, adapta su tono, recuerda el historial completo de cada contacto, y toma decisiones autonomas sobre como avanzar la conversacion basandose en una maquina de estados de 7 fases.

ComponenteDetalle
StackFlask + Gunicorn + Chatwoot + HubSpot + Twilio + Claude (Sonnet 4 para respuestas, Haiku 4.5 para extraccion/validacion)
Servidor134.199.231.196 (DigitalOcean droplet)
Serviciosellerfy-bot.service (Gunicorn, puerto 5200)
Chatwootsellerfychat.pabesfu.com (Account 1, Inbox 1)
Base de DatosSQLite con WAL mode para acceso concurrente (5 tablas)
Modelo Principalclaude-sonnet-4-20250514 — genera respuestas conversacionales
Modelo Economicoclaude-haiku-4-5-20251001 — extraccion de datos y validacion anti-alucinacion
IdiomasEspanol (primario), Ingles, Portugues — deteccion automatica, prompts localizados
ConcurrenciaSemaforo de 10 threads para procesamiento en background, evita explosion de API calls

4.1.1 Acceso a Chatwoot

Importante: Cambiar la contrasena despues del primer login. Ir a Settings > Profile > Change Password.

Panel de conversaciones en tiempo real. Todos los mensajes de WhatsApp del bot aparecen aqui. Los SDRs deben monitorear la bandeja para intervenir cuando el bot escala una conversacion.

UsuarioEmailPasswordRol
Pablo Estradapablo@sellerfy.aiSellerfy2026!Administrator
Miguel Camargomiguel@sellerfy.aiMiguelSfy2026!Sales Development Manager

URL: sellerfychat.pabesfu.com

Todos los agentes estan asignados al inbox WhatsApp Sellerfy y veran todas las conversaciones entrantes.

4.1.2 Volumen de Outreach y Protecciones

Tenemos ~18,000 leads en HubSpot. El bot NO los contacta todos de golpe. Existen dos modos de outreach con limites estrictos para evitar saturacion.

1. Leads Nuevos (poll-leads)

Solo busca contactos creados en los ultimos 60 minutos. Maximo 20 por batch. Esto significa que solo contacta leads que se registran en tiempo real (formularios, imports manuales). Los 18,000 existentes no se tocan.

2. Backlog (backlog-outreach) — NUEVO

Para los leads existentes, el endpoint /backlog-outreach contacta 20 leads por hora, empezando por los mas antiguos. Con horario 10am-4pm CDMX (6 horas) = maximo 120 leads por dia. A ese ritmo, los 18,000 se contactan en ~150 dias, de forma gradual y sostenible. Cron activo desde Mar 16 2026.

ProteccionDetalle
Solo cold_leadsFiltra por classify_contact(): si el contacto es registered, trial, customer, o churn, se skipea
Dedup por telefono y HubSpot IDSi ya tiene conversacion en la DB del bot, se skipea — nunca se contacta dos veces
Requiere telefonoLeads sin telefono se ignoran automaticamente
Horario 10am-4pm CDMX (backlog)Backlog outreach opera de 10am a 4pm. Fuera de horario retorna outside_hours sin hacer nada. Poll-leads (nuevos) sigue en horario 8am-8pm.
Max 20 por batchHubSpot hard limit de 20 resultados por llamada al Search API
Cursor persistenteArchivo backlog_cursor.json guarda la posicion — no repite leads entre llamadas

Resumen de capacidad diaria: ~20 leads nuevos (poll-leads cada 10 min, depende del volumen de registro) + ~120 leads del backlog (backlog-outreach cada hora, 10am-4pm) = maximo ~140 conversaciones nuevas por dia. El bot maneja la conversacion completa 24/7 sin intervencion humana. Crons activos en produccion desde Mar 16 2026.

3. Follow-ups Automaticos — NUEVO (Mar 16)

El endpoint /follow-ups se ejecuta 3 veces al dia (10am, 2pm, 6pm CDMX). Busca conversaciones stale (48h sin respuesta, con al menos 1 mensaje) y envia templates de follow-up via Twilio. Maximo 2 intentos por lead. Despues de 14 dias inactivo + 2 follow-ups sin respuesta, marca al lead como LOST.

ReglaDetalle
Ventana stale48 horas sin mensaje del lead
Max follow-ups2 intentos (template distinto por intento)
Marca LOST14 dias inactivo + 2 follow-ups = LOST + lifecycle BAD_TIMING en HubSpot
Horario8am-8pm CDMX. Cron a las 10am, 2pm y 6pm.
Cron/opt/infra/crons/sellerfy-follow-ups.sh — activo desde Mar 16 2026

4. Reporte Diario de Engagement — NUEVO (Mar 16)

Endpoint /daily-report genera metricas comparativas hoy vs ayer. Se ejecuta automaticamente a las 9pm CDMX via cron. Metricas clave:

  • Response rate: % de outreach que genera al menos 1 respuesta
  • Engagement rate: % de respondidos con 2+ mensajes (conversacion real)
  • Reached INFORMING: convs que avanzaron del funnel de discovery
  • Booked: demos agendadas
  • Follow-ups enviados: nudges a leads stale
  • Delta vs ayer: comparacion porcentual dia a dia

Log en /var/log/sellerfy-daily-report.log. Cron: /opt/infra/crons/sellerfy-daily-report.sh

5. Sync de Bookings Externos — NUEVO (Mar 17)

Endpoint /sync-external-bookings. Detecta meetings de Sellerfy agendadas fuera del bot (via HubSpot directo, email, LinkedIn) que no tienen deal, y les crea uno automaticamente. Corre cada 30 min en horario laboral.

ReglaDetalle
VentanaMeetings creadas en las ultimas 72 horas
Filtro de tituloSellerfy, Intro, Demo, Onboarding, Conoce, Miguel Angel Camargo
DedupSi el contacto ya tiene deal, se skipea
Deal creadoNombre con fecha, owner = owner del meeting, stage = Demo/BANT, asociado a contacto y meeting
CronCada 30 min, 8am-8pm CDMX. Script: /opt/infra/crons/sellerfy-sync-bookings.sh

6. Deteccion de No-Show — NUEVO (Mar 17)

Endpoint /noshow-followups. Detecta meetings marcadas como NO_SHOW en HubSpot, mueve el deal a etapa No-Show, y envia templates de re-agendamiento (hasta 3 intentos, 24h entre cada uno). Corre 3x/dia.

Ademas, el webhook detecta no-shows en tiempo real cuando un contacto BOOKED escribe al bot y su meeting tiene outcome=NO_SHOW.

4.1.3 Deploy y Operaciones

Arquitectura: Docker container con codigo montado como volumen (-v /opt/sellerfy-bot:/app). Despues de copiar archivos con scp, solo se necesita docker restart — NO rebuild.

Deploy rapido (cambios de codigo)

# 1. Copiar archivos modificados

scp ~/clawd/agents/sellerfy-nurture/*.py root@134.199.231.196:/opt/sellerfy-bot/

# 2. Restart (NO rebuild)

ssh root@134.199.231.196 "docker restart sellerfy-nurture"

# O usar deploy script (backup DB + restart + health check)

ssh root@134.199.231.196 "/opt/sellerfy-bot/deploy.sh"

Rebuild (solo si cambia requirements.txt)

ssh root@134.199.231.196 "/opt/sellerfy-bot/deploy.sh rebuild"

Crons activos en produccion

CronFrecuenciaHorario CDMXQue hace
poll-leads10 min8am-8pmOutreach a leads nuevos (formularios)
backlog-outreach1h10am-4pm20 leads/h del backlog (~120/dia)
follow-ups3x/dia10am, 2pm, 6pmFollow-up a leads stale (48h)
sync-bookings30 min8am-8pmCrea deals para meetings externas sin deal
noshow3x/dia11am, 3pm, 7pmDetecta no-shows, mueve deal, re-agendar
daily-report1x/dia9pmReporte de engagement con deltas
backup-db1x/dia5am UTCBackup conversations.db (14 dias retencion)

Backups de la base de datos

Backup diario automatico + backup pre-deploy (cada vez que se ejecuta deploy.sh). Ubicacion: /opt/sellerfy-bot/backups/. Retencion: 14 dias.

4.2 Pipeline Tecnico Completo

Flujo de datos end-to-end

WhatsApp Twilio Chatwoot POST /hooks/sellerfy app.py Respuesta al usuario

Cada mensaje entrante pasa por un pipeline de 14 pasos en secuencia. El webhook responde 200 OK inmediatamente y procesa el mensaje en un thread de background (controlado por un semaforo de 10 slots) para no bloquear a Chatwoot.

1

Autenticacion del webhook

Verifica que el account.id del evento coincida con CHATWOOT_ACCOUNT_ID. Si no coincide, rechaza con 403.

2

Filtrado de mensajes entrantes

Solo procesa eventos message_created de tipo incoming (no privados). Ignora mensajes salientes, notas internas, y otros eventos de Chatwoot.

3

Deduplicacion persistente (SQLite)

Tabla processed_messages almacena cada message_id. Si ya existe, se ignora. Auto-limpieza despues de 24h. Previene doble-respuesta por webhooks duplicados.

4

Extraccion del telefono del sender

Extrae el numero del campo conversation.meta.sender.phone_number o del contact.identifier. Normaliza a formato E.164 (manejo especial de prefijos mexicanos +52/+521).

5

Busqueda o creacion de contacto en HubSpot

Busca por telefono con multiples variantes de formato (+52, +521, local). Si no existe, crea el contacto como lead nuevo con lifecyclestage=lead. Cache en memoria con TTL de 5 minutos para evitar llamadas repetidas a la API.

6

Estado de conversacion (SQLite)

Busca estado existente por hubspot_contact_id o por telefono (con variantes). Si no existe, crea nuevo estado. Determina fase inicial: DISCOVERY si ya tenemos nombre o es form_lead, GREETING si es contacto nuevo organico. Clasifica perfil del contacto (cold_lead, registered, trial_active, trial_expired, customer_active, churn) usando datos de Stripe como fuente de verdad.

7

Historial de mensajes desde Chatwoot API

Obtiene los ultimos 20 mensajes de la conversacion via GET /api/v1/accounts/{id}/conversations/{id}/messages. Filtra solo mensajes con contenido. Este historial alimenta tanto al modelo principal como al extractor de datos.

8

Construccion del system prompt dinamico

prompt_builder.py construye un prompt unico para cada mensaje combinando: personalidad (SOUL.md), identidad (IDENTITY.md), Knowledge Base completo, contexto del contacto (HubSpot + estado local), instrucciones especificas de la fase actual, link de demo de Miguel Camargo, e idioma detectado (ES/EN/PT).

9

Generacion de respuesta con Claude Sonnet

Llama a claude-sonnet-4 con el system prompt dinamico y el historial completo de la conversacion como mensajes alternados user/assistant. Max 300 tokens de respuesta. Manejo de errores con fallback seguro si la API falla.

10

Extraccion de datos con Claude Haiku

extractor.py envia toda la conversacion a Haiku con un prompt estructurado que pide JSON con 17+ campos. Solo extrae datos explicitos (nunca inventa). Parsea la respuesta JSON, descarta nulls, y retorna un diccionario limpio.

11

Validacion anti-alucinacion con Claude Haiku

validator.py envia la respuesta generada + el KB completo a Haiku. Verifica que no contenga precios inventados, features inexistentes, o promesas fuera del KB. Si falla: genera respuesta segura de fallback ("Dejame confirmarlo con el equipo").

12

Avance de fase conversacional

advance_phase() evalua el estado actual + datos extraidos para determinar si debe avanzar. Reglas especificas por fase (ver seccion 4.4). Si detecta link de demo en la respuesta, marca booking_link_sent=true. Si detecta escalamiento, registra en tabla de escalaciones.

13

Sincronizacion a HubSpot (asincrona con cola de reintentos)

Los datos extraidos se mapean a propiedades de HubSpot (marketplace → enum, segment → tipo_seller, etc.) y se guardan en la tabla pending_syncs. Un proceso de background drena la cola: actualiza el contacto, avanza el lifecycle stage, actualiza lead status, y si la demo se confirma, crea un deal asociado. Maximo 5 reintentos por sync fallido.

14

Envio de respuesta via Chatwoot API

Envia la respuesta validada como mensaje outgoing via la API de Chatwoot. Chatwoot lo rutea a Twilio, que lo entrega por WhatsApp al usuario. Incrementa contador de mensajes y actualiza last_message_at.

4.3 Modulos del Sistema

El bot esta compuesto por 12 modulos Python con responsabilidades claramente separadas. Cada modulo es un archivo independiente que se importa en app.py. No hay framework complejo — es Flask puro con modulos funcionales.

ArchivoFuncionDescripcion
app.py Pipeline principal Webhook handler /hooks/sellerfy, procesamiento de mensajes en background threads, endpoints cron (/cron/outreach, /cron/follow-up, /cron/stats, /cron/noshow, /cron/reminders), health check, admin API para stats y gestionar conversaciones. Incluye logica de deteccion de link de demo, manejo de BOOKED via HubSpot meetings, y sync de datos al CRM.
config.py Configuracion Variables de entorno, paths (KB_DIR, DB_PATH), nombres de modelos (MODEL_MAIN=sonnet, MODEL_CHEAP=haiku), IDs de Chatwoot, tokens de Twilio, link de meetings, template SIDs (welcome, followup, reminder, noshow), rep de demo (Miguel Camargo con su link de HubSpot Meetings), y logging estructurado JSON.
chatwoot.py API Chatwoot Enviar y recibir mensajes, obtener historial de conversacion, buscar/crear contactos por telefono, crear conversaciones outbound, verificar si el bot debe responder (is_bot_handling), asignar conversacion a agente humano (handoff), filtrar eventos incoming. Usa tokens bot y admin separados.
hubspot.py API HubSpot Buscar contactos por telefono (multiples variantes E.164), crear contactos, actualizar properties, clasificar perfil (6 niveles: cold_lead → churn, con Stripe como fuente de verdad), gestionar deals (crear al BOOKED, mover a No-Show), detectar meetings agendados, crear notas, crear tickets con prioridad inteligente, mapear datos extraidos a propiedades HubSpot (marketplace → enum, segment → tipo_seller, experience → rango). Cache en memoria con TTL 5min.
conversation.py State Machine SQLite 7 fases conversacionales, CRUD de estados, avance automatico de fases con reglas de transicion, deduplicacion de mensajes, cola de sincronizacion HubSpot con reintentos, escalaciones, snapshots de estadisticas, deteccion de conversaciones stale (48h), candidatos a LOST (14 dias + 2 follow-ups), candidatos a no-show, recordatorios pendientes. WAL mode para concurrencia. Migraciones automaticas de columnas.
kb.py Knowledge Base Carga 5 archivos JSON + 8 archivos Markdown (13 total), cache con deteccion de mtime para hot-reload sin restart. Renderiza todo el KB como texto plano optimizado para el system prompt: empresa, planes con precios, 12 features core, testimoniales, battlecards por fase, comparaciones vs competencia, y 25+ FAQs con triggers.
prompt_builder.py System Prompt Construye prompt dinamico combinando: SOUL.md (personalidad), IDENTITY.md (identidad), KB completo, contexto del contacto (HubSpot properties + estado local), instrucciones de fase, info de meeting/demo, y link de agenda. Templates en 3 idiomas (ES/EN/PT). Sanitiza inputs para prevenir prompt injection (truncado + limpieza de newlines). Incluye contexto de adquisicion (Google Ads, formulario, canal de origen).
extractor.py Extraccion de Datos Usa Claude Haiku para extraer datos estructurados de la conversacion: nombre, apellido, empresa, marketplace, SKUs, facturacion, dolor principal, herramientas, email, segmento, pais, URLs de tiendas, experiencia, rango de revenue, idioma, interes en demo, confirmacion de demo. Responde unicamente JSON valido. Solo datos explicitos, nunca inventa.
validator.py Anti-Alucinacion Haiku verifica cada respuesta contra el KB completo. Evalua: precios correctos, features existentes, resultados prometidos validos, sin nombres inventados, sin contradicciones. Permite saludos, social proof, escenarios hipoteticos. Responde "OK" o "FAIL: razon". Si falla, genera fallback seguro aleatorio ("Dejame confirmarlo con el equipo").
outreach.py Outreach Proactivo Busca nuevos leads con telefono en HubSpot cada 10 min (ventana de 60 min, dedup por hubspot_id y telefono). Solo contacta cold_leads (skip registered/trial/customer/churn). Envia template de bienvenida via Twilio, crea conversacion en Chatwoot, registra estado en DISCOVERY. Respeta horario 8am-8pm CDMX.
twilio_templates.py Templates WhatsApp Envio de mensajes template aprobados por Meta via Twilio Content API. 4 tipos: welcome (seleccion aleatoria entre multiples SIDs), followup (template por intento), reminder (con nombre y hora), noshow (para re-agendar). Variables dinamicas por template. Validacion de telefono antes de enviar.
ai_client.py Cliente Anthropic Singleton compartido del cliente de la API de Anthropic. Se inicializa una sola vez con ANTHROPIC_API_KEY y es importado por todos los modulos que necesitan llamar a Claude (app.py, extractor.py, validator.py).

4.4 Las 7 Fases Conversacionales

La maquina de estados define el ciclo de vida completo de cada conversacion. Cada fase tiene instrucciones especificas para el modelo, reglas de transicion automatica, y restricciones sobre que puede o no hacer el bot (como compartir el link de demo).

Flujo principal

GREETING DISCOVERY INFORMING PROPOSING BOOKED
Ramas: ESCALATED (pregunta sin respuesta) LOST (14d inactivo)
FaseObjetivoLink de demoTransicion
GREETING Bienvenida con energia profesional. Usar nombre si lo tenemos. Una pregunta abierta: "En que marketplace vendes?" No soltar info de producto aun. NO → DISCOVERY automaticamente al siguiente mensaje
DISCOVERY Valor primero, preguntas despues. Abrir con dato interesante o insight, max 1 pregunta por mensaje. Recopilar datos gradualmente: marketplace, dolor, SKUs, facturacion, herramientas. Form leads reciben trato diferenciado (reconocer registro, avanzar mas rapido). NO → INFORMING cuando tiene marketplace + dolor, o marketplace + 3 msgs, o wants_demo, o 4+ msgs con cualquier dato
INFORMING Crear deseo: Net Profit Real, Sofi IA, social proof, demo showroom (Monitor, Product Health, Playlists). Adaptar al microsegmento del seller. Recomendar plan si preguntan. SI, con interes claro → PROPOSING cuando booking_link_sent=true
PROPOSING Link ya compartido. Resolver dudas finales. Recordar UNA vez si no agendaron. Manejar objeciones de precio/seguridad/Excel. No insistir mas de una vez. Ya enviado → BOOKED cuando demo_confirmed=true o se detecta meeting en HubSpot
BOOKED Felicitar. Tips de preparacion (tener credenciales del marketplace). Confirmar detalles. Despues de la demo: seguimiento post-demo, guiar hacia contratacion, manejar objeciones finales. N/A Terminal (exito). Post-demo: seguimiento automatico.
ESCALATED Pregunta sin respuesta en KB. Ya se informo que se confirmara con el equipo. Seguir respondiendo lo que si esta en el KB. Buscar reconectar con la demo. Depende → INFORMING si obtiene marketplace + dolor, → DISCOVERY si obtiene datos parciales
LOST 14 dias inactivo + 2 follow-ups sin respuesta. Si vuelve a escribir: recibir con energia, no mencionar la desaparicion, reengancharse. N/A → DISCOVERY si el lead regresa con nuevo mensaje (nueva oportunidad)

Reglas de transicion detalladas

GREETING → DISCOVERY: Automatica. Siempre avanza despues de la bienvenida inicial.

DISCOVERY → INFORMING: Multiples caminos de avance (actualizado Mar 16): (1) marketplace + main_pain, (2) marketplace + 3 mensajes, (3) wants_demo=true, o (4) 4+ mensajes con cualquier dato (marketplace, dolor, o empresa). Esto evita que leads se queden atrapados en DISCOVERY cuando el bot no logra extraer el pain point exacto.

INFORMING → PROPOSING: Se activa cuando el bot comparte un link de demo. El pipeline detecta URLs de meetings en la respuesta generada y marca booking_link_sent=true automaticamente.

PROPOSING → BOOKED: Dos caminos: (1) el extractor detecta demo_confirmed=true en la conversacion, o (2) el pipeline detecta un meeting agendado en HubSpot via API de associations. Cuando se confirma: crea deal, avanza lifecycle a opportunity, asigna owner.

LOST → DISCOVERY: Si un lead marcado como LOST envia un nuevo mensaje, automaticamente reinicia en DISCOVERY. El bot no menciona la inactividad previa.

ESCALATED → DISCOVERY/INFORMING: La de-escalacion es natural. Si en la conversacion post-escalamiento se obtienen datos suficientes, avanza. Si tiene marketplace + dolor → INFORMING. Si tiene datos parciales → DISCOVERY.

Optimizacion DISCOVERY (Mar 16 2026)

Basado en data del primer dia de operacion (125 outreach, 13 respuestas, solo 3 con 2+ mensajes), se aplicaron 4 ajustes:

  • Valor primero: El bot abre con un dato interesante ANTES de hacer preguntas. Max 1 pregunta por mensaje.
  • Threshold mas bajo: DISCOVERY→INFORMING ya no requiere marketplace+dolor. Avanza con marketplace+3msgs, wants_demo, o 4+ msgs con cualquier dato.
  • Form leads diferenciados: El prompt reconoce que llenaron formulario y es mas directo/rapido para proponer demo.
  • Follow-ups activados: Cron 3x/dia contacta leads que respondieron 1 vez y desaparecieron.

Metricas target: engagement rate (2+ msgs) de 23% → >40%, conversaciones en INFORMING de 0 → 3-5/dia.

4.5 Datos que Extrae el Bot

El modulo extractor.py usa Claude Haiku para extraer datos estructurados de cada conversacion. Solo extrae datos explicitos mencionados por el seller — nunca infiere ni inventa. Cada campo se sincroniza automaticamente a HubSpot via la cola de pending_syncs.

CampoTipoHubSpot PropertyDescripcion
contact_namestrfirstnameNombre del contacto
contact_lastnamestrlastnameApellido del contacto
emailstremailEmail del seller
company_namestrcompanyNombre de la empresa o marca
marketplaceenummarketplace"amazon", "mercadolibre", o "ambos". Se mapea a enum HubSpot: Amazon, Mercado Libre, Ambos
sku_countintnumero_de_skusNumero aproximado de productos/SKUs
monthly_revenuestrannualrevenueFacturacion mensual como texto ("10K-50K USD", "$20,000")
main_painstrmotivo_de_interesDolor principal ("no se cuanto gano", "mucho tiempo en Excel")
current_toolsstrherramientas_actualesHerramientas que ya usa ("Helium 10", "Excel", "ninguna")
segmentenumtipo_sellerTipo de seller: Seller, Marca Propia, Agencia, Arbitraje, Dropshipping
countrystrcountryPais del seller
url_amazonstrurl_amazonURL de la tienda en Amazon
url_mercado_librestrurl_mercado_libreURL de la tienda en MercadoLibre
experiencestrexperiencia_sellerTiempo vendiendo en marketplaces. Se mapea a enum: <1 ano, 1-5 anos, >5 anos
revenue_rangestrrango_facturacionRango de facturacion mensual. Se mapea a enum: <5k, 5k-50k, >50k
wants_demoboolTrue si el seller expresa interes en ver/probar la plataforma
demo_confirmedboolTrue solo si claramente confirman que agendaron/quieren la demo
languageenum"es", "en", o "pt". Determina el template de prompt a usar

Ademas, el estado local trackea: contact_profile (cold_lead/registered/trial_active/trial_expired/customer_active/churn), booking_link_sent, messages_count, follow_up_count, follow_up_at, reminder_sent, meeting_time, noshow_count, noshow_at, last_message_at, origin.

4.6 Personalidad e Identidad del Bot

La personalidad se define en SOUL.md y IDENTITY.md (montados como volumenes Docker desde /opt/sellerfy-bot/). Esto permite iterar sin tocar codigo ni reiniciar el container.

Filosofia central: PRIMERO EL VALOR

Cada mensaje debe dejar al seller con algo util: un dato, una perspectiva nueva, una pregunta que lo haga pensar. Si solo estamos pidiendo informacion o empujando hacia una demo, estamos fallando. El bot NO es un vendedor de software — es alguien que ayuda al seller a entender mejor su negocio.

AspectoDetalle
Se presenta como"Equipo de Sellerfy" — nunca un nombre falso, nunca "Autonomous"
PersonalidadCurioso, genuino, directo pero nunca brusco. Humor sutil (sin chistes, pero comentarios ligeros que rompen el hielo). Humilde con lo que sabe, honesto con lo que no.
TonoSe adapta al seller: formal si es formal, relajado si es informal, tecnico si habla con datos, paciente si es nuevo. Siempre respeta "usted" si el contacto lo usa.
Escucha de verdadResponde a lo que el seller dijo, no con un pitch generico. Si alguien suena estresado, reconoce eso primero. Si esta esceptico, lo valida. Conecta con la persona antes que con el prospect.
Da valor antes de pedirPor cada pregunta, da algo: un insight de eCommerce, un dato relevante, un comentario que demuestre expertise. Ejemplos: "El 73% de sellers no conocen su ganancia neta real", "Los costos ocultos en Amazon se comen hasta el 35% del revenue".
EmojisMaximo 1-2 por mensaje, solo cuando suman. Usa: grafico, foco, apretones de manos, risa. NUNCA: cohete, fuego, musculo, destellos (suenan a marketing).
Formato2-4 lineas maximo. Cero markdown. Escribe como persona real por WhatsApp: frases cortas, naturales, como texteando a un colega.

FRASES PROHIBIDAS (nunca dice)

• "Excelente!" / "Perfecto!" / "Buena pregunta!" / "Me encantaria ayudarte!" / "Claro que si!" / "Sin duda!"

• "Con gusto te comparto..." / "Te cuento que Sellerfy..." / "Tienes alguna otra duda?"

• "Oferta limitada" / "Solo por hoy" / "Somos los mejores"

• Repetir lo que el seller dijo parafraseado / Listas de features no pedidas

• Signos de exclamacion excesivos (maximo 1 por mensaje)

FRASES NATURALES (asi suena)

• "Uf, eso pasa mas de lo que crees..."

• "Te entiendo perfecto. Mira, lo que pasa es..."

• "A ver, dejame entender bien..."

• "Fijate que justo..." / "Mira, te soy honesto..."

• "Te voy a dar un dato que a lo mejor te sorprende..."

• "Excel y el eCommerce son como una relacion toxica — sabes que te hace dano pero no puedes dejarlo"

Bot disclosure (si preguntan si es IA)

"Soy parte del equipo digital de Sellerfy. Detras hay un equipo de personas reales que conocen el mundo del eCommerce. Si quieres hablar con alguien directamente, te conecto con gusto."

4.7 Flujos de Entrada

Flujo 1: PROACTIVO (lead de formulario)

1Seller completa formulario en sellerfy.ai
2Aparece en HubSpot como nuevo lead con telefono
3Cada 10 min, outreach.py busca nuevos contactos en HubSpot (ventana 60 min)
4Verifica que es cold_lead (skip si registered/trial/customer/churn)
5Envia template de bienvenida via Twilio (seleccion aleatoria entre templates)
6Busca/crea contacto en Chatwoot, crea conversacion outbound
7Registra estado en SQLite, arranca en fase DISCOVERY (ya se saludo)
8Solo envia en horario 8am-8pm hora local (CDMX timezone)

Flujo 2: ORGANICO (nos escriben)

1Seller escribe al WhatsApp de Sellerfy
2Chatwoot recibe el mensaje, envia webhook a /hooks/sellerfy
3Bot extrae telefono y busca en HubSpot (multiples variantes de formato)
4Si existe: usa datos de HubSpot para personalizar (nombre, empresa, marketplace, origen)
5Si no existe: crea contacto como lead nuevo en HubSpot
6Clasifica perfil (cold_lead, registered, etc.) para adaptar conversacion
7Si tiene nombre en HubSpot: arranca en DISCOVERY. Si no: arranca en GREETING
8Responde automaticamente siguiendo el pipeline de 14 pasos

4.8 Niveles de Autonomia

Definidos en AUTONOMY.md, los 3 niveles regulan que tan libre es el bot para actuar sin supervision humana. El objetivo: maximizar autonomia en acciones seguras, requerir aprobacion en acciones de alto riesgo.

Nivel 1: EJECUTA SIN PREGUNTAR (LOW risk)

  • • Responder mensajes entrantes de cualquier contacto
  • • Buscar y crear contactos en HubSpot automaticamente
  • • Actualizar datos del contacto con informacion extraida de la conversacion
  • • Avanzar fases conversacionales segun las reglas de transicion
  • • Compartir link de demo cuando hay interes claro del seller
  • • Escalar preguntas que no estan en el Knowledge Base
  • • Crear deal en HubSpot al confirmar demo
  • • Actualizar lifecycle stage y lead status

Nivel 2: EJECUTA + NOTIFICA (MEDIUM risk)

  • • Follow-up a lead que no respondio (maximo 2 intentos, espaciados 48h)
  • • Cambiar estado de un lead a LOST despues de 2 semanas sin respuesta + 2 follow-ups
  • • Escalar pregunta tecnica o financiera al equipo (registra en tabla escalations)
  • • Enviar recordatorio de meeting a contactos BOOKED
  • • Detectar y registrar no-shows

Nivel 3: PIDE APROBACION (HIGH risk)

  • • Primer mensaje proactivo a lead de formulario (template via Twilio)
  • • Compartir descuentos o condiciones especiales no definidas en el KB
  • • Cualquier promesa o compromiso en nombre de la empresa
  • • Mensajes fuera de horario (8am-8pm hora local)
  • • Mas de 2 follow-ups a un lead que no responde

4.9 Base de Datos SQLite

Base de datos local en conversations.db con WAL mode (Write-Ahead Logging) para soportar lecturas y escrituras concurrentes desde multiples threads del webhook. Timeout de conexion de 15 segundos. 5 tablas con migraciones automaticas para nuevas columnas.

conversations (tabla principal)

Estado completo de cada conversacion. Una fila por contacto.

ColumnaTipoDescripcion
conversation_idINTEGER PKID de conversacion Chatwoot
hubspot_contact_idTEXTID del contacto en HubSpot
phoneTEXTTelefono normalizado E.164
phaseTEXTFase actual (GREETING, DISCOVERY, etc.)
originTEXT"organic" o "form_lead"
contact_name, contact_lastname, company_name, marketplace, sku_count, monthly_revenue, main_pain, current_tools, email, segment, country, url_amazon, url_mercado_libre, experience, revenue_rangeMIXEDTodos los campos extraidos de la conversacion
wants_demo, demo_confirmed, booking_link_sent, reminder_sentINTEGERFlags booleanos del funnel de demo
contact_profileTEXTClasificacion: cold_lead, registered, trial_active, etc.
languageTEXTIdioma detectado (es/en/pt)
follow_up_count, follow_up_atINT/TEXTTracking de follow-ups enviados
noshow_count, noshow_atINT/TEXTTracking de no-shows a demos
meeting_timeTEXTHora de la demo agendada (ISO)
messages_countINTEGERTotal de mensajes en la conversacion
last_message_at, created_atTEXTTimestamps ISO 8601

Indices: idx_conversations_phone, idx_conversations_hubspot_id

escalations

Preguntas que el bot no pudo responder desde el KB. Un humano las resuelve manualmente o agrega la respuesta al KB.

Columnas: id (PK), conversation_id (FK), question, resolved (0/1), created_at

pending_syncs

Cola de sincronizacion a HubSpot con reintentos. Cada vez que se extraen datos de una conversacion, se encolan como JSON. Un proceso de background drena la cola: actualiza el contacto y borra el sync. Maximo 5 intentos por registro.

Columnas: id (PK), hubspot_contact_id, properties (JSON), attempts, created_at, last_attempt_at

processed_messages

Deduplicacion de mensajes para evitar doble respuesta por webhooks duplicados de Chatwoot. Auto-limpieza despues de 24 horas.

Columnas: message_id (PK), processed_at

stats_snapshots

Snapshots diarios de estadisticas para tracking historico. Se genera uno por dia (dedup por fecha). Permite ver tendencias de conversion, crecimiento de conversaciones, y distribucion por fase/origen.

Columnas: id (PK), snapshot_date, total_conversations, booked, by_phase (JSON), by_origin (JSON), avg_messages, conversion_rate

4.10 Validacion Anti-Alucinacion

Cada respuesta generada por Claude Sonnet pasa por un segundo modelo (Haiku) que la verifica contra el Knowledge Base completo. Este es un patron critico de seguridad: el bot nunca promete algo que Sellerfy no ofrece.

Flujo de validacion

1. validator.py recibe la respuesta generada por Sonnet

2. Carga el KB completo via render_kb_for_prompt()

3. Envia ambos (respuesta + KB) a Claude Haiku con un prompt de validacion

4. Haiku analiza y responde: OK o FAIL: [razon]

5. Si OK: la respuesta se envia al usuario

6. Si FAIL: se genera un fallback seguro aleatorio

SIEMPRE es OK (no marcar)

  • • Saludos, frases de cortesia, preguntas al seller
  • • Frases genericas sobre eCommerce
  • • "Dejame confirmarlo con el equipo"
  • • Links de demos/meetings
  • • Planes y precios que estan en el KB
  • • Resultados prometidos (+60% eficiencia, +40% ventas)
  • • Escenarios hipoteticos de mejora
  • • Testimoniales (no necesitan ser verbatim)
  • • Features del KB (Sofi, Net Profit Real, etc.)

PROBLEMATICO (marcar FAIL)

  • • Precios que no coinciden con ningun plan
  • • Features o integraciones inventadas
  • • Resultados numericos diferentes al KB
  • • Nombres de personas o empresas inventados
  • • Contradicciones con el KB
  • • Descuentos, features custom, o promesas no en KB

Respuestas de fallback seguras

"Buena pregunta! Dejame confirmarlo con el equipo para darte la informacion mas precisa. Hay algo mas en lo que te pueda ayudar mientras tanto?"

"Excelente pregunta. Deja consulto con el equipo para darte la respuesta correcta. Te gustaria saber algo mas sobre la plataforma?"

4.11 Follow-ups y Re-engagement

El sistema automatizado de follow-ups opera via endpoints cron que se ejecutan periodicamente. El objetivo: no perder leads por inactividad, pero tampoco ser invasivo.

EscenarioTriggerAccionLimite
Conversacion stale 48h sin respuesta del contacto Envio de template follow-up via Twilio (distinto template por intento) Maximo 2 follow-ups, espaciados 48h
Lead perdido 14 dias inactivo + 2 follow-ups enviados Marca fase como LOST Automatico, sin mas mensajes
Lead retorna Lead LOST envia nuevo mensaje Restart en DISCOVERY. "Que gusto saber de ti." Sin mencionar inactividad Sin limite — nueva oportunidad
BOOKED sin reminder Demo agendada y reminder_sent=false Envia template recordatorio via Twilio con nombre y hora 1 recordatorio por meeting
No-show Meeting marcado NO_SHOW en HubSpot Detecta via API, envia template noshow para re-agendar, mueve deal a etapa No-Show Maximo 3 intentos de re-agendar (noshow_count)

Endpoints cron (ver seccion 4.13 para catalogo completo)

Ejecutados via cron jobs en el droplet. Todos son POST y operan en horario 8am-8pm CDMX:

  • POST /poll-leads — Busca nuevos form leads en HubSpot (cada 60 min)
  • POST /follow-ups — Envia follow-ups y marca LOST (diario)
  • POST /save-stats — Guarda snapshot diario de estadisticas
  • POST /noshow-followups — Detecta no-shows, max 3 intentos de re-agendamiento
  • POST /meeting-reminders — Envia recordatorios 2h antes de demo
  • POST /check-bookings — Detecta demos agendadas en HubSpot
  • POST /check-replies — Re-procesa mensajes no contestados (cada 30 min)
  • POST /ces-survey — Encuesta CES post-escalacion (diario)

Estado actual: Estos cron jobs estan activos en el droplet desde Mar 16, 2026. Los scripts de cron corren desde /opt/infra/crons/sellerfy-*.sh. Adicionalmente, stripe_sync.py corre automaticamente (diario 7am UTC).

4.12 Escalamiento

El bot tiene limites claros sobre lo que puede responder. Cuando un seller hace una pregunta fuera del Knowledge Base, el bot no inventa — escala.

1

Deteccion

El validador anti-alucinacion detecta que la respuesta generada contiene informacion no verificable contra el KB, o el propio modelo genera una respuesta de escalamiento.

2

Respuesta al seller

"Dejame confirmarlo con el equipo y te escribo" — respuesta honesta y profesional.

3

Registro en SQLite

Se guarda en la tabla escalations con la pregunta original y el ID de conversacion. Se marca como no resuelta (resolved=0).

4

Cambio de fase

La conversacion pasa a fase ESCALATED. El bot sigue respondiendo preguntas que si estan en el KB, pero deja la pregunta sin respuesta pendiente.

5

Resolucion humana

Dos caminos: (a) un humano responde manualmente en Chatwoot, o (b) se agrega la respuesta al KB para que el bot la maneje en futuras conversaciones. El admin puede ver escalaciones pendientes via GET /api/escalations.

6

De-escalacion natural

Si la conversacion obtiene datos suficientes (marketplace + dolor), avanza automaticamente a INFORMING o DISCOVERY sin necesidad de intervencion humana.

4.13 Limites Eticos

Definidos en SOUL.md y aplicados tanto en el system prompt como en las reglas de autonomia. Estos limites son inquebrantables.

NUNCA

  • Manipular emocionalmente ni crear urgencia falsa ("ultima oportunidad", "solo por hoy")
  • Hablar mal de competidores directamente ("Jungle Scout no sirve")
  • Inventar datos que no estan en el Knowledge Base
  • Mas de 2 mensajes sin respuesta del contacto (maximo 2 follow-ups espaciados 48h)
  • Contactar fuera de horario 8am-8pm hora local del contacto
  • Prometer descuentos o condiciones no definidas en el KB

SIEMPRE

  • Respetar el "no" — si no quieren, dejar la puerta abierta sin insistir
  • Escuchar antes de proponer — regla de oro: "Entiende antes de vender"
  • Confirmar con el equipo si no sabe algo — nunca inventar
  • Personalizar cada conversacion con los datos del seller
  • Ser transparente si preguntan si es IA/bot
  • Respetar el registro del contacto (usted vs tu)

4.14 Knowledge Base (13 archivos: 5 JSON + 8 Markdown)

El KB es la unica fuente de verdad para datos factuales del bot. Se compone de 5 archivos JSON (datos estructurados) y 8 archivos Markdown (documentacion detallada) en el directorio kb/. El modulo kb.py los cachea con deteccion de mtime — si se modifica un archivo, se recarga automaticamente sin reiniciar el servicio (hot-reload).

ArchivoContenidoDatos clave
company.json Datos de la empresa Nombre, slogan, descripcion, contacto (web/email/WhatsApp), formato de demo (30 min gratis, showroom: Monitor, Product Health, Playlists), mercados (10 paises LATAM + Espana + EEUU), resultados prometidos (+60% eficiencia, +40% ventas), integraciones (Amazon SP-API, MercadoLibre API), pagos (Stripe), garantia (7 dias), cambios de plan, app movil (PWA), limites WhatsApp (1,000 templates/mes)
plans.json 3 planes detallados Lite: $99/$89/$79 (mes/tri/anual), 100 prod/mktpl, 1 user, sync 4d, Net Profit basico. Growth (mas popular): $149/$129/$109, 300 prod/mktpl, publicidad ACOS/ROAS, finanzas, landed cost, 5 recs Sofi/mes, chat prioritario + 1 llamada mensual. Scale: $249/$219/$189, 1000 prod/mktpl, 3 users, sync real-time, Sofi ilimitada, Playlists, diagnostico WhatsApp, account manager, API access. Trial: 7 dias con garantia de devolucion. Ahorro: trimestral ~10%, anual ~20%.
technology.json 12 features core Sofi IA (asistente propietaria), Net Profit Real, Monitor (torre de control), Product Health (semaforo), Monitor de Publicidad (ACOS/ROAS), Monitor de Finanzas, Playlists (modulos de accion), Dual-Marketplace, Estimacion de Impacto, Control de Costos (Landed Cost), Toolkit de Optimizacion, Diagnostico por WhatsApp. Sync: Lite/Growth cada 4d, Scale real-time. Seguridad: APIs oficiales, solo lectura, cifrado bancario, SOC2 en proceso. Comparaciones vs Helium 10, Jungle Scout, Keepa. Troubleshooting checklist.
brand.json Posicionamiento y estrategia UVP, target (Ambitious Marketplace Sellers, $5K-$500K/mes), 5 microsegmentos (manual/Excel, scaling, data-blind, multi-marketplace, agencia), diferenciadores vs competencia, battlecards por fase (prospecting, demo, support), cultura SDR, protocolo de soporte (Level 0 Sofi, Level 1 humano), SLAs (urgente 10min, alta 30min, media 2h, baja 4h), 4 testimoniales de sellers, vision.
faqs.json 28 preguntas frecuentes Cada FAQ tiene triggers (palabras clave que activan la respuesta), answer (respuesta pre-crafted), y opcionalmente escalate o special flags. Temas: bot disclosure, que es Sellerfy, precios, trial, marketplaces, seguridad, Sofi IA, Net Profit, Playlists, competencia, demo, integracion, soporte, pagos, humano/handoff, Shopify/WooCommerce, resultados, equipo, cancelacion, cambio plan, reembolso, troubleshooting, app movil, publicidad, landed cost, usuarios, sync, API, caro, Excel, account manager, token expirado, vacaciones, datos diferentes, ahorro.

Archivos Markdown (8 documentos de referencia)

ArchivoContenido
claude_leadgen_v1.md Documentacion del pipeline de lead generation
faq_inicio_rapido_v1.md FAQ de inicio rapido para nuevos sellers
faq_ventas_y_negocio_v1.md FAQ sobre ventas y modelo de negocio
planes_y_precios_v1.md Detalle de planes, precios y comparativas
proceso_comercial_v1.md Proceso comercial end-to-end
seguridad_y_comparativa_v1.md Seguridad, compliance y comparativa vs competencia
sla_equipos_v1.md SLAs y estructura de equipos de soporte
soporte_tecnico_v1.md Documentacion de soporte tecnico

4.15 Deploy y Operaciones

El bot corre como Docker container (sellerfy-nurture) con codigo montado como volumen. Deploy manual via scp + docker restart. Para instrucciones detalladas de deploy (rapido y rebuild), ver seccion 4.1.3.

Referencia rapida de operaciones

OperacionComando
Health checkcurl http://127.0.0.1:5200/health
Status del containerdocker ps -f name=sellerfy-nurture
Logs en vivodocker logs sellerfy-nurture -f --tail 100
Reiniciar containerdocker restart sellerfy-nurture
Stats del botcurl http://127.0.0.1:5200/api/stats -H "Authorization: Bearer $ADMIN_TOKEN"
Escalaciones pendientescurl http://127.0.0.1:5200/api/escalations -H "Authorization: Bearer $ADMIN_TOKEN"

Logging estructurado

Todos los logs son JSON estructurado (via JSONFormatter en config.py) con campos: timestamp, level, module, message, y opcionalmente conversation_id, phase, action, duration_ms. Facilita parsing y debugging en produccion.

4.16 Acceso al Bot: Chatwoot

El bot opera sobre Chatwoot, una plataforma open-source de mensajeria. Todas las conversaciones de WhatsApp pasan por aqui. Es donde el equipo comercial ve las conversaciones, hace handoff, y responde manualmente cuando el bot escala.

Como acceder

URL: sellerfychat.pabesfu.com

Primer login: Cada usuario recibe un email de invitacion en su correo corporativo (@sellerfy.ai). Hacer clic en el link y configurar contrasena.

Inbox: Todas las conversaciones de WhatsApp llegan a la bandeja Inbox 1 (WhatsApp). Los agentes asignados a esta bandeja ven las conversaciones automaticamente.

Usuarios y roles

ID Nombre Email Rol Funcion
1 Pablo Estrada pablo@sellerfy.ai admin CEO. Supervision general, configuracion del bot.
2 Sellerfy Bot Admin admin@sellerfy.ai admin Cuenta del bot. Envia mensajes automaticos via API.
3 Miguel Camargo miguel@sellerfy.ai agent Sales Development Manager. Recibe conversaciones en handoff, ejecuta demos.

Handoff: como funciona

1. Cuando un contacto llega a fase BOOKED o el bot detecta que necesita un humano, la conversacion se asigna a SALES_AGENT_ID (configurable en el .env del droplet).

2. El SDR asignado ve la conversacion en su bandeja de Chatwoot con el historial completo.

3. El bot asigna el link de demo de Miguel Camargo con su calendario de HubSpot.

4. En HubSpot, el deal se crea con el hubspot_owner_id de Miguel = 86642356.

Importante: Para que Miguel vea las conversaciones, debe estar asignado a la bandeja WhatsApp (Inbox 1) en Chatwoot. Esto se configura en Settings → Inboxes → Collaborators.

4.17 Catalogo Completo de Endpoints

El bot expone 13 endpoints HTTP en el puerto 5200 del droplet (134.199.231.196). Algunos son webhooks (disparan con eventos), otros son cron jobs (se ejecutan periodicamente), y otros son de administracion.

Webhook (evento externo)

Endpoint Metodo Que hace
/hooks/sellerfy POST Webhook principal. Recibe cada mensaje de WhatsApp via Chatwoot. Procesa en background (semaforo de 10 slots) y responde 200 OK inmediatamente.

Cron Jobs (ejecucion periodica)

Endpoint Frecuencia Horario Que hace Estado
POST /poll-leads Cada 60 min 8am-8pm CDMX Busca form leads nuevos en HubSpot (ultimos 60 min), envia welcome template por WhatsApp, crea conversacion en Chatwoot Pendiente
POST /backlog-outreach Cada 60 min 8am-8pm CDMX Contacta 20 leads existentes del backlog de 18K por hora (los mas antiguos primero). Solo cold_leads con telefono. Dedup contra DB. ~160 leads/dia. Cursor persistente para no repetir. Pendiente
POST /follow-ups Diario 8am-8pm CDMX Envia follow-up templates a conversaciones inactivas 48h+. Marca LOST despues de 14 dias + 2 follow-ups sin respuesta Pendiente
POST /check-replies Cada 30 min 24/7 Re-procesa mensajes no contestados en Chatwoot (conversaciones open/pending con mensajes recientes) Pendiente
POST /check-bookings Cada 60 min 8am-8pm CDMX Detecta meetings agendados en HubSpot para contactos PROPOSING/INFORMING. Avanza a BOOKED, crea deal, envia confirmacion Pendiente
POST /meeting-reminders Cada 60 min 7am-8pm CDMX Envia recordatorio WhatsApp ~2h antes de cada demo. Template con nombre + hora. 1 recordatorio por meeting (controla duplicados) Pendiente
POST /noshow-followups Diario 8am-8pm CDMX Detecta demos no atendidas. Mueve deal a stage No-Show, envia template de re-agendamiento. Max 3 intentos, 24h entre cada uno Pendiente
POST /ces-survey Diario 9am-7pm CDMX Envia encuesta de Customer Effort Score despues de que un ticket escalado se cierra en HubSpot Pendiente
POST /save-stats Diario 00:00 24/7 Guarda snapshot diario de estadisticas del bot en SQLite (total conversaciones, por fase, conversion rate) Pendiente

Administracion (manual)

Endpoint Metodo Auth Que hace
/health GET Publico Health check + limpieza automatica de mensajes procesados >24h
/stats GET ADMIN_TOKEN Estadisticas del funnel: total conversaciones, por fase, por origen, conversion rate
/escalations GET ADMIN_TOKEN Lista de preguntas escaladas pendientes de resolucion
/retry-syncs POST Publico Reintenta sincronizaciones fallidas a HubSpot (max 5 intentos por registro)
/test-flow POST Publico Test end-to-end del pipeline completo (solo para desarrollo)

Estado actual de automatizaciones

El unico proceso automatizado corriendo en el droplet es stripe_sync.py (diario 7am UTC via cron). El webhook /hooks/sellerfy funciona 24/7 (responde cuando escriben). Los 8 cron jobs de la tabla estan construidos pero pendientes de activacion — cuando se activen, el bot hara outreach proactivo, follow-ups automaticos, recordatorios de demo, y deteccion de no-shows.

4.18 Templates WhatsApp (Twilio)

WhatsApp requiere templates pre-aprobados por Meta para iniciar conversaciones (mensajes proactivos). Los mensajes dentro de una conversacion activa (<24h desde el ultimo mensaje del usuario) se envian libremente. El bot usa 4 tipos de templates via Twilio API.

Welcome Templates

Se envian a form leads nuevos detectados por /poll-leads. Se selecciona uno al azar de la lista WELCOME_TEMPLATE_SIDS (multiples variaciones para evitar monotonia).

Variables: {1} = nombre del contacto

Follow-up Templates

Se envian a conversaciones inactivas 48h+. Cada intento usa un template diferente (indexado por numero de intento en la lista FOLLOWUP_TEMPLATE_SIDS). Maximo 2 follow-ups por contacto.

Variables: {1} = nombre del contacto

Reminder Template

Se envia ~2h antes de una demo agendada. Un solo template (REMINDER_TEMPLATE_SID). Solo 1 recordatorio por meeting (flag reminder_sent).

Variables: {1} = nombre, {2} = hora de la demo

No-Show Template

Se envia cuando se detecta una demo no atendida. Mensaje empatico ofreciendo re-agendar. Maximo 3 intentos (noshow_count), minimo 24h entre cada intento.

Variables: {1} = nombre del contacto

Nota: Los templates se configuran en las variables de entorno del droplet (WELCOME_TEMPLATE_SIDS, FOLLOWUP_TEMPLATE_SIDS, etc.). Los SIDs son IDs unicos de Twilio que apuntan a templates aprobados por Meta. Para crear o modificar templates: Twilio Console → Messaging → Content Template Builder.

4.19 Proceso de Outreach

El outreach es el proceso automatico por el cual el bot contacta proactivamente a leads que se registraron en la web (formulario en sellerfy.ai). A diferencia del flujo organico (el seller nos escribe), aqui el bot inicia la conversacion.

Flujo paso a paso

1

Deteccion de form leads

/poll-leads busca en HubSpot contactos creados en los ultimos 60 minutos que tengan telefono.

2

Filtrado de perfiles

Solo procesa contactos clasificados como cold_lead. Si el contacto ya es cliente, tiene trial, o ya fue contactado, se salta. Tambien verifica que no exista una conversacion previa en SQLite.

3

Envio de welcome template

Envia un template de bienvenida via Twilio (seleccion aleatoria de variaciones). Este es el unico paso que requiere template aprobado por Meta — es un primer contacto proactivo.

4

Creacion de conversacion en Chatwoot

Busca o crea el contacto en Chatwoot por telefono, luego crea una conversacion outbound. Esto permite que el equipo vea la interaccion en el panel.

5

Registro y arranque

Se registra la conversacion en SQLite con origin="form_lead" y fase DISCOVERY (ya se saludo con el template). Si el seller responde, el bot continua la conversacion normalmente.

Cuando SI hace outreach

  • • Contacto nuevo de formulario web (ultimos 60 min)
  • • Tiene telefono valido (E.164)
  • • Es cold_lead (sin suscripcion, sin trial, sin cuenta)
  • • No tiene conversacion previa en el bot
  • • Dentro de horario 8am-8pm CDMX

Cuando NO hace outreach

  • • Contacto ya es cliente (Stripe activo)
  • • Contacto tiene trial activo o expirado
  • • Contacto ya fue contactado (conversacion existente)
  • • Sin telefono en HubSpot
  • • Fuera de horario
  • • Fuera de horario de cron (8pm-8am CDMX)

Estado actual: ACTIVO desde Mar 16 2026

Todos los crons de outreach estan activos en produccion. El bot contacta leads nuevos cada 10 min + 20 leads/h del backlog de 18,000 existentes.

Backlog Outreach (18,000 leads existentes)

Ademas de leads nuevos, el bot contacta gradualmente el backlog de ~18,000 leads en HubSpot que nunca fueron contactados. El endpoint /backlog-outreach procesa 20 leads por hora de 10am-4pm CDMX (~120/dia). A ese ritmo, el backlog se completa en ~150 dias.

MecanismoFrequenciaHorarioVolumen
Poll-leads (nuevos)Cada 10 min8am-8pm CDMX~20/dia (depende de registro)
Backlog-outreachCada hora10am-4pm CDMX~120/dia (20/hora x 6h)
Follow-ups3x/dia10am, 2pm, 6pmLeads stale 48h (max 2 intentos)

Cursor persistente en backlog_cursor.json para no repetir leads entre ejecuciones.

Stripe Sync y Pagos

El script stripe_sync.py sincroniza datos de Stripe a HubSpot diariamente (6am UTC). Actualiza: plan_name, mrr, stripe_subscription_status, stripe_customer_id, y detecta churns automaticamente. Los montos en los deals deben coincidir con el MRR real de Stripe (no con precios de lista).

Alerta: Pagos fallidos detectados (Mar 2026)

Los siguientes contactos intentaron pagar pero su tarjeta fue rechazada. Representan revenue perdido que requiere accion del equipo:

ContactoMontoIntentosFechas
Veronica Pernia$421 (anual)4xFeb 25 - Mar 2
Alberto Resnik$149 (mensual)1xFeb 28
Juan Carlos Villarreal$79.201xMar 5
javiercrbz@gmail.com$149 (mensual)6xMar 6 - Mar 17

Accion: Contactar a estos sellers para actualizar metodo de pago. javiercrbz ha fallado 6 veces seguidas.

Metricas del pipeline (Mar 17 2026)

MetricaValor
Total suscripciones activas Stripe23
MRR total$944.72/mo
ARR total$11,336.64/yr
Nuevo cierre pipeline (ultimos 2 meses)Tecneu - Scale trimestral - $570 cobro ($190 MRR)
Deals activos en pipeline43
Meetings sin outcome actualizado22 (accion requerida del SDR)
Leads en HubSpot con telefono~16,841
Backlog outreach: leads contactados/dia~120

4.20 Identificacion de Perfil del Contacto

Cada vez que un mensaje entra al bot, lo primero que hace el pipeline es clasificar al contacto en 1 de 6 perfiles. Esta clasificacion determina completamente el comportamiento del bot: que dice, que tono usa, si vende o da soporte, y que acciones automaticas ejecuta. La funcion classify_contact() en hubspot.py es la responsable.

Fuente de verdad: Stripe

La propiedad stripe_subscription_status en HubSpot (sincronizada diariamente por stripe_sync.py) es la fuente de verdad absoluta para determinar si alguien es cliente, ex-cliente, o esta en trial. El bot nunca confia en lo que el contacto dice sobre su estado — siempre consulta los datos reales de Stripe via HubSpot.

Los 6 perfiles y como se determinan

cold_lead perfil por defecto

Contacto completamente nuevo. No tiene registro en Sellerfy, no tiene datos en Stripe, no tiene trial, no tiene cuenta de Memberstack. Es alguien que llego por WhatsApp por primera vez.

Condicion: Sin datos en HubSpot, O sin propiedades relevantes, O no cumple ninguna de las condiciones posteriores.
registered

Se registro en app.sellerfy.ai (tiene cuenta Memberstack) o conecto una cuenta de marketplace, pero no tiene trial ni suscripcion activa en Stripe. Conoce el producto pero no lo ha probado.

Condicion: memberstack=true O memberstack_created_at existe O amazon_has_preview=true O mercadolibre_has_preview=true. Sin datos de Stripe.
trial_active

Esta en periodo de prueba activo (7 dias). La fecha de fin del trial (trial_end_date) esta en el futuro. Esta explorando la plataforma con datos reales.

Condicion: trial_end_date existe Y datetime.now() < trial_end_date. Sin suscripcion activa en Stripe.
trial_expired

Tuvo un trial de 7 dias pero ya expiro sin convertir a pago. Conocio el producto, vio sus datos, pero decidio no continuar (o simplemente se le olvido). Es un lead tibio con alto potencial de reactivacion.

Condicion: trial_end_date existe Y datetime.now() >= trial_end_date. Sin suscripcion activa en Stripe.
customer_active

Cliente que paga una suscripcion activa. Stripe reporta status=active o status=past_due (aun activo pero con pago pendiente). Tambien incluye contactos con lifecycle=customer y subscription_active=true como fallback.

Condicion: stripe_subscription_status = "active" O "past_due". Fallback: lifecycle=customer + subscription_active=true.
churn

Ex-cliente que cancelo o dejo de pagar su suscripcion. Stripe reporta status=canceled o incomplete_expired. Tambien detectado por lifecycle stage Churn (ID: 1298051956) o la propiedad churn=true.

Condicion: stripe_subscription_status = "canceled" O "incomplete_expired". Fallback: churn=true O lifecycle=1298051956.

Arbol de decision (orden de evaluacion)

// 1. Stripe tiene prioridad absoluta
if stripe_status == "active"customer_active
if stripe_status == "canceled"churn
if stripe_status == "past_due"customer_active  (at risk)

// 2. Fallback: churn detectado por propiedad o lifecycle
if churn == true OR lifecycle == "1298051956"churn
if lifecycle == "customer" + sub_active  → customer_active
if lifecycle == "customer" - sub_active  → churn

// 3. Trial (basado en fecha)
if trial_end_date > now()              → trial_active
if trial_end_date <= now()             → trial_expired

// 4. Registro detectado
if memberstack OR has_preview           → registered

// 5. Default
elsecold_lead

Que hace el bot diferente segun el perfil

Cada perfil activa un system prompt completamente diferente que se inyecta al modelo de IA. El bot no es el mismo agente para un prospecto frio que para un cliente activo:

Perfil Rol del bot Comportamiento Acciones automaticas
cold_lead Vendedor consultivo Pipeline completo de nurturing: GREETING → DISCOVERY → INFORMING → PROPOSING → BOOKED. Pregunta marketplace, SKUs, facturacion. Crea deseo con Net Profit y Sofi. Ofrece demo. Crear contacto en HubSpot, extraer datos, avanzar lifecycle stages, crear deal si BOOKED
registered Activador Pregunta si pudo explorar la plataforma. Ayuda a conectar marketplace. Destaca features del trial. Si muestra interes en demo, puede enviar link. Actualizar contacto HubSpot, seguimiento de activacion
trial_active Guia de onboarding Pregunta como le va. Ayuda a sacar maximo provecho del trial. Resuelve dudas tecnicas. Destaca features de planes pagos si aplica. NO presiona para comprar. Actualizar contacto HubSpot
trial_expired Reactivador Pregunta por que no continuo, que le falto. Ofrece ayuda para retomar. Puede enviar link de demo si muestra interes. Enfoque en superar lo que freno la conversion. Actualizar contacto HubSpot, puede crear deal si BOOKED
customer_active Soporte tecnico NO vende. NO ofrece demo ni planes. Responde preguntas de soporte, ayuda con la plataforma, resuelve dudas tecnicas. Si no puede resolver, escala a humano. Crear ticket de soporte en HubSpot (con prioridad inteligente), escalar si necesario
churn Win-back empatico Reconecta con empatia. Pregunta como le fue, que paso. Escucha sin presionar. Si hay apertura, ofrece demo para mostrar mejoras recientes. Crear ticket de soporte en HubSpot, escalar si necesario
REGLA CRITICA

Solo los contactos cold_lead pasan por el pipeline completo de nurturing (7 fases). Los otros 5 perfiles tienen un flujo abreviado con instrucciones especificas que evitan, por ejemplo, intentar vender un plan a alguien que ya esta pagando. El routing ocurre en el paso 4c del pipeline (app.py linea ~124).

Alcance y limitaciones

Alcance: El bot clasifica a TODOS los contactos que escriben por WhatsApp, sin excepcion. La clasificacion ocurre en tiempo real en cada mensaje entrante, consultando los datos mas recientes de HubSpot.

Precision: La clasificacion depende de la calidad de los datos en HubSpot. Si stripe_sync.py no ha corrido o el contacto no tiene email en HubSpot, puede ser clasificado como cold_lead aunque sea un cliente. El sync de Stripe corre diariamente a las 6am UTC para minimizar este desfase.

Tickets automaticos: Para perfiles customer_active y churn, el bot crea automaticamente un ticket de soporte en HubSpot con prioridad inteligente (urgente, alta, media, baja) basada en el contenido del mensaje. Esto asegura que ningun mensaje de un cliente activo se pierda.

4.21 Customer Journey Completo: De 0 a 100

Mapa visual del journey completo

Desde que un seller entra al radar de Sellerfy hasta que se convierte en cliente. Cada paso muestra que hace el bot, que hace el humano, y que objetos se crean en HubSpot.

Entrada A: Lead organico (WhatsApp directo)

Seller escribe por WhatsApp Twilio recibe Chatwoot crea conv Webhook al bot

HubSpot: Contacto creado automaticamente (lifecycle=lead, status=NEW). Bot: Responde con IA, fase GREETING. Humano: No interviene.

Entrada B: Lead de formulario web

Seller llena formulario HubSpot crea contacto Poll-leads (cada 10 min) Template WhatsApp enviado

HubSpot: Contacto ya existe del formulario. Bot: Envia template de bienvenida via Twilio, crea conversacion en Chatwoot, fase DISCOVERY. Humano: No interviene.

Entrada C: Lead del backlog (18K existentes)

Backlog cron (cada hora) 20 leads del cursor Template WhatsApp enviado

HubSpot: Contacto ya existia. Bot: Template de bienvenida, crea conversacion, fase DISCOVERY. Humano: No interviene. ~120 leads/dia.

Journey completo paso a paso

1

Primer contacto

Bot
Template de bienvenida (form/backlog) o respuesta IA (organico)
Humano
Nada
HubSpot
Contacto: lifecycle=lead, status=NEW
2

Discovery (2-4 mensajes)

Bot
Valor primero, 1 pregunta/msg. Extrae: marketplace, dolor, SKUs, empresa
Humano
Nada — solo monitorea en Chatwoot si quiere
HubSpot
Contacto: status=CONNECTED, properties actualizadas con datos extraidos
3

Informing (crear deseo)

Bot
Net Profit, Sofi IA, social proof. Comparte link de demo cuando hay interes claro
Humano
Nada
HubSpot
Contacto: lifecycle=MQL, status=IN_PROGRESS
4

Proposing (link enviado, esperando agendar)

Bot
Resuelve dudas, maneja objeciones. Recuerda link UNA vez si no agendan
Humano
Nada (a menos que el bot escale)
HubSpot
Contacto: lifecycle=SQL (si configurado), status=IN_PROGRESS
5

Booked (demo agendada)

Bot
Felicita, tips de prep. Crea Deal automaticamente. Asigna owner (Miguel o Jose)
Humano
TOMA EL CONTROL: Miguel o Jose dan la demo. Preparan ficha HubSpot
HubSpot
Deal creado (appointmentscheduled), lifecycle=opportunity, status=OPEN_DEAL, owner=rep asignado, nota con resumen de conversacion
6

Post-demo y cierre

Bot
Follow-up post-demo: pregunta como fue, guia hacia plan, maneja objeciones finales
Humano
Cierra: Comparte cotizacion (Quote HubSpot), link de Stripe, negocia
HubSpot
Deal stages: solo el humano los mueve (qualifiedtobuy → closedwon/closedlost)

Ramas alternativas

ESCALATED — El bot no sabe la respuesta → crea ticket en HubSpot con prioridad inteligente → el humano resuelve via Chatwoot o HubSpot. Si la conversacion avanza con datos suficientes, des-escala automaticamente a INFORMING/DISCOVERY.

LOST — 14 dias inactivo + 2 follow-ups sin respuesta → contacto marcado BAD_TIMING en HubSpot. Si el seller vuelve a escribir, re-entra en DISCOVERY automaticamente.

NO-SHOW — Demo agendada pero el seller no se presento → deal movido a etapa No-Show → bot envia template de re-agendar → hasta 3 intentos.

4.22 Bot vs Humano: Quien Hace Que

Regla de oro: El bot es autonomo de GREETING a BOOKED. El humano solo interviene en: (1) escalaciones, (2) la demo en si, (3) cierre de venta, (4) soporte a clientes existentes.

TareaBotHumano (SDR)
Primer contacto / bienvenidaAutomatico Template o IA
Discovery (preguntas, datos)Automatico IA conversacional
Info de producto / pricingAutomatico IA + KB validado
Compartir link de demoAutomatico Link de Miguel o Jose (persistente)
Manejo de objecionesAutomatico IA + battlecards
Creacion de deal en HubSpotAutomatico Al detectar meeting
Extraccion de datos al CRMAutomatico Haiku extrae, sync a HubSpot
Follow-ups a leads friosAutomatico Templates (max 2)
Pregunta fuera del KBCrea ticket, escalaResponde via Chatwoot o HubSpot
Dar la demoMiguel o Jose con ficha de HubSpot preparada
Follow-up post-demoAutomatico IA pregunta como fueSi necesita intervencion, toma la conv
Cerrar venta / cotizacionSDR cierra Quote HubSpot + link Stripe
Mover deal stagesSolo humanos en HubSpot (excepto appointmentscheduled)
Soporte a cliente existenteDetecta perfil, crea ticketResuelve el equipo de soporte

Handoff a humano: 3 triggers

1. Escalacion por KB

El bot detecta que no sabe la respuesta → dice "dejame confirmarlo con el equipo" → fase=ESCALATED → crea ticket en HubSpot con prioridad inteligente (HIGH/MEDIUM/LOW basado en contenido). El SDR ve la escalacion en Chatwoot como nota privada y el ticket en HubSpot.

2. Handoff explicito

El bot dice "te conecto con..." → conversacion asignada al SALES_AGENT_ID en Chatwoot → bot se pausa (ya no responde a esa conv) → owner asignado en HubSpot al rep persistido de la conversacion. El SDR ve la conversacion en su bandeja con nota "[Handoff: bot pausado]".

3. Cliente existente con soporte

Si el contacto es customer_active o churn, el bot cambia a modo soporte (NO ventas). Si detecta que necesita ayuda tecnica → handoff automatico + ticket. El SDR ve el ticket con categoria y prioridad.

4.23 Templates de WhatsApp: Que se Envia y Cuando

Templates vs IA: Los templates son mensajes pre-aprobados por Meta (Twilio Content API) que se usan para iniciar conversaciones o reactivar leads frios. La IA conversacional (Claude Sonnet) se usa para responder dentro de conversaciones activas. WhatsApp requiere template aprobado para enviar el primer mensaje a un numero nuevo.

TemplateCuando se enviaTrigger (cron)Variables
Welcome Lead nuevo de formulario o backlog. Primer contacto por WhatsApp poll-leads (10min) o backlog-outreach (1h) 1 = nombre del contacto. Seleccion aleatoria entre multiples SIDs
Follow-up Lead stale: 24h sin respuesta, con al menos 1 mensaje previo follow-ups (3x/dia: 10am, 2pm, 6pm) 1 = nombre. Template diferente por intento (max 2)
Reminder Demo agendada para hoy o manana. Recordatorio previo reminders 1 = nombre, 2 = hora de la cita
No-show El seller no se presento a la demo noshow 1 = nombre. Invita a reagendar

Importante: Los templates se configuran en Twilio Content API y deben estar aprobados por Meta. Los SIDs se definen en variables de entorno: WELCOME_TEMPLATE_SIDS, FOLLOWUP_TEMPLATE_SIDS, REMINDER_TEMPLATE_SID, NOSHOW_TEMPLATE_SID.

Crons activos en produccion

CronFrecuenciaHorario CDMXQue hace
sellerfy-poll-leads.shCada 10 min8am – 8pmBusca leads nuevos en HubSpot, envia welcome template
sellerfy-backlog-outreach.shCada hora10am – 4pm20 leads del backlog, welcome template, ~120/dia
sellerfy-follow-ups.sh3x/dia10am, 2pm, 6pmFollow-up a stale (24h), marca LOST (14d+2 follow-ups)
sellerfy-daily-report.sh1x/dia9pmReporte de engagement: response rate, conversiones, deltas

4.24 Creacion de Deals: Cuando y Como

Regla: Todo meeting de Sellerfy DEBE tener un deal asociado. El sistema crea deals automaticamente por dos vias: (1) el bot detecta que el seller agendo via el link que compartio, (2) un cron cada 30 min detecta meetings nuevas sin deal y las crea. Solo se crean deals para meetings FUTURAS o recientes (72h). Un deal solo se crea una vez por contacto (dedup automatico).

Via 1: Deal creado por el bot (conversacion activa)

El bot envio link de demo (Miguel o Jose) → booking_link_sent=true
Se detecta un meeting FUTURO en HubSpot asociado al contacto (no viejos)
El contacto NO tiene ya un deal existente (dedup)

Incluye: descripcion con contexto de la conversacion, nota en contacto/deal, notificacion en Chatwoot.

Via 2: Sync de bookings externos (cron cada 30 min)

Meeting creada en las ultimas 72 horas con titulo que contenga: Sellerfy, Intro, Demo, Onboarding, Conoce, o Miguel Angel Camargo
Meeting tiene contacto asociado en HubSpot
El contacto NO tiene ya un deal existente (dedup)

Cubre: demos agendadas por LinkedIn, email, WhatsApp manual, o cualquier canal fuera del bot. Endpoint: /sync-external-bookings. Cron: cada 30min, 8am-8pm CDMX.

Propiedades del deal al crearse

PropiedadValorOrigen
dealnameDemo - Nombre - 17 Mar 2026, 10:00 AM (Empresa)contacto + meeting + estado
hubspot_owner_idID del rep asignado (Miguel: 86642356, Jose: 86642358)rep persistido en la conversacion
pipelinedefaultfijo
dealstageappointmentscheduledfijo (unico stage que el bot escribe)
dealtypenewbusinessfijo
amountRevenue mensual (si se extrajo)conversacion
marketplace_dealAmazon / Mercado Libre / Ambosconversacion
pain_principalDolor principal del sellerconversacion
descriptionResumen completo: hora, empresa, marketplace, SKUs, revenue, dolor, tools, experiencia, origenbot (auto-generado)
hs_next_stepDemo 17 Mar 2026, 10:00 AMmeeting

Acciones adicionales al crear deal

Deal asociado al contacto en HubSpot
Meeting asociado al deal
Owner del contacto actualizado al mismo rep del deal
Nota creada en contacto + deal con resumen de la conversacion
Lifecycle del contacto actualizado a opportunity
Nota privada en Chatwoot: "DEMO AGENDADA — Nombre (Empresa). Deal: ID"

Pipeline completo de deals (Sales Pipeline)

EtapaIDQuien mueveDescripcion
Demo/BANTappointmentscheduledBotDeal creado automaticamente al detectar meeting. Unica etapa que el bot escribe.
TrialqualifiedtobuySDRDemo completada, seller en periodo de prueba
NegociacionpresentationscheduledSDRNegociando plan/precio
Contrato EnviadocontractsentSDRQuote/cotizacion enviada, esperando pago
Cerrado GanadoclosedwonSDRCliente pago y esta activo
No-Show1323275842Bot o SDRSeller no se presento. Bot mueve automaticamente si meeting=NO_SHOW. Bot envia hasta 3 templates de re-agendamiento
Cerrado PerdidoclosedlostSDROportunidad perdida definitivamente
Repesca1311280404SDRLead frio que vale la pena reintentar mas adelante

Flujo de No-Show automatico

Demo/BANT meeting marcada NO_SHOW en HubSpot No-Show 3 templates re-agendar (24h entre c/u)

Deteccion: cron 3x/dia (/noshow-followups) + webhook en tiempo real cuando el contacto escribe. El SDR tambien puede marcar NO_SHOW manualmente en HubSpot y el bot lo detecta.

Responsabilidad del SDR: actualizar outcome de meetings

Despues de cada demo, el SDR DEBE actualizar el outcome del meeting en HubSpot a COMPLETED o NO_SHOW. Sin esto, el bot no puede detectar no-shows automaticamente y el deal queda estancado en Demo/BANT. Ir al meeting en HubSpot → Edit outcome → Completed / No show.

4.25 Objetos HubSpot por Fase

Mapa completo de como evolucionan los objetos de HubSpot en cada fase de la conversacion. Esto es lo que el SDR debe ver en el CRM en cada etapa.

Que debe verse en cada deal

  • Nombre: Demo - Nombre - DD Mon YYYY, H:MM AM (Empresa)
  • Meeting asociado: visible en la timeline del deal con fecha y hora
  • Description: resumen con contacto, empresa, marketplace, SKUs, facturacion, rep, outcome
  • Next step: Demo DD Mon YYYY, H:MM AM
  • Owner: Miguel o Jose (consistente con el contacto)
  • Contacto asociado: con lifecycle=opportunity y mismo owner
Fase Lifecycle Lead Status Deal Owner
GREETING lead NEW No Nadie
DISCOVERY lead CONNECTED No Nadie
INFORMING MQL (1017239408) IN_PROGRESS No Nadie
PROPOSING SQL (si config) IN_PROGRESS No Nadie
BOOKED opportunity OPEN_DEAL Si — creado automaticamente Miguel o Jose (persistido)
ESCALATED sin cambio CONNECTED No (+ ticket creado) Nadie (ticket asignado)
LOST lead BAD_TIMING No Nadie

Asignacion de reps de demo

El bot asigna aleatoriamente UN rep por conversacion la primera vez que construye el prompt. Este rep se persiste en el estado de la conversacion (assigned_rep) y se reutiliza consistentemente en:

  • El link de demo que comparte el bot (siempre el mismo rep para esa conversacion)
  • El owner del deal cuando se crea
  • El owner del contacto en HubSpot
  • El handoff en Chatwoot si ocurre
RepLink de meetingsHubSpot Owner ID
Miguel Camargocomunidad.sellerfy.ai/meetings/miguel-camargo86642356

4.26 Pipeline de Generacion de Leads: Sherlock + Apify

Claude Leadgen v1 - Pipeline automatizado de leads B2B

Sistema para extraer sellers activos de Amazon MX y MercadoLibre MX, enriquecer sus datos de contacto (WhatsApp, email, website), y cargarlos a HubSpot. Primera ejecucion: 15-17 Mar 2026.

Resultados de la primera ejecucion

MetricaValor
Total sellers encontrados6,379
Subidos a HubSpot3,224 (con contacto validado)
Con WhatsApp validado1,662
Con email2,191
Hot leads (WA + email)700
Amazon MX / MercadoLibre MX1,206 / 1,742
Tiempo total~18 horas
Costo Apify~$100 USD

Las 3 macro-etapas y 7 fases

Macro-Etapa 1: EXTRAER

Quien vende en Amazon y MercadoLibre Mexico?

Fase 0: Base Sherlock609 sellers historicos de 74 runs del agente Sherlock (Jan-Mar 2026)
Fase 1: Apify Turbo541 queries → 6,379 sellers. Actors: karamelo (ML) + junglee (Amazon)

Macro-Etapa 2: ENRIQUECER

Como contacto a estos sellers? 4 fases con estrategias diferentes (no repetir).

Fase 2: Brave Search paralelo27% hit rate → +1,505 contactos. Busca "{seller} contacto telefono email"
Fase 3: Brave agresivo3% hit rate → +60 contactos. Segunda pasada con queries diferentes
Fase 4: Multi-strategy29% hit rate → +1,145 contactos. Perplexity website discovery + Brave deep + redes sociales
Fase 5: ValidacionLimpieza, dedup, clasificacion A/B/C, categorizacion con Perplexity, asignacion de ciudad

Macro-Etapa 3: CARGAR

Ponerlos en HubSpot listos para el equipo comercial.

Fase 6: Upload HubSpot3,224 contactos con origen Claude Leadgen, lifecycle=lead, lead_status=NEW
Fase 7: Enriquecer camposmarketplace, lead_quality, city, website, tipo_seller en HubSpot

Scripts y ejecucion

Todos los scripts estan en ~/sellerfy-leads/. Se ejecutan en orden:

#ScriptFase
1turbo_extract.pyExtraccion Apify (ML + Amazon)
2enrich_parallel.pyBrave Search paralelo
3enrich_massive.pyBrave segunda pasada
4enrich_creative.pyPerplexity + Social
5validate_and_enrich.pyValidacion + categorias
6upload_hubspot.pyUpload a HubSpot
7update_contacts.py + update_extra_fields.pyEnriquecer campos extra

APIs y costos

APIUsoCosto por 10KKey
ApifyExtraccion ML + Amazon~$100-150APIFY_API_KEY
Brave Search ProEnriquecimiento contactosIncluido en planBRAVE_API_KEY_PRO
PerplexityWebsite discovery + categorizacion~$5-10PERPLEXITY_API_KEY
HubSpotCRM upload$0HUBSPOT_TOKEN

Bugs criticos resueltos

  • ML Apify: campo country debe ser URL (https://listado.mercadolibre.com.mx/), NO string
  • Amazon Apify: usa startUrls (array), NO searchUrl
  • HubSpot phone: +52XXXXXXXXXX (12 dig), NO +521XXXXXXXXXX (13 dig)
  • notes_last_updated es read-only en HubSpot
  • lead_source no existe; usar utm_source + custom origen

Como funciona Sherlock (Fase 0 - Base historica)

Sherlock es un agente de OpenClaw especializado en investigacion de leads. Tiene un tool llamado leadgen que recibe un objetivo (ej: "sellers de electronica en Mexico"), genera queries de busqueda, las ejecuta via Brave Search, y enriquece cada seller con Apify + Perplexity + Apollo.

Flujo de Sherlock por run:

Objetivo Queries Brave Sellers encontrados Enrich (Apify+Perplexity) CSV con contactos

Problema: Cada query tarda ~15 min (enriquece uno por uno). Para 10,000 sellers necesitaria semanas. Por eso se creo Claude Leadgen: separa extraccion masiva (Apify directo) de enriquecimiento (Brave + Perplexity en paralelo).

Para el pipeline v1, consolidamos 74 runs historicos de Sherlock (Jan-Mar 2026) en un solo CSV (sherlock_dump_completo.csv): 609 sellers unicos como base inicial.

Como funciona el enriquecimiento (Fases 2-4)

El enriquecimiento es el proceso de encontrar datos de contacto (WhatsApp, email, website) para sellers que solo tienen nombre y URL de marketplace. Usa 3 estrategias en cascada:

Strategy 1: Brave Search (27% hit rate)

Busca "SELLER" Mexico whatsapp contacto telefono y extrae con regex: emails, telefonos MX (+52...), links wa.me/, links tel:. Corre en paralelo con la extraccion.

Strategy 2: Perplexity Website Discovery + Brave Deep (29% hit rate)

Primero Perplexity busca el website oficial del seller (batches de 10). Luego Brave scrapea site:website.com contacto. Si no hay website, busca en Facebook/Instagram donde muchos sellers mexicanos ponen su WhatsApp en la bio.

Strategy 3: Perplexity Contact directo

Para sellers que parecen empresas reales (nombre > 4 chars), pregunta directamente a Perplexity por telefono y email. Ultimo recurso, solo si las anteriores fallaron.

Leccion clave del enriquecimiento

Repetir la misma estrategia (Brave) con queries diferentes tiene rendimientos decrecientes: 27% → 3%. Cambiar de estrategia (Perplexity + Social) recupera el hit rate: 29%. Siempre cambiar de approach, no repetir.

Como funciona la carga a HubSpot (Fase 6)

El upload mapea cada campo del CSV a propiedades de HubSpot. Punto critico: el formato de telefono mexicano.

Formato INCORRECTO (WhatsApp)

+521XXXXXXXXXX (13 digitos)

HubSpot rechaza con error 400

Formato CORRECTO (HubSpot)

+52XXXXXXXXXX (12 digitos)

Quitar el "1" despues del 52

Todos los contactos se crean con origen=Claude Leadgen para filtrarlos en HubSpot. Los contactos sin telefono ni email (calidad C) NO se suben.

Como replicar el pipeline

# 1. Editar queries en turbo_extract.py (linea ~50)

# 2. Ejecutar en orden:

cd ~/sellerfy-leads

python3 turbo_extract.py # Fase 1: Apify

python3 enrich_parallel.py # Fase 2: Brave (en paralelo con Fase 1)

python3 enrich_massive.py # Fase 3: Brave 2da pasada

python3 enrich_creative.py # Fase 4: Perplexity + Social

python3 validate_and_enrich.py # Fase 5: Limpieza + categorias

python3 upload_hubspot.py # Fase 6: Upload

python3 update_contacts.py # Fase 7a: Origen + marketplace

python3 update_extra_fields.py # Fase 7b: Ciudad + website + tipo

Documentacion completa (685 lineas): ~/clawd/agents/sellerfy-nurture/kb/claude_leadgen_v1.md. Scripts: ~/sellerfy-leads/. Datos Sherlock: ~/clawd/agents/sherlock/out/runs/ (74 CSVs).

4.27 Import Masivo de Contactos a HubSpot

Mar 14-15 2026: Consolidacion de 8 bases de datos en HubSpot. 20,658 contactos limpios, 16,841 con WhatsApp E.164.

Resultado del import

MetricaValor
Contactos importados20,658 (de 8 bases de datos)
Eliminados (test/invalidos)1,214
Con WhatsApp (E.164)16,841
Hot leads (score 80-100)6,313 (29%)
Amazon URLs5,323
MercadoLibre URLs2,479
LinkedIn / Instagram / Facebook1,863 / 3,840 / 3,648

Propiedades creadas en este import

Custom properties nuevas

  • import_batch = "db_import_2026_03_14"
  • import_source_file (archivo origen)
  • phone_secondary, phone_type
  • instagram_url, facebook_url
  • data_completeness_score (0-100)
  • lead_quality (hot/warm/cold/incomplete)
  • email_validation_status (8 valores)
  • 7 opciones nuevas en enum origen

Fuentes originales

  • 8 archivos CSV de ~/Desktop/Bases-de-Datos-Empresas/
  • Score promedio: 69.6/100
  • 3,799 telefonos empresa
  • 15,767 websites
  • 959 Twitter profiles

Documentacion completa: ~/claude-memory/memory/sellerfy-hubspot-import.md

4.28 Scripts de Integracion y Sync

Ademas del bot principal (app.py), el sistema tiene scripts standalone que sincronizan datos entre Stripe, Google Ads, GA4, Intercom y HubSpot.

ScriptQue haceFrecuencia
stripe_sync.pySincroniza suscripciones Stripe → HubSpot: plan_name, MRR, status, detecta churns. Fuente de verdad para clasificar clientesDiario 6am UTC
analytics_sync.pyEnriquece contactos con GA4 (fuente adquisicion, landing page, campana). Genera reporte diario de funnelDiario 7am UTC
gclid_conversions.pySube conversiones offline a Google Ads cuando un lead con GCLID paga en StripeManual
ltv_backfill.pyCalcula LTV, months_as_customer y funnel_stage con datos de Stripe → HubSpotManual/periodico
intercom_backfill.pyMigro datos legacy Intercom → HubSpot: signup_date, browser, region. 4,045 contactos. One-off (completado)One-off

Stripe Sync: flujo

Stripe API Calcular MRR Buscar en HubSpot Actualizar props Detectar churns

Propiedades: plan_name, mrr, stripe_subscription_status, lifecyclestage=customer. Key: STRIPE_SYNC_KEY en .env.local.

UTM Tracking: frontend a HubSpot

ArchivoDondeQue hace
utm_tracking_code.jshead de sellerfy.aiCaptura UTMs del URL, cookie 30d
utm_registration_example.jsForm registroAgrega UTMs al payload del backend
utm_hubspot_backend_example.pyBackend (ejemplo)Incluye utm_source, utm_medium, gclid al crear contacto

Google Ads GCLID: conversion offline

Ad click + GCLID Cookie 30d Registro HubSpot gclid Paga Stripe Conversion a Google Ads

Seccion 5

HubSpot CRM

5.0 Setup Inicial (Para SDRs Nuevos)

Estos pasos se realizan una sola vez al incorporarse al equipo. Aseguran que HubSpot este correctamente configurado para registrar toda la actividad comercial desde el primer dia.

1

Conectar correo electronico

Icono de configuracion (rueda) → General → Correo electronico. Conecta tu Gmail o Outlook para que HubSpot registre automaticamente los correos enviados y recibidos con cada contacto. Esto es fundamental para que el historial de interacciones sea completo.

2

Configurar llamadas

Tu usuario de HubSpot incluye un numero de telefono asignado desde el cual puedes realizar y recibir llamadas directamente desde la plataforma. Verifica que este activo en Configuracion → Llamadas. Todas las llamadas realizadas desde HubSpot se registran automaticamente en el contacto.

3

Activar notificaciones

Configuracion → Notificaciones. Activa alertas para: nuevas tareas asignadas, respuestas de contactos, aperturas de correo, y visitas al sitio web. Estas notificaciones son tu sistema de alerta temprana para actuar en el momento de mayor interes del lead.

4

Familiarizarse con el portal

Abrir la pestana de "Resumen" para ver tareas pendientes y actividad reciente de leads (aperturas de correos, visitas a la web). Revisar el Pipeline de deals activos y las vistas de contactos creadas por el equipo. Este sera tu centro de operaciones diario.

5.1 Vision General

HubSpot es el sistema nervioso central de Sellerfy. Centraliza TODA la informacion del cliente: desde el primer clic en un anuncio de Google Ads hasta el LTV calculado despues de meses de suscripcion. Cada contacto tiene una vista 360 grados que combina datos de la web, el bot de WhatsApp, Stripe, Intercom (legacy), y Google Analytics.

6,965
Contactos totales
Private App
Tipo de integracion API
40+
Custom Properties
4
Integraciones activas

Integraciones conectadas al portal

WhatsApp
Bot de Nurturing (Chatwoot)
Crea y actualiza contactos, avanza lifecycle stages automaticamente segun la fase conversacional.
Stripe
Stripe Sync (stripe_sync.py)
Sincroniza suscripciones, MRR, ARR, planes, estado de pago y detecta churns automaticamente.
Analytics
Analytics Pipeline (analytics_sync.py)
Enriquece contactos con acquisition_channel, sube conversiones GCLID a Google Ads, genera reportes diarios.
Intercom
Intercom Backfill (legacy, completado)
Migro datos historicos de 4,045 contactos: signup date, last seen, browser, OS, region, referrer.

5.2 Lifecycle Stages

HubSpot utiliza lifecycle stages para representar la etapa de madurez de un contacto. Sellerfy tiene 8 stages configurados: 5 nativos de HubSpot y 3 custom.

Subscriber nativo

Visitante suscrito al sitio web. Etapa por defecto para contactos importados o creados sin interaccion directa.

Lead nativo

Contacto con interes declarado. Llego por formulario, WhatsApp, o cualquier canal de contacto. El bot crea automaticamente todo contacto nuevo como Lead.

Fuente de Leads custom (ID: 1017626510)

Contacto importado por carga masiva o formulario web que aun no tiene telefono. Los contactos con telefono se promueven automaticamente a Lead para ser contactables. Solo quedan ~43 contactos en este stage (sin telefono).

MQL custom (ID: 1017239408)

Marketing Qualified Lead. Ha interactuado con contenido, perfil validado. Tiene suficiente engagement para considerarse calificado por marketing.

Opportunity nativo

Contacto con demo agendada o interes confirmado de compra. El bot avanza automaticamente a esta etapa cuando el contacto llega a fase BOOKED.

Customer nativo

Cliente activo que paga una suscripcion. stripe_sync.py actualiza automaticamente: si hay suscripcion activa en Stripe, el contacto es Customer.

Evangelist nativo

Cliente promotor que refiere a otros sellers. Asignacion manual por el equipo comercial cuando se identifica un promotor activo.

Churn custom (ID: 1298051956)

Cliente perdido/cancelado. stripe_sync.py detecta automaticamente: si el contacto era Customer y ya no tiene suscripcion activa en Stripe, se marca como Churn. Su lead_status se establece como WIN_BACK para identificarlos como oportunidades de reactivacion.

Como transicionan los lifecycle stages

Bot WhatsApp Avanza automaticamente segun la fase conversacional: GREETING crea Lead, BOOKED avanza a Opportunity.
stripe_sync.py Actualiza diariamente: suscripcion activa = Customer, suscripcion cancelada sin activa = Churn. Requiere clear + set (HubSpot solo permite avanzar, no retroceder).
Manual MQL, Opportunity, Evangelist se asignan manualmente por el equipo. Fuente de Leads se asigna por formularios web o imports masivos (contactos sin telefono quedan ahi; los que tienen telefono se promueven a Lead).

5.3 Custom Properties (105 activas)

Ademas de las propiedades nativas de HubSpot (email, nombre, telefono, etc.), Sellerfy tiene 105 propiedades custom visibles y 47 archivadas (legacy de Intercom, PhantomBuster, ZeroBounce y Zoom). Las propiedades archivadas no se borraron — solo se ocultaron de filtros y formularios para mantener el CRM limpio. La propiedad canonica de marketplace es marketplace (no marketplace_principal, que fue archivada por ser duplicada).

# Propiedad Tipo Descripcion Fuente de datos
1 app_signup_date date Fecha de registro en app.sellerfy.ai Intercom backfill (signed_up_at)
2 app_last_seen datetime Ultima actividad en la app Intercom backfill (last_seen_at)
3 first_referrer text Primer referrer que trajo al usuario (ej. google.com, facebook.com) Intercom backfill (referrer)
4 landing_page text URL de la pagina donde aterrizo por primera vez Intercom / UTM script (pendiente conexion)
5 browser_name text Navegador del usuario (Chrome, Safari, Firefox) Intercom backfill (browser)
6 os_name text Sistema operativo (Windows, macOS, iOS, Android) Intercom backfill (os)
7 region_name text Region/estado/provincia del usuario Intercom backfill (location.region)
8 intercom_id text ID legacy de Intercom para referencia cruzada Intercom backfill (intercom_id)
9 funnel_stage enum Etapa del funnel calculada (ver seccion 5.4) ltv_backfill.py (lifecycle + Stripe)
10 ltv number Lifetime Value en USD — suma de todas las facturas pagadas en Stripe ltv_backfill.py (Stripe invoices, amount_paid)
11 months_as_customer number Meses como cliente (inicio de suscripcion hasta fin o fecha actual) ltv_backfill.py (Stripe start_date a canceled_at)
12 gclid text Google Click ID para atribucion de conversiones offline a Google Ads UTM script en web (pendiente conexion Memberstack)

5.4 Funnel Stages (Detalle del Enum)

La propiedad funnel_stage es un enum calculado que unifica el estado real del contacto combinando su lifecycle stage de HubSpot con datos de suscripcion de Stripe. Tiene 8 valores posibles, asignados por ltv_backfill.py con 100% de cobertura (6,965 contactos).

Funnel Stage Descripcion Lifecycle Source
visitor Visitante sin registro en la plataforma subscriber (default)
form_started Inicio formulario sin completar Asignacion manual
registered Registrado en la plataforma Sellerfy lead, Fuente de Leads (1017626510), other
account_connected Conecto su cuenta de marketplace (Amazon/ML) Evento de app
trial_active En periodo de prueba activo Stripe (status=trialing)
paying Cliente pagando activamente una suscripcion customer, evangelist (con suscripcion activa + MRR > 0)
qualified Lead calificado por marketing u oportunidad comercial MQL (1017239408), opportunity
churned Cliente que dejo de pagar su suscripcion Churn (1298051956), o suscripcion cancelada en Stripe

Logica de determinacion (determine_funnel_stage)

1. Si tiene suscripcion activa Y MRR > 0  →  paying
2. Si tiene suscripcion cancelada          →  churned
3. Si lifecycle = MQL o opportunity        →  qualified
4. Si lifecycle = lead / Fuente de Leads   →  registered
5. Si lifecycle = subscriber / (sin datos) →  visitor

5.5 Pipeline de Deals

Los deals en HubSpot representan oportunidades comerciales concretas. En Sellerfy, un deal se crea UNICAMENTE cuando el contacto agenda una demo (fase BOOKED del bot).

1
Cuando se crea un deal

SOLO cuando el contacto llega a fase BOOKED en el bot (demo agendada). Nunca antes. No crear deals para leads que aun no agendaron.

2
Deal stages

Todos manuales excepto "Visita Agendada" que se crea automaticamente al generar el deal. El equipo comercial avanza manualmente los stages.

3
Owner assignment

El bot NO asigna owner a contactos ni deals. Cuando el lead llega a BOOKED o se hace handoff, se asigna a Gisela manualmente.

4
Property custom: fecha_visita

Se puebla automaticamente al crear el deal con la fecha de la demo agendada. Permite al equipo ver de un vistazo cuando es la proxima demo.

5
Cotizaciones

Usar la herramienta de Cotizaciones de HubSpot para enviar links profesionales de pago al cliente despues de la demo.

REGLA CRM

Lead = siempre (cada contacto es un lead).

Deal = solo BOOKED (cuando hay demo agendada).

Owner del bot = nadie (el bot nunca se asigna como owner).

Owner BOOKED/handoff = Gisela.

Deal stages = solo manuales excepto Visita Agendada.

5.6 Manual Tecnico para el Equipo

Reglas operativas extraidas del proceso comercial. Cada miembro del equipo debe seguir estas reglas al interactuar con contactos en HubSpot.

Llamadas
Registro de Llamadas: SIEMPRE registrar el resultado al terminar la llamada. Sin registro = la llamada no existio para el CRM.
WhatsApp
Bandeja de HubSpot: Usar siempre la bandeja de HubSpot para WhatsApp para mantener el historial vinculado al contacto. No usar WhatsApp personal.
Secuencias
No correos manuales a leads frios: Usar Secuencias personalizadas de HubSpot. Los correos manuales no escalan y no se trackean.
Demos
Show vs No-Show: OBLIGATORIO marcar "Completada" o "No asistio" despues de cada demo. Esto alimenta las metricas de conversion y permite seguimiento automatico.
Cotizaciones
Herramienta de Cotizaciones: Usar siempre la herramienta nativa de HubSpot para enviar links profesionales de pago. Nunca enviar montos por WhatsApp o email sin cotizacion formal.

5.7 Intercom Backfill

COMPLETADO 14 de marzo 2026

Migracion one-time de datos historicos de Intercom a HubSpot. Intercom era el sistema de soporte/chat anterior de Sellerfy y contenia datos valiosos de comportamiento de usuarios que no existian en HubSpot.

5,617
Contactos en backup Intercom
4,045
Matched en HubSpot por email
897
Paises normalizados

Campos poblados

app_signup_date
app_last_seen
first_referrer
browser_name
os_name
city
region_name
country (normalizado)
intercom_id

Normalizacion de paises

El backup de Intercom contenia variantes inconsistentes de nombres de paises. Se implemento normalizacion automatica para 897 contactos:

mexico, México, mexíco, mx, mex  →  Mexico
peru, Perú                       →  Peru
colombia, co                     →  Colombia
us, usa, estados unidos, u.s.    →  United States
españa, spain                    →  Spain
brasil, brazil                   →  Brazil

Detalles tecnicos

Script: intercom_backfill.py

Fuente: Backup JSON de Intercom (~/Downloads/intercom-backup-2026-03-14.json)

Match: Por email (lowercase, stripped). Solo actualiza campos vacios en HubSpot (nunca sobrescribe).

Modo seguro: Dry run por defecto. Requiere --apply para ejecutar actualizaciones.

API: HubSpot Search API + Batch Update (chunks de 100 contactos).

5.8 LTV y Funnel Stage (Backfill)

COMPLETADO 14 de marzo 2026

Calculo masivo de Lifetime Value, duracion de cliente, y etapa de funnel para todos los contactos de HubSpot. Combina datos de suscripciones e invoices de Stripe con lifecycle stages de HubSpot.

187
Contactos con LTV calculado
248
Contactos con months_as_customer
6,965
Contactos con funnel_stage (100%)

Como se calcula el LTV

1
Se obtienen TODAS las suscripciones del cliente en Stripe (activas, canceladas, incomplete_expired).
2
Se obtienen TODOS los invoices pagados (status=paid) del cliente via Stripe API.
3
Se suman todos los amount_paid de cada invoice (en centavos, convertido a dolares). Este es el LTV real, no estimado.
4
months_as_customer se calcula desde el start_date mas temprano hasta canceled_at (o la fecha actual si esta activo). Minimo 1 mes.

Detalles tecnicos

Script: ltv_backfill.py

APIs: Stripe Subscriptions + Invoices + HubSpot Search + Batch Update.

Match: Por email (primario) o stripe_customer_id (fallback). Solo actualiza campos vacios.

Funnel stage: Se asigna a TODOS los contactos (6,965). Los que tienen datos de Stripe usan la logica combinada; los que no, usan solo lifecycle stage.

Modo seguro: Dry run por defecto. Requiere --apply.

5.9 Guia Operativa del Portal HubSpot

HubSpot tiene tres areas principales que el equipo comercial debe dominar: Contactos, Deals y Leads. Cada area tiene un proposito diferente y reglas especificas de operacion. Esta guia detalla como funciona cada una, como esta configurada en Sellerfy, y como operarla dia a dia.

A. Area de Contactos

Los contactos son la base de todo el CRM. Cada persona que interactua con Sellerfy tiene un registro de contacto unico que centraliza toda su informacion: datos personales, historial de interacciones, propiedades custom, lifecycle stage, y actividad en la plataforma.

1

Como se crean contactos

Se crean automaticamente desde tres fuentes: (1) el bot de WhatsApp crea el contacto cuando alguien escribe por primera vez, (2) formularios en sellerfy.ai via Memberstack, (3) importaciones manuales del equipo. Nunca deben crearse contactos duplicados — el bot verifica por telefono y el sistema verifica por email.

2

Propiedades clave por contacto

Ademas de nombre, email y telefono, cada contacto tiene: lifecyclestage (etapa en el funnel), stripe_subscription_status (estado de pago), mrr (ingresos mensuales), funnel_stage (etapa calculada), ltv (valor de vida), mas las 12 custom properties detalladas en la seccion 5.3.

3

Vistas recomendadas

Configurar vistas filtradas para trabajo diario: "Leads sin owner" (contactos huerfanos), "Clientes activos" (lifecycle=customer), "Churn reciente" (lifecycle=churn, cambiado en ultimos 30 dias), "Trials activos" (trial_end_date > hoy). Estas vistas permiten acceder rapidamente a los segmentos que requieren accion.

4

Operacion dia a dia

Revisar contactos recientes en el kick-off matutino. Verificar que cada contacto nuevo tenga: nombre, pais, marketplace, telefono. Completar campos faltantes despues de cada interaccion. Asignar owner cuando el contacto esta calificado. Nunca dejar contactos sin owner por mas de 24 horas si tienen actividad reciente.

Regla: Un contacto sin datos completos es un contacto muerto. Si hablaste con alguien y no actualizaste su ficha inmediatamente, la informacion se pierde. HubSpot es la memoria colectiva del equipo — si no esta ahi, no existio.

B. Area de Deals (Oportunidades)

Los deals representan oportunidades comerciales concretas — no prospectos generales, sino oportunidades reales de cerrar una venta. En Sellerfy, un deal tiene reglas estrictas de creacion y gestion.

1

Cuando se crea un deal

UNICAMENTE cuando hay demo agendada (fase BOOKED del bot). Nunca antes. No crear deals para leads que aun no agendaron. El bot lo crea automaticamente al detectar que el contacto confirmo una demo. El deal se crea con stage "Visita Agendada" y la propiedad custom fecha_visita poblada con la fecha de la demo.

2

Pipeline stages

El pipeline de deals tiene 8 etapas ordenadas segun el flujo real de ventas:

Demo/BANT — Automatica al crear deal (demo agendada)
Negociacion — Post-demo, discusion de pricing/plan
Trial — Periodo de prueba activo
Contrato Enviado — Quote/cotizacion enviada, esperando firma
Cerrado Ganado — Cliente pago exitosamente
Cerrado Perdido — No convirtio, registrar razon
No-Show — Lateral: no asistio a la demo
Repesca — Lateral: reactivacion de deals perdidos/no-show
3

Owner assignment

El bot NO asigna owner a contactos ni deals (se queda sin asignar). Cuando el lead llega a BOOKED o se hace handoff humano, el equipo asigna a Gisela como owner manualmente. Esto asegura que solo se asignen owners a oportunidades calificadas y que el equipo no pierda tiempo con asignaciones prematuras.

4

Operacion dia a dia

Revisar el pipeline diariamente en la vista Kanban. Verificar deals estancados (mas de 5 dias en el mismo stage sin actividad). Despues de cada demo: mover a "Demo Completada" o marcar como "Perdido" con razon. Enviar Quote via herramienta nativa de HubSpot, nunca por WhatsApp informal. Registrar monto del deal al enviar cotizacion.

Regla cardinal: Lead = siempre (cada contacto es un lead). Deal = solo BOOKED. No inflar el pipeline con deals de leads que no han agendado demo — esto distorsiona las metricas y crea ruido en los reportes.

C. Area de Leads (Objeto Lead de HubSpot)

HubSpot tiene un objeto nativo "Lead" separado de contactos, disenado para gestionar el proceso de calificacion antes de que un contacto se convierta en oportunidad. En Sellerfy, los leads se generan automaticamente desde multiples canales y requieren gestion activa.

1

Fuentes de leads

Los leads entran por cuatro canales principales: (1) Google Ads → landing page → formulario Memberstack, (2) WhatsApp organico → bot de nurturing crea lead automaticamente, (3) Outreach proactivo → el bot contacta leads de formulario via outreach.py (solo cold_leads), (4) Referidos → creacion manual por el equipo.

2

Calificacion de leads

El bot extrae datos de la conversacion automaticamente via extractor.py (Haiku): nombre, empresa, pais, marketplace, numero de SKUs, facturacion estimada, dolor principal. Con estos datos el equipo califica: facturacion >$5k + experiencia >1 ano = sweet spot. Leads <$5k se orientan a self-service.

3

Estado de leads

Cada lead tiene un estado que refleja donde esta en el proceso: Nuevo (recien ingresado), Contactado (SDR o bot ya respondio), Calificado (cumple criterios para demo), Demo agendada (deal creado), No calificado (no cumple perfil o no tiene interes). El SDR es responsable de mover leads entre estados.

4

Operacion dia a dia

En el kick-off matutino: revisar leads nuevos del dia anterior, verificar si el bot ya los contacto, completar datos faltantes. Priorizar leads con actividad reciente (abrieron email, visitaron pricing). No dejar leads nuevos sin contactar por mas de 4 horas — la velocidad de respuesta es el predictor #1 de conversion. Usar la vista "Mis leads" filtrada por status para organizar el trabajo.

Outreach automatico: El modulo outreach.py revisa HubSpot cada hora buscando leads de formulario que aun no han sido contactados. Solo contacta cold_leads (nunca clientes ni trials). Envia template de WhatsApp via Twilio y crea la conversacion en Chatwoot automaticamente.

Resumen de reglas operativas criticas

1. Registro de llamadas: SIEMPRE resultado + notas + proximo paso en HubSpot.
2. WhatsApp: SIEMPRE desde bandeja HubSpot, nunca desde telefono personal.
3. Correos a leads frios: SIEMPRE via Secuencias, nunca manuales.
4. Post-demo: OBLIGATORIO marcar "Completada" o "No asistio".
5. Cotizaciones: SIEMPRE via herramienta Quotes de HubSpot, nunca informal.
6. Deals: SOLO crear al agendar demo (BOOKED), nunca antes.
7. Owner: Bot nunca asigna. BOOKED/handoff se asigna a Gisela.
8. Datos: Si no estan en HubSpot con info completa, el trabajo no se hizo.

5.10 Mapa Completo de Propiedades del Contacto

Cada contacto en HubSpot tiene 105 propiedades custom visibles (47 adicionales archivadas de herramientas legacy como Intercom, PhantomBuster y ZeroBounce) que se llenan automaticamente por el bot, Stripe, analytics, o manualmente por el equipo. Esta seccion las organiza por categoria para que sepas exactamente que representa cada campo, quien lo llena, y como afecta el proceso comercial.

Datos Basicos del Seller

Se llenan automaticamente cuando el bot extrae informacion de la conversacion, o cuando el seller llena un formulario web.

Propiedad Tipo Valores posibles Quien lo llena Para que sirve
firstname texto Nombre del seller Bot (extractor), Formulario Personalizar conversaciones, crear deals, notas
lastname texto Apellido Bot (extractor), Formulario Nombre completo en deals y notas
phone texto (E.164) +521XXXXXXXXXX Bot (al crear contacto) Clave primaria — el bot busca contactos por telefono
email texto correo@ejemplo.com Bot (extractor), Formulario Clave para unir con Stripe, dedup de meetings, comunicacion
company texto Nombre de la empresa/tienda Bot (extractor), Formulario Se usa para nombrar deals: "Demo - Nombre (Empresa)"
country texto Mexico, Colombia, Chile, etc. Bot (extractor), Intercom backfill Contexto geografico para el equipo comercial

Propiedades Comerciales (Custom)

Estas son las propiedades que el bot extrae de la conversacion. Son criticas para calificar al lead y preparar la demo.

Propiedad Valores Quien lo llena Impacto en el proceso
marketplace Amazon, Mercado Libre, Ambos, No Vendo en Marketplaces Bot (extractor) Gate de avance: obligatorio para pasar de DISCOVERY a INFORMING. Sin marketplace, el bot no avanza.
tipo_seller Seller, Marca Propia, Agencia, Arbitraje, Dropshipping Bot (extractor) El bot adapta su tono y ejemplos segun el tipo de seller
motivo_de_interes Texto libre (dolor principal del seller) Bot (extractor) Gate de avance: obligatorio para pasar de DISCOVERY a INFORMING. La demo debe atacar este dolor.
rango_facturacion <5k, 5k-50k, >50k USD/mes Bot (extractor) Califica al seller. No es lo mismo un seller nuevo que uno de >$50k. Se copia al deal.
experiencia_seller <1 ano, 1-5 anos, >5 anos Bot (extractor) Contexto para la demo: un principiante necesita mas guia, un experto quiere profundidad
annualrevenue Numero (facturacion mensual en USD) Bot (extractor) Se usa para calcular el amount del deal
numero_de_skus Numero Bot (extractor) Tamano de la operacion. Se copia a la descripcion del deal.
herramientas_actuales Texto libre (Helium 10, Excel, ninguna, etc.) Bot (extractor) Permite preparar battlecard relevante para la demo
url_amazon URL de la tienda en Amazon Bot (extractor) Permite investigar al seller antes de la demo
url_mercado_libre URL de la tienda en Mercado Libre Bot (extractor) Permite investigar al seller antes de la demo
origen Web, Instagram, GWS, LinkedIN, Referido Interno, Nestor, Natalia, Procolombia, SmartBeemo, CCCE, Database Marketing Manual / Formulario Fuente de origen del contacto. Se copia al deal como origen_deal. Critico para medir ROI de canales.

Propiedades de Suscripcion (Stripe Sync)

Estas propiedades se actualizan automaticamente cada dia a las 6am UTC por stripe_sync.py. Son la fuente de verdad para saber si alguien es cliente, cuanto paga, y su estado de suscripcion.

Propiedad Valores Impacto
stripe_subscription_status active, trialing, canceled, incomplete_expired, past_due LA propiedad mas importante. Es la fuente de verdad primaria para clasificar el perfil del contacto. active = customer, canceled = churn, past_due = customer at risk.
plan_name Sellerfy Lite, Sellerfy Growth, Sellerfy Scale, Sellerfy Pro, Sellerfy Core, etc. Indica que plan tiene contratado. Se muestra al bot para dar soporte contextual y se envia en tickets.
mrr Numero (USD) Monthly Recurring Revenue del contacto. Se usa para reportes de ingresos y conversion GCLID.
arr Numero (USD) Annual Recurring Revenue. MRR × 12 para planes mensuales, o el monto anual directo.
subscription_start_date Fecha Cuando inicio la suscripcion. Se usa para calcular antiguedad y para GCLID conversion time.
cancel_at_date Fecha Fecha de cancelacion. Solo se llena para contactos en churn.
stripe_customer_id cus_XXXXXXXXXX ID unico de Stripe. Clave para unir datos entre Stripe y HubSpot.
subscription_amount Numero (USD) Monto de la suscripcion actual. Fallback para conversion value de GCLID.

Propiedades de Producto (App Sellerfy)

Estas se llenan automaticamente desde la app (app.sellerfy.ai) cuando el seller conecta su marketplace o tiene actividad en la plataforma.

Propiedad Tipo Impacto
memberstack booleano Si es true, el contacto se registro en la web via Memberstack. Clasifica como registered.
memberstack_created_at fecha Fecha de registro en Memberstack. Su existencia clasifica como registered.
trial_end_date fecha Si es futuro → trial_active. Si ya paso → trial_expired. Determina el modo del bot.
amazon_connected booleano Indica si conecto su cuenta de Amazon. Clave para onboarding.
mercadolibre_connected booleano Indica si conecto su cuenta de Mercado Libre.
amazon_has_preview booleano Si es true, el seller ya tiene preview de datos. Clasifica como registered.
amazon_products_count numero Cantidad de productos en Amazon. Se usa en clasificacion de perfil.

Propiedades de Adquisicion y UTMs

Estas propiedades rastrean de donde vino el contacto. Algunas las llena HubSpot automaticamente, otras se llenan por el frontend o por analytics_sync.py.

Propiedad Quien lo llena Para que sirve
hs_analytics_source HubSpot (automatico) Canal de adquisicion: PAID_SEARCH, ORGANIC_SEARCH, DIRECT_TRAFFIC, SOCIAL_MEDIA, REFERRALS, etc.
acquisition_channel analytics_sync.py Version simplificada: Google Ads, Organic Search, Direct, Social Media, Referral, Email
gclid Frontend (URL params) Google Click ID. Se usa para subir conversiones offline a Google Ads y medir ROI real.
utm_source / utm_medium / utm_campaign Frontend, Intercom backfill Parametros UTM para atribucion granular de campanas
hs_analytics_num_visits HubSpot (automatico) Numero de visitas al sitio. Si es >1, el bot lo menciona al seller como senal de interes.
first_conversion_event_name HubSpot (automatico) Primera accion de conversion: Conecta tu Cuenta, meeting, etc. El bot lo usa para contextualizar.

Para el SDR: como usar estas propiedades

Antes de cada demo, abre el contacto en HubSpot y revisa: marketplace, rango_facturacion, motivo_de_interes, experiencia_seller, y herramientas_actuales. Estos 5 campos te dan el 80% del contexto que necesitas para personalizar la presentacion. Si el contacto tiene url_amazon o url_mercado_libre, abre su tienda y busca oportunidades concretas para mencionar durante la demo.

5.11 Lead Status: Estados de Calificacion

Mientras el Lifecycle Stage indica la madurez general del contacto (Lead, MQL, Customer), el Lead Status (hs_lead_status) indica la etapa operativa dentro del proceso de ventas. Se actualiza automaticamente con cada transicion de fase del bot.

NEW

Nuevo

Contacto recien creado. Aun no hay conversacion significativa. Fase bot: GREETING.

CONNECTED

Conectado

Ya hay conversacion activa, el seller respondio. Fase bot: DISCOVERY o ESCALATED.

IN_PROGRESS

En progreso

El lead esta recibiendo informacion o ya se le envio link de demo. Negociacion activa. Fase bot: INFORMING o PROPOSING.

OPEN_DEAL

Deal abierto

Tiene demo agendada o deal creado en el pipeline. Fase bot: BOOKED. El SDR debe tomar control.

ATTEMPTED_TO_CONTACT

Intento de contacto

Se le envio un follow-up o mensaje de re-engagement pero no respondio aun. Se activa en follow-ups automaticos y en no-shows.

BAD_TIMING

Mal timing / Perdido

Inactivo por 14 dias + 2 follow-ups sin respuesta = LOST. El bot lo marca como BAD_TIMING. Puede reactivarse si el seller vuelve a escribir.

UNQUALIFIED

No calificado

Asignacion manual. El seller no cumple con criterios minimos (no vende en marketplaces, no tiene tienda activa, etc.).

WIN_BACK

Ex-Cliente (Reactivacion)

Ex-cliente que cancelo su suscripcion. Lead caliente — ya conoce el producto, ya pago, ya califico. Ideal para campanas de reactivacion. Se asigna automaticamente a contactos con lifecycle Churn. Filtrar por lead_status = WIN_BACK para ver la lista completa de oportunidades de reactivacion (211 contactos).

Flujo automatico completo

NEW → CONNECTED → IN_PROGRESS → OPEN_DEAL
                                        ↓
                              (sin respuesta 14d + 2 follow-ups)
                                        ↓
                                    BAD_TIMING

Ruta alterna: cualquier fase → ATTEMPTED_TO_CONTACT (follow-up enviado)

Ruta Churn:  Customer cancela suscripcion → WIN_BACK (ex-cliente para reactivacion)

5.12 Propiedades de Deals (Detalle Completo)

Cuando un contacto llega a fase BOOKED (meeting detectada), el bot crea automaticamente un deal con 14 propiedades. El SDR debe revisarlas antes de la demo para estar preparado.

Propiedad Ejemplo Como se llena
dealname Demo - Juan Rodriguez (TiendaMX) Automatico: "Demo - {nombre} ({empresa})"
dealstage appointmentscheduled Automatico: siempre inicia en "Cita Agendada". El SDR mueve manualmente despues de la demo.
dealtype newbusiness Automatico: siempre "Nuevo Negocio"
amount 15000 Automatico: se calcula de la facturacion mensual reportada por el seller
description Marketplace: Amazon | SKUs: 50 | Revenue: $15k | Pain: margenes bajos... Automatico: resumen completo con marketplace, SKUs, revenue, dolor, herramientas, experiencia y origen
hs_next_step Demo 15 Mar 2026 10:00am Automatico: fecha y hora del meeting, o "Pendiente de agendar demo"
marketplace_deal Amazon Copiado del contacto. Permite filtrar deals por marketplace.
pain_principal No se su rentabilidad real por producto Copiado del contacto. El SDR debe centrar la demo en este dolor.
origen_deal GWS Fuente de origen. Si no hay origen manual, se usa hs_analytics_source.
noshow_count 0, 1, 2, 3 Se incrementa cada vez que el seller no asiste a la demo. A los 3 no-shows, se deja de intentar.

Reglas de creacion de deals

  • • Solo se crea deal cuando el contacto tiene un meeting SCHEDULED en HubSpot
  • • Si el contacto ya tiene un deal, NO se crea otro (dedup automatico)
  • • El deal se asocia automaticamente al contacto y al meeting
  • • Se crea una nota con el resumen completo de la conversacion bot-seller

Que hace el SDR con el deal

  • • Revisar description y pain_principal antes de la demo
  • • Despues de la demo: mover al stage correspondiente (manualmente)
  • • Registrar resultado: "Completada" o "No asistio" en el meeting
  • • Si hay cierre: asegurar que el Quote este enviado y la suscripcion activa

5.13 Tickets y Meetings: Propiedades y Reglas

Tickets de Soporte (creados por el bot)

El bot crea tickets automaticamente en dos escenarios: (1) cuando escala una pregunta que no puede resolver, y (2) cuando un customer_active o churn escribe por WhatsApp.

Propiedad Ejemplo Detalle
subject Soporte WhatsApp - Juan Rodriguez Formato fijo segun contexto: "Escalacion Bot" o "Soporte WhatsApp"
hs_ticket_priority HIGH Clasificacion inteligente por keywords: HIGH (no puedo entrar, cobro, error), MEDIUM (no veo datos, lento, sincronizar), LOW (default)
ticket_category conexion Categoria: conexion, datos, billing, feature_request, otro
seller_plan growth Plan del seller: lite, growth, scale, trial, none
canal_origen_ticket whatsapp_bot Siempre whatsapp_bot para tickets creados por el bot

Meetings (reuniones agendadas)

Los meetings se crean en HubSpot cuando el seller agenda a traves de Cal.com (link enviado por el bot). El bot lee estas propiedades para detectar booking, enviar recordatorios, y detectar no-shows.

Propiedad Valores Que activa
hs_meeting_outcome SCHEDULED, NO_SHOW, COMPLETED SCHEDULED → bot avanza a BOOKED y crea deal. NO_SHOW → bot inicia follow-up de no-show (hasta 3 intentos).
hs_meeting_start_time 2026-03-15T10:00:00Z El bot envía recordatorio ~2 horas antes. Se muestra en el deal como hs_next_step.
hs_meeting_title Demo Sellerfy - Juan Rodriguez El bot actualiza el body del meeting con el nombre del contacto/empresa.

Obligacion del SDR despues de cada meeting

Despues de cada demo, el SDR debe ir al meeting en HubSpot y marcarlo como "Completada" o "No asistio". Si marca "No asistio", el bot detecta el NO_SHOW automaticamente y comienza el flujo de re-agendamiento (hasta 3 intentos, separados por 24h, dentro de horario 8am-8pm CDMX). Si no se marca nada, los automatismos no se activan.

5.14 Mapa de Automatizaciones: Que Pasa Cuando

Esta seccion mapea de forma exhaustiva todas las automatizaciones que afectan HubSpot. Cada fila responde: "cuando pasa X, que se actualiza en HubSpot?"

Acciones del Bot → HubSpot

Evento Que pasa en HubSpot
Primer mensaje de un numero nuevo Se busca el contacto por telefono. Si no existe, se crea con lifecyclestage=lead y hs_lead_status=NEW.
Cada mensaje procesado Se extraen datos de la conversacion (nombre, email, marketplace, dolor, etc.) y se actualizan las propiedades del contacto.
Transicion de fase (GREETING → DISCOVERY, etc.) Se actualiza lifecyclestage y hs_lead_status segun la tabla de mapeo. Se crea una nota con el resumen de la transicion.
Meeting detectada (BOOKED) lifecycle=opportunity, hs_lead_status=OPEN_DEAL. Se crea deal con 14 propiedades, se asocia al meeting, se crea nota con resumen completo.
Bot escala ("confirmo con el equipo") Se crea ticket con prioridad inteligente, categoria, plan, y canal de origen. Se asocia al contacto.
Handoff a ventas (seller pide hablar con humano) Se asigna hubspot_owner_id al contacto y al deal (Miguel o Jose, segun asignacion aleatoria del bot).
No-show detectado Deal se mueve a etapa No-Show, noshow_count se incrementa, hs_lead_status=ATTEMPTED_TO_CONTACT.
Contacto marcado LOST (14 dias + 2 follow-ups) lifecyclestage=lead (retrocede), hs_lead_status=BAD_TIMING.
Follow-up enviado hs_lead_status=ATTEMPTED_TO_CONTACT.

Stripe Sync → HubSpot (Diario, 6am UTC)

Estado en Stripe Que se actualiza en HubSpot
Suscripcion activa lifecyclestage=customer, stripe_subscription_status=active, mrr, arr, plan_name, subscription_amount, subscription_start_date
Suscripcion cancelada lifecyclestage=Churn (1298051956), stripe_subscription_status=canceled, mrr=0, arr=0, cancel_at_date
Pago vencido (past_due) lifecyclestage=customer (se mantiene), stripe_subscription_status=past_due. El bot lo trata como customer_active pero esta en riesgo.

HubSpot → Comportamiento del Bot

Estado en HubSpot Como cambia el bot
Meeting SCHEDULED detectada El bot avanza automaticamente a BOOKED sin importar la fase actual del contacto.
stripe_subscription_status=active Bot entra en modo soporte. NO vende, NO ofrece demo, NO menciona planes. Solo resuelve dudas.
stripe_subscription_status=canceled Bot entra en modo win-back. Empatico, pregunta que paso, escucha, y solo ofrece demo si hay apertura.
trial_end_date en el futuro Bot entra en modo onboarding. Ayuda a sacar maximo provecho del trial, NO presiona para comprar.
trial_end_date ya paso Bot entra en modo reactivacion. Pregunta por que no continuo, ofrece ayuda para retomar.
memberstack=true o has_preview=true Bot entra en modo activacion. Ayuda a conectar marketplace y explorar la plataforma.
Contacto tiene firstname Bot salta GREETING y empieza directamente en DISCOVERY (ya tiene nombre, no necesita presentarse).
Contacto creado recientemente (formulario web) Outreach polling lo detecta, envia template de bienvenida por WhatsApp, crea conversacion automaticamente.

Procesos automatizados (crons)

stripe_sync.py

Diario 6am UTC. Sincroniza suscripciones de Stripe a HubSpot. Actualiza MRR, plan, status, lifecycle.

analytics_sync.py

Enriquece acquisition_channel para contactos sin atribucion. Sube conversiones GCLID a Google Ads.

/follow-ups (cron)

Revisa conversaciones stale (>48h), envia follow-ups (max 2), marca LOST tras 14 dias.

/check-bookings (cron)

Revisa si contactos en PROPOSING/INFORMING agendaron demo. Si si, avanza a BOOKED y crea deal.

/meeting-reminders (cron)

Envia recordatorio por WhatsApp ~2 horas antes de cada demo agendada. Horario: 7am-8pm CDMX.

/noshow-followups (cron)

Detecta no-shows, mueve deal a etapa No-Show, envia mensajes de re-agendamiento (max 3 intentos). Horario: 8am-8pm CDMX.

/ces-survey (cron)

Envia encuesta de satisfaccion a contactos ESCALATED resueltos. Horario: 9am-7pm CDMX.

/retry-syncs (cron)

Reintenta actualizaciones de HubSpot que fallaron. Las fallas se guardan en SQLite y se reintentan periodicamente.


Seccion 6

Analytics y Data

6.1 Arquitectura del Pipeline de Datos

El pipeline de datos de Sellerfy conecta 5 fuentes en un flujo unificado que alimenta HubSpot como sistema central. Los datos fluyen de izquierda a derecha, desde la captura en la web hasta la optimizacion de campanas en Google Ads.

Web (sellerfy.ai)
  |
  └→ UTM Script (cookie 30d + localStorage)
       |
       └→ Memberstack (metadata)  ⚠ PENDIENTE
            |
            └→ HubSpot (properties del contacto)

Google Ads
  |
  └→ GCLID → Cookie → HubSpot
       |
       └→ gclid_conversions.py → Google Ads Offline Conversions
                                   (cierra el loop de atribucion)

Stripe
  |
  ├→ stripe_sync.py   → HubSpot (suscripciones, MRR, estado, churn)
  |
  └→ ltv_backfill.py  → HubSpot (LTV, months_as_customer, funnel_stage)

GA4
  |
  └→ analytics_sync.py → Reportes diarios + enrichment

Intercom (legacy)
  |
  └→ intercom_backfill.py → HubSpot (datos historicos, one-time)

Principios del pipeline

HubSpot como fuente de verdad: Todos los scripts escriben a HubSpot. Nunca se duplica data entre sistemas.

Idempotencia: Todos los scripts verifican si el campo ya tiene valor antes de escribir. Se pueden ejecutar multiples veces sin efecto secundario.

Dry run por defecto: Todos los scripts de backfill requieren --apply explicitamente. Sin esa flag, solo reportan lo que harian.

Batch API: Todas las actualizaciones a HubSpot usan Batch Update en chunks de 100 contactos para respetar rate limits.

6.2 UTM Tracking

Script JavaScript inyectado en sellerfy.ai (via Lovable) que captura parametros de atribucion de marketing. Funciona en cada visita a la web, persiste datos en dos capas de almacenamiento y expone una API para que otros sistemas lean los valores.

Parametros capturados

utm_source Origen del trafico (google, facebook, newsletter)
utm_medium Medio (cpc, organic, email, social)
utm_campaign Nombre de campana
utm_term Keyword de busqueda pagada
utm_content Variante de anuncio (A/B testing)
gclid Google Click ID (auto-generado por Google Ads)
referrer URL de donde vino el usuario
landing_page URL completa de la pagina de aterrizaje

Persistencia y API

Cookie (30 dias)

Se actualiza en cada visita con nuevos parametros (last touch). Se borra automaticamente despues de 30 dias de inactividad.

localStorage (permanente)

Guarda el primer touch de forma permanente. Nunca se sobrescribe: preserva la atribucion original del usuario.

API JavaScript
window.SellerfyUTM.get() // ultimo touch
window.SellerfyUTM.getFirstTouch() // primer touch

Verificacion rapida

// 1. Abrir en el navegador:
sellerfy.ai/?utm_source=test&utm_medium=cpc&gclid=test123

// 2. Abrir DevTools → Console

// 3. Ejecutar:
SellerfyUTM.get()
// → {utm_source: "test", utm_medium: "cpc", gclid: "test123", ...}

6.3 GCLID — Pipeline de Conversiones Offline

El pipeline de GCLID (Google Click ID) es la pieza que cierra el loop de atribucion entre Google Ads y las ventas reales de Sellerfy. Permite que Google Ads sepa exactamente que clics generaron clientes pagando, optimizando automaticamente el bidding para encontrar mas usuarios similares.

Como funciona el flujo completo

1
Clic en Google Ads

Un seller hace clic en un anuncio de Google Ads. Google genera automaticamente un GCLID unico (ej. EAIaIQobChMI...) y lo agrega como parametro ?gclid=... a la URL de destino.

2
Captura por UTM Script

El script UTM en sellerfy.ai detecta el parametro gclid en la URL y lo guarda en cookie (30d) + localStorage (permanente). El GCLID persiste incluso si el usuario navega a otras paginas.

3
Almacenamiento en HubSpot

Cuando el usuario se registra (via Memberstack), el GCLID se envia como property del contacto a HubSpot. Esta parte esta PENDIENTE.

4
El usuario se convierte en cliente

Pasan dias o semanas. El lead paga su primera suscripcion en Stripe. stripe_sync.py detecta la suscripcion activa y marca al contacto como Customer en HubSpot.

5
Upload de conversion offline

gclid_conversions.py busca en HubSpot todos los Customers con GCLID, verifica cuales no se han subido aun (via gclid_uploaded.json), y sube la conversion a Google Ads asociada al GCLID original con el valor del MRR como conversion value.

6
Google Ads optimiza Smart Bidding

Google Ads recibe la conversion con el GCLID y sabe que ese clic genero un cliente real con valor X. El algoritmo de Smart Bidding usa esta informacion para pujar mas agresivamente por usuarios con perfiles similares.

Detalles tecnicos

Script: gclid_conversions.py

API: Google Ads ConversionUploadService.UploadClickConversions

Conversion Action: "Contacts - Google Ads" (tipo UPLOAD_CLICKS)

Conversion Action ID: 7516552264

Customer ID: 8226147452

Ejecucion: Via uv run en el entorno de ~/google-ads-mcp

YAML config: ~/google-ads-mcp/env/google-ads.yaml

Anti-duplicados

Tracker: gclid_uploaded.json (en directorio del script)

Formato: {gclid: {email, uploaded_at, value}}

Logica: Antes de subir, verifica si el GCLID ya esta en el tracker. Si esta, lo salta.

Valor de conversion: MRR del contacto, o subscription_amount, o $29 default.

Fecha de conversion: subscription_start_date del contacto, o createdate como fallback.

Busca tanto Customers como Churns: Un churn que alguna vez fue customer tambien es una conversion valida para Google Ads.

Integracion con analytics_sync.py

gclid_conversions.py se ejecuta automaticamente como parte del sync diario de analytics_sync.py con apply=True. Tambien puede ejecutarse de forma standalone con python3 gclid_conversions.py --apply.

6.4 Stripe Sync

Sincronizacion diaria de datos de suscripciones entre Stripe y HubSpot. Corre como cron en el droplet de produccion. Es la unica fuente de verdad para el estado de pago de cada cliente.

Que sincroniza

mrr Monthly Recurring Revenue (normalizado a mensual)
arr Annual Recurring Revenue (MRR x 12)
plan_name Nombre del plan (Starter, Lite, Core, Pro, Scale, Growth, Essential)
subscription_amount Monto crudo de la suscripcion (sin normalizar a mensual)
stripe_subscription_status active, trialing, canceled, incomplete_expired
subscription_start_date Fecha de inicio de la suscripcion
cancel_at_date Fecha de cancelacion (solo para churns)
lifecyclestage customer (si activo) o Churn/1298051956 (si cancelado)

Calculo de MRR

El MRR se normaliza a valor mensual considerando el intervalo de facturacion y descuentos aplicados:

// Normalizacion por intervalo
mensual         → monto directo
trimestral (3m) → monto / 3
semestral (6m)  → monto / 6
anual           → monto / 12
semanal         → (monto * 52) / 12
diario          → (monto * 365) / 12

// Descuentos
percent_off → total * (1 - pct/100)
amount_off  → max(0, total - amount)

Planes de producto

Sellerfy Starterprod_TMaNb5ZZYqPLZM
Sellerfy Liteprod_TMaPFa27sdZTWd
Sellerfy Lite (new)prod_U5TAVUJOan6iJj
Sellerfy Essentialprod_U5TNBRs3g7bLBY
Sellerfy Coreprod_Rj0HD05VbBx2Ir
Sellerfy Proprod_TMaQE5GgOY84fa
Sellerfy Growthprod_U5S2ygGWKOziZh
Sellerfy Scaleprod_Twwbm0ZnH5oPvM

Operacion diaria

Script: stripe_sync.py

Schedule: Cron diario 6am UTC en el droplet

Servidor: 134.199.231.196

Key: STRIPE_SYNC_KEY (variable de entorno)

Servicio: Standalone, NO importado por app.py

Deteccion de churn

Logica: Busca todos los contactos con lifecyclestage=customer en HubSpot. Si su email NO tiene suscripcion activa en Stripe, se marca como Churn.

Lifecycle change: Requiere clear + set (HubSpot no permite retroceder directamente).

Preserva datos: Al marcar churn, se actualiza plan_name, mrr, arr, cancel_at_date desde la ultima suscripcion cancelada en Stripe.

6.5 Metricas Clave (Marzo 2026)

24
Clientes activos
$964.72
MRR (USD)
$11,576
ARR (USD)
205
Churned total
69 dias
Lifetime promedio
73%
Churn < 90 dias
6,965
Contactos HubSpot
187
Con LTV calculado

Indicador critico: Churn temprano

El 73% del churn ocurre en los primeros 90 dias. Esto indica que el problema principal no es retener clientes establecidos, sino lograr que los nuevos clientes superen la barrera de adopcion inicial. Las primeras 12 semanas son el periodo critico.

Datos enriquecidos

Enriquecidos con Intercom:4,045 contactos
Paises normalizados:897 contactos
Con LTV calculado:187 contactos
Con months_as_customer:248 contactos
Con funnel_stage:6,965 (100%)

6.6 Scripts y Automatizaciones

Todos los scripts viven en ~/clawd/agents/sellerfy-nurture/. Los scripts de sync se ejecutan automaticamente; los de backfill fueron one-time y ya estan completados.

Script Funcion Schedule Donde corre Status
analytics_sync.py Sync diario: enrichment de contactos + GCLID conversions + reporte GA4 + Google Ads + HubSpot 7am local (LaunchAgent) Mac de Pablo Activo
gclid_conversions.py Upload de conversiones offline a Google Ads via UploadClickConversions API Parte de analytics_sync.py Mac de Pablo Activo (esperando data)
stripe_sync.py Sync Stripe a HubSpot: suscripciones, MRR, ARR, planes, estado, deteccion de churn 6am UTC (cron) Droplet (134.199.231.196) Activo
intercom_backfill.py Backfill Intercom a HubSpot: 9 campos de 4,045 contactos + normalizacion de 897 paises One-time Local Completado
ltv_backfill.py LTV (187 contactos) + months_as_customer (248) + funnel_stage (6,965 = 100%) One-time Local Completado

LaunchAgent de analytics_sync.py

Plist: ~/Library/LaunchAgents/com.sellerfy.analytics-sync.plist

Horario: 7:00 AM hora local, todos los dias

Requiere: HUBSPOT_TOKEN en .env.local, GA4 CLI en ~/.local/bin/ga4, Google Ads SDK en ~/google-ads-mcp

Reportes guardados en: ~/clawd/agents/sellerfy-nurture/reports/analytics_YYYYMMDD.txt

6.7 Google Analytics (GA4)

GA4 mide el trafico y comportamiento de usuarios en sellerfy.ai. Los datos se acceden via un CLI personalizado (ga4) y se incluyen en los reportes diarios de analytics_sync.py.

Configuracion

Property: sellerfy

CLI: ~/.local/bin/ga4

Uso: ga4 sellerfy summary 7 (reporte de 7 dias)

Comandos disponibles

summary — Resumen general (visitas, usuarios, sesiones)
sources — Fuentes de trafico (Google, directo, social...)
funnel — Conversion funnel del sitio web
campaigns — Performance de campanas
realtime — Usuarios activos ahora mismo

6.8 Google Ads

Google Ads es el principal canal de adquisicion pagada de Sellerfy. La integracion con el pipeline de analytics permite atribucion end-to-end desde el clic hasta la suscripcion.

Configuracion de cuenta

Customer ID: 8226147452

Conversiones habilitadas: 5

Conversion principal: "Contacts - Google Ads"

Tipo: UPLOAD_CLICKS (offline)

ID: 7516552264

Atribucion de canales

analytics_sync.py enriquece contactos con acquisition_channel basado en hs_analytics_source de HubSpot:

PAID_SEARCHGoogle Ads
ORGANIC_SEARCHOrganic Search
DIRECT_TRAFFICDirect
SOCIAL_MEDIASocial Media
REFERRALSReferral
EMAIL_MARKETINGEmail
AI_REFERRALSAI Referral
PAID_SOCIALPaid Social

Smart Bidding y conversiones offline

El pipeline GCLID permite que Google Ads optimice el Smart Bidding con conversiones reales. En lugar de optimizar por clics o visitas al sitio, Google Ads puede optimizar por clientes que realmente pagan una suscripcion. Esto cambia fundamentalmente la calidad de los leads generados: Google busca perfiles similares a los que ya convirtieron.

6.9 Pendiente Critico — Conexion Memberstack a HubSpot

PENDIENTE Bloqueador principal del pipeline de atribucion

Sin esta conexion, el loop completo de atribucion esta roto. Los UTMs se capturan en la web pero NO llegan a HubSpot. El pipeline GCLID a Google Ads no tiene data con la cual optimizar el bidding.

Contexto

La web de Sellerfy esta construida en Lovable con Memberstack para autenticacion de usuarios. La integracion entre Memberstack y HubSpot fue construida por Pablo directamente en Lovable (no es Zapier, ni Make, ni un backend custom del CTO). Esto significa que el cambio tambien lo tiene que hacer Pablo en Lovable.

Lo que falta exactamente

1
Leer UTMs al crear contacto en HubSpot

En la integracion de Lovable donde se crea el contacto en HubSpot (al hacer signup con Memberstack), agregar lectura de window.SellerfyUTM.get() y window.SellerfyUTM.getFirstTouch().

2
Enviar como properties del contacto

Incluir en la request a HubSpot: utm_source, utm_medium, utm_campaign, utm_term, utm_content, gclid, referrer (como first_referrer), landing_page.

3
Calcular acquisition_channel

Logica: utm_medium=cpc o gclid presente = Google Ads, utm_medium=organic = Organic Search, etc. Enviar como property acquisition_channel.

Impacto de no completar

Sin atribucion

No se sabe que canal genero cada cliente. Las decisiones de marketing se toman a ciegas.

GCLID sin data

gclid_conversions.py esta activo pero no encuentra contactos con GCLID porque los GCLIDs no llegan a HubSpot.

Smart Bidding ciego

Google Ads no puede optimizar porque no recibe conversiones offline. Se esta pagando por clics sin feedback.

Lo que SI funciona (verificado)

El script UTM en la web funciona correctamente. La captura y persistencia estan listas.

// Verificacion:
// 1. Abrir: sellerfy.ai/?utm_source=test&utm_medium=cpc&gclid=test123
// 2. Console → SellerfyUTM.get()
// → {utm_source: "test", utm_medium: "cpc", gclid: "test123", referrer: "...", landing_page: "..."}

Seccion 7

Soporte

7.1 Protocolo de Atención

El protocolo de soporte de Sellerfy opera en dos niveles claramente definidos, donde la IA resuelve la mayoría de las consultas de forma instantánea y el equipo humano interviene solo cuando es necesario.

0 Nivel 0 — Sofi IA

Atiende el 100% de consultas iniciales automáticamente. Sofi resuelve preguntas sobre precios, planes, seguridad, conexión de marketplace, navegación del dashboard y troubleshooting básico — todo 24/7 sin intervención humana.

1 Nivel 1 — Intervención Humana

Casos complejos o técnicos que Sofi no puede resolver se escalan al equipo humano. Incluye problemas de sincronización persistentes, errores técnicos del dashboard, configuraciones avanzadas y consultoría estratégica.

Principios de Soporte

1

Prioridad absoluta al cliente

Ante cualquier conflicto de agenda, el tiempo del cliente es sagrado. Reorganizar prioridades internas antes de hacer esperar a un cliente.

2

Explicar, no solo enviar links

El link es refuerzo, no respuesta. Siempre dar contexto y explicación primero, y adjuntar el enlace como referencia complementaria.

3

Enfocar hacia valor tangible

Toda solución debe orientarse hacia ahorro de tiempo, seguridad de APIs y rentabilidad — los tres pilares de valor de Sellerfy.

4

Leer siempre la transcripción previa

Antes de responder, revisar la conversación previa de Sofi con el cliente para no repetir preguntas ni solicitar información ya proporcionada.

7.2 Prioridades de Tickets

Prioridad Descripción Ejemplo
Alta Bloqueo total del servicio No puede conectar su cuenta, dashboard inaccesible, error crítico
Media Dudas de facturación o planes Preguntas sobre cobros, cambio de plan, facturación
Baja Sugerencias y solicitudes Feature requests, mejoras sugeridas, ideas

Regla de Inactividad

Cerrar ticket tras 48 horas sin respuesta del cliente, previo envío de un mensaje de cortesía informando el cierre. El cliente puede reabrir en cualquier momento.

7.3 SLAs Completos

Soporte General

Prioridad Primera Respuesta Resolución
Urgente 10 minutos 2 horas
Alta 30 minutos 4 horas
Media 2 horas 8 horas
Baja 4 horas 24 horas

Regla del Bot

Si un cliente pregunta "¿Cuánto tardan en responder?", Sofi debe dar el tiempo de primera respuesta según la categoría del problema. Ejemplo: "Para problemas urgentes, la primera respuesta es en 10 minutos. Para consultas generales, en 2 horas."

7.4 Soporte por Plan

Lite

  • Sofi IA 24/7
  • Soporte por email
  • Sin chat prioritario
  • Sin Account Manager

Growth

  • Sofi IA 24/7
  • Chat prioritario (<24h)
  • 1 llamada mensual estratégica
  • Sin Account Manager

Scale

  • Sofi IA 24/7
  • Account Manager dedicado
  • Consultoría estratégica
  • Soporte premium ilimitado

7.5 Troubleshooting Checklist

Guía paso a paso para resolver los problemas más comunes. Sofi usa esta checklist automáticamente al detectar problemas técnicos.

Problemas Generales

  1. 1 Acceder vía app.sellerfy.ai (URL correcta, no otra dirección)
  2. 2 Cerrar sesión y volver a entrar — soluciona la mayoría de errores de carga
  3. 3 Desactivar bloqueadores de anuncios — ocultan gráficas de ventas y pueden impedir la carga de componentes
  4. 4 Usar Google Chrome — navegador con optimización preferente para Sellerfy

Panel vacío / $0 en el dashboard

  1. 1 Verificar estado de conexión: el logo de Amazon o Mercado Libre debe aparecer en verde
  2. 2 La primera sincronización toma 12-24 horas — es completamente normal ver $0 durante este periodo
  3. 3 Verificar que la tienda tenga publicaciones activas en el marketplace
  4. 4 Verificar que la cuenta no esté en modo vacaciones — Sellerfy no puede sincronizar datos si la tienda está pausada
  5. 5 Si aparece aviso rojo de token expirado: ir a Configuración > Conexiones > Re-conectar

Token expirado

Aviso rojo en Configuración > Conexiones

Hacer clic en Re-conectar y autorizar de nuevo desde la cuenta del marketplace. No se pierden datos y el proceso toma menos de 1 minuto. Los tokens expiran periódicamente por seguridad del marketplace — es un comportamiento normal.

Datos diferentes al marketplace

Esto es correcto y esperado

Sellerfy resta envíos, comisiones e impuestos del monto de venta para mostrarte el Net Profit Real. Por eso las cifras pueden ser menores a lo que muestra el marketplace directamente — eso es tu ganancia REAL, la cifra que realmente importa para tu negocio.

7.6 Que Resuelve Sofi Automaticamente (Level 0)

Sofi IA atiende el 100% de las consultas iniciales sin intervencion humana. Su conocimiento proviene de 13 archivos (5 JSON + 8 Markdown) que forman el Knowledge Base (ver seccion 4.14). Aqui esta el detalle de que tipo de consultas resuelve por si sola y cuales escala.

Sofi resuelve sola

  • Precios, planes y diferencias entre tiers (Lite, Growth, Scale)
  • Seguridad y conexion (APIs oficiales, solo lectura, cifrado, Partners Oficiales)
  • Como conectar marketplace (Amazon SP-API, Mercado Libre API)
  • Navegacion basica del dashboard
  • Troubleshooting nivel basico (checklist de la seccion 7.5)
  • Explicacion de features (Sofi IA, Net Profit Real, Playlists, Monitor)
  • Comparaciones vs competencia (Helium 10, Jungle Scout, Keepa)
  • Garantia de 7 dias, cancelacion, cambio de plan
  • Como instalar la app movil (PWA)
  • Frecuencia de sincronizacion por plan
  • Token expirado (como re-conectar)
  • Datos diferentes al marketplace (explicacion de Net Profit Real)

Sofi escala a humano

  • Problemas de sincronizacion que persisten despues de la checklist
  • Errores tecnicos del dashboard no resueltos con troubleshooting basico
  • Configuraciones avanzadas de la plataforma
  • Consultoria estrategica sobre uso de la plataforma
  • Solicitudes explicitas de hablar con un humano ("quiero hablar con alguien")
  • Preguntas que no estan cubiertas en el Knowledge Base
  • Quejas o insatisfaccion que requieren atencion personalizada
  • Solicitudes de reembolso que requieren verificacion manual

Anti-alucinacion

Cada respuesta de Sofi (generada por Claude Sonnet) pasa por un validador (Claude Haiku) que verifica que los datos factuales coincidan con el Knowledge Base. Si Sofi inventa un precio, una feature inexistente, o un dato que no esta en el KB, el validador lo detecta y lo corrige antes de enviar la respuesta al cliente. Este mecanismo esta implementado en validator.py.

7.7 Flujo Completo de Atencion al Cliente

Cuando un cliente activo o ex-cliente escribe por WhatsApp, el bot sigue un flujo diferente al de un prospecto nuevo. El sistema identifica automaticamente que es un cliente (ver seccion 4.16) y cambia su comportamiento completo.

1

Mensaje llega por WhatsApp

El cliente escribe al numero oficial de Sellerfy (+1 979 432-7797). El mensaje llega via Twilio → Chatwoot → webhook POST al bot.

2

Clasificacion de perfil

El bot consulta HubSpot y ejecuta classify_contact(). Si el resultado es customer_active o churn, se activa el flujo de soporte (no el de ventas).

3

System prompt de soporte

El bot inyecta instrucciones especificas: "Este contacto YA ES CLIENTE ACTIVO. TU ROL: Soporte y atencion al cliente, NO ventas. NO le ofrezcas demo ni planes." Para churn: "TU ROL: Win-back — reconectar con empatia."

4

Respuesta de Sofi + validacion

Claude Sonnet genera la respuesta de soporte. Claude Haiku la valida contra el KB. Si pasa validacion, se envia al cliente. Si no, se corrige automaticamente.

5

Creacion automatica de ticket en HubSpot

Para clientes activos y churn, el bot crea un ticket de soporte en HubSpot automaticamente con prioridad inteligente basada en keywords del mensaje (ver seccion 7.8).

6

Escalacion si necesario

Si Sofi no puede resolver o el cliente pide un humano, el bot hace handoff a Chatwoot asignando la conversacion al equipo humano. La fase conversacional cambia a ESCALATED.

7

Encuesta CES post-resolucion

Despues de que un caso escalado se resuelve (ticket cerrado en HubSpot), el bot envia automaticamente una encuesta de Customer Effort Score para medir la calidad de la atencion.

Diferencia clave vs prospecto

El flujo de soporte nunca intenta vender. No menciona demos, no ofrece planes, no envia links de registro. El unico objetivo es resolver el problema del cliente lo mas rapido posible. Si un cliente activo pregunta por un upgrade, Sofi lo ayuda informativamente pero no presiona.

7.8 Tickets Automaticos en HubSpot

Cuando un cliente activo o ex-cliente escribe al bot, se crea automaticamente un ticket de soporte en HubSpot. La prioridad se determina de forma inteligente analizando el contenido del mensaje con la funcion classify_ticket_priority().

Clasificacion de prioridad por keywords

Prioridad Keywords detectadas Tipo de problema
HIGH no puedo conectar, bloqueo, bloqueado, no funciona, error, no puedo acceder, no carga, no veo datos, $0, panel vacio, token, desconectado, no sincroniza, cuenta bloqueada Bloqueo total del servicio — el cliente no puede usar la plataforma
MEDIUM precio, costo, plan, factura, cobro, pago, cancelar, cambiar plan, upgrade, downgrade, reembolso Dudas de facturacion, cambios de plan o pagos
LOW (cualquier otro mensaje) Consultas generales, feature requests, preguntas informativas

Informacion incluida en el ticket

Datos del contacto

Nombre, telefono, plan activo, MRR, lifecycle stage, pais

Contexto de la conversacion

Mensaje original del cliente, fase conversacional actual, historial resumido

Prioridad calculada

HIGH, MEDIUM o LOW basada en analisis de keywords del mensaje

Asociacion automatica

El ticket queda vinculado al contacto en HubSpot para trazabilidad completa

7.9 Automatizaciones de Soporte

El bot ejecuta 5 procesos automatizados en segundo plano que mantienen el pipeline de soporte y ventas activo sin intervencion humana. Cada uno se activa via endpoints HTTP que se ejecutan por cron jobs en el servidor.

1

Follow-ups automaticos

/follow-ups — Detecta conversaciones inactivas y envia mensajes de seguimiento. Si un contacto lleva 14 dias sin responder despues de 2 follow-ups, se marca como LOST automaticamente y se actualiza su estado en HubSpot. Opera solo en horario 8am-8pm hora CDMX.

2

Deteccion de demos agendadas

/check-bookings — Revisa proactivamente HubSpot buscando meetings agendados para contactos que estan en fase PROPOSING o INFORMING. Si detecta que el contacto agendo una demo por su cuenta (via el link), avanza automaticamente la conversacion a BOOKED, crea el deal en HubSpot, y envia confirmacion por WhatsApp.

3

Recordatorios pre-demo

/meeting-reminders — Aproximadamente 2 horas antes de una demo agendada, envia un mensaje de confirmacion al prospecto por WhatsApp. Incluye fecha, hora y un recordatorio amigable. Solo envia un recordatorio por demo (controla duplicados). Opera 7am-8pm hora CDMX.

4

Seguimiento de no-shows

/noshow-followups — Revisa conversaciones en fase BOOKED y detecta meetings que ya pasaron sin ser completados (no-show). Envia un mensaje empatico ofreciendo reagendar y actualiza el estado en HubSpot. Este proceso es critico para recuperar oportunidades que se perderian sin seguimiento.

5

Encuesta CES (Customer Effort Score)

/ces-survey — Despues de que un caso de soporte escalado se resuelve (el ticket en HubSpot se cierra), el bot envia una encuesta breve de Customer Effort Score preguntando que tan facil fue resolver su problema. Los resultados alimentan metricas de calidad de servicio. Opera 9am-7pm hora CDMX.

Horario de operacion

Todas las automatizaciones respetan el horario 8am-8pm hora CDMX (UTC-6). Fuera de este horario, los endpoints retornan outside_hours sin ejecutar acciones. Esto asegura que ningun cliente reciba mensajes automaticos en la madrugada.

7.10 Canales de Soporte

Primario

WhatsApp (+1 979 432-7797)

Canal principal para clientes en LATAM. Sofi IA responde 24/7 en segundos. Los clientes pueden escribir en espanol, ingles o portugues. Si necesitan un humano, Sofi hace handoff a Chatwoot donde el equipo responde segun los SLAs de la seccion 7.3.

Secundario

Email (hola@sellerfy.ai)

Disponible para todos los planes. Los emails llegan a la bandeja compartida del equipo. Respuesta segun SLAs. Util para comunicaciones que requieren documentacion formal o adjuntos.

Growth+

Chat prioritario + llamada mensual

Disponible desde el plan Growth. El chat tiene respuesta garantizada en menos de 24 horas. Ademas, Growth incluye 1 llamada mensual de seguimiento estrategico donde se revisan metricas y se planifican optimizaciones.

Scale

Account Manager dedicado + consultoria

Exclusivo del plan Scale. Account Manager asignado que conoce la operacion del cliente, ofrece consultoria estrategica personalizada, y es el punto de contacto directo para cualquier necesidad. Incluye soporte premium ilimitado y reportes personalizados.

7.11 Proceso de Onboarding Post-Venta

El onboarding es el momento mas critico del ciclo de vida del cliente. Un cliente que no ve valor en los primeros dias tiene alta probabilidad de pedir reembolso (garantia de 7 dias). Este proceso asegura que cada nuevo cliente tenga una experiencia exitosa desde el primer minuto.

1

Pago completado

El cliente paga via Stripe (boton "Registrate" en sellerfy.ai o Quote de HubSpot). stripe_sync.py detecta la nueva suscripcion y actualiza HubSpot: lifecycle → Customer, agrega plan, MRR, y fecha de inicio.

2

Conexion de marketplace

Guiar al cliente paso a paso para conectar sus cuentas de Amazon y/o Mercado Libre. El proceso toma menos de 5 minutos por marketplace. Es vital explicar que la conexion es de solo lectura via APIs oficiales.

3

Expectativas de sincronizacion

Explicar claramente que la primera descarga de historial toma entre 12 y 24 horas. Es completamente normal ver $0 durante este periodo. Anticipar esta expectativa evita tickets de soporte innecesarios y ansiedad del cliente. Este paso es obligatorio mencionarlo.

4

Seguimiento a las 48 horas

Contactar al cliente 48 horas despues de la conexion para verificar que los datos se sincronizaron correctamente. Preguntar: ¿ya ves tus datos? ¿Los numeros se ven coherentes? ¿Tienes alguna duda sobre lo que ves? Este touchpoint es la diferencia entre retener y perder al cliente en los primeros 7 dias.

5

Landed Cost (Growth y Scale)

Para clientes en Growth o Scale, guiar la carga del Landed Cost (costo de producto). Sin este dato, Sellerfy muestra revenue pero no ganancia real — si la utilidad es igual a la venta, es porque falta el Landed Cost. Explicar su importancia para el calculo de Net Profit Real.

Ventana critica: primeros 7 dias

Sellerfy ofrece garantia de devolucion dentro de los primeros 7 dias. Esto significa que el onboarding exitoso es literalmente la diferencia entre un cliente retenido y un reembolso. Cada nuevo cliente debe tener seguimiento proactivo durante esta ventana.


Seccion 8

Preguntas Frecuentes

Respuestas completas a las preguntas más comunes de prospectos y clientes. Sofi IA utiliza esta base de conocimiento para resolver consultas automáticamente. Organizadas por categoría para referencia rápida.

Sobre Sellerfy

Planes y Precios

Seguridad y Conexión

Funcionalidades

Problemas Técnicos

Competencia

Soporte

Otros


Seccion 9

Equipo y Contactos

9.1 Equipo Comercial

El equipo comercial es el punto de contacto directo para clientes y prospectos. Son quienes toman demos, resuelven dudas comerciales y acompañan al cliente durante el proceso de onboarding.

MC

Miguel Camargo

Sales Development Manager

Toma demos personalizadas. Contacto directo para prospectos y clientes. Responsable de calificación de leads y seguimiento comercial.

9.2 Equipo Técnico (Autonomous)

El equipo técnico es responsable del desarrollo, infraestructura y evolución de la plataforma. No se mencionan en conversaciones comerciales — los clientes interactúan exclusivamente con el equipo comercial y Sofi IA.

PE

Pablo Estrada

CEO / Product Engineer

Dirección de producto, arquitectura de plataforma, estrategia de negocio. No mencionar en conversaciones comerciales.

MQ

Mateo Quintero

CTO

Arquitectura técnica, infraestructura, liderazgo de ingeniería.

AL

Andrés León

Data + Backend Engineer

Pipelines de datos, integraciones de marketplace, APIs backend.

SM

Sergio Murillo

Full-stack Engineer

Dashboard, frontend, experiencia de usuario, integraciones full-stack.

Regla Importante

El equipo técnico nunca se menciona en conversaciones con clientes o prospectos. Ante preguntas como "¿Quiénes son?" o "¿Quién está detrás?", la respuesta es: "Un equipo de 4 expertos en tecnología y eCommerce. Somos sellers que construimos la herramienta que nos hubiera gustado tener."

9.3 Canales de Comunicación

Canales Externos (Clientes)

Email

hola@sellerfy.ai

WhatsApp

+1 (979) 432-7797

Website

sellerfy.ai

App / Dashboard

app.sellerfy.ai

Canales Internos (Equipo)

Slack Interno

#sales

Chatwoot

sellerfychat.pabesfu.com

Pagos

Procesados vía Stripe (tarjeta de crédito/débito). La única vía oficial para activar planes es el botón "Regístrate" en sellerfy.ai. No se gestionan pagos por otros medios.

9.4 Visión

"Ser la plataforma número uno de rentabilidad para sellers en LATAM y los mercados hispanohablantes."

Autonomous / Sellerfy — Fundada en 2024

+60%

Eficiencia operativa

+40%

Incremento en ventas

10+

Mercados en LATAM

Propuesta de valor basada en el uso de la plataforma

Seccion 10

Bot Nurturing — Mapa Tecnico Completo

10.1 Arquitectura del Bot

WhatsApp → Twilio → Chatwoot → POST /hooks/sellerfy → app.py (Opus 4.6)
                                                                 ↓
                                                     HubSpot + Conversation DB
ComponenteDetalle
RuntimeDocker container sellerfy-nurture, puerto 5200, droplet 134.199.231.196
Modelo principalClaude Opus 4.6 (temperature 0.3) — genera respuestas conversacionales
Modelo extraccionClaude Sonnet 4.6 — extraccion de datos y validacion anti-alucinacion
Dashboardsellerfychat.pabesfu.com/template-stats?format=html

10.2 Clasificacion de Contactos (6 tipos)

El bot clasifica cada contacto automaticamente usando classify_contact(). Cada tipo activa un comportamiento diferente del agente.

TipoCriterioQue hace el bot
customer_activeStripe status=activeSoporte tecnico, no ofrece demos
churnStripe status=canceledWin-back, menciona mejoras, ofrece demo si interesa
trial_activetrial_end_date > hoyGuia de trial, maximizar uso, upgrade
trial_expiredtrial_end_date < hoyReactivacion, segunda oportunidad
registeredmemberstack=true o preview dataActivacion, guiar a primera compra
cold_leadTodo lo anterior es falsePipeline de 7 fases (GREETING→BOOKED)

10.3 Funnel de 7 Fases (cold_lead)

GREETING DISCOVERY INFORMING PROPOSING BOOKED ESCALATED / LOST

GREETING

Bienvenida, pregunta marketplace. No demo link.

DISCOVERY

Enganchar con valor, entender negocio. Max 1 pregunta por mensaje. No demo link.

INFORMING

Crear deseo. Conectar dolor con features. Compartir demo link cuando hay interes claro.

PROPOSING

Link enviado. Resolver dudas. No insistir mas de 1 vez.

BOOKED

Demo agendada. Confirmar, preparar al lead.

ESCALATED

Pregunta fuera de KB. Equipo respondera.

LOST

14 dias inactivo + 2 follow-ups sin respuesta.

Triggers de Transicion

TransicionTrigger
GREETING → DISCOVERYmarketplace + dolor capturados, O ≥3 mensajes, O wants_demo
DISCOVERY → INFORMINGInteres claro detectado
INFORMING → PROPOSINGDemo link enviado
PROPOSING → BOOKEDMeeting confirmado en HubSpot
Any → ESCALATEDRespuesta fuera de KB
Any → LOST14 dias + 2 follow-ups sin respuesta

10.4 Templates de WhatsApp — 14 Templates × 7 Triggers

WELCOME WARM (1 template — Warm 1 ganador 10.7%) — Form leads + Google Ads

Triggers: POST /poll-leads (cada 10min, 8am-7pm) + POST /hooks/google-ads-lead (webhook tiempo real)

W1

"Hola 1! Soy del equipo de Sellerfy. Vi que mostraste interes en nuestra plataforma de IA para sellers. Me encantaria conocer tu operacion y ver como podemos ayudarte a optimizar tu rentabilidad."

W2 (removido — Warm 1 ganador con 10.7% response rate)

"Hola 1! Te escribo del equipo de Sellerfy. Ayudamos a sellers de Amazon y Mercado Libre a saber exactamente cuanto ganan por producto y a optimizar su rentabilidad con IA. Te gustaria saber mas?"

WELCOME COLD (3 templates) — Backlog outreach

Trigger: POST /backlog-outreach (cada hora, 10am-3pm CDMX, 20 leads/batch)

C1 — IVA

"Hola 1! Soy del equipo de Sellerfy. Sabias que la mayoria de herramientas no calculan bien el IVA y las retenciones en Latam? Nuestra IA te muestra tu ganancia neta REAL despues de impuestos por producto en Amazon/MercadoLibre. Te gustaria ver si tus margenes son los que crees?"

C2 — Playlist

"Hola 1! Soy del equipo de Sellerfy. En vez de graficos complejos, nuestra IA te da una Playlist de Acciones diaria: te dice que precio subir o que anuncio pausar para ganar mas hoy. Vendes en Amazon o Mercado Libre?"

C3 — Vi tu tienda

"Hola 1! Vi tu tienda y me surgio una duda: sabes exactamente cuanto pierdes en devoluciones y publicidad por cada SKU? En Sellerfy ayudamos a sellers a detectar esas fugas de rentabilidad. Te cuento como?"

FOLLOW-UP (2 templates, secuenciales)

Trigger: POST /follow-ups (3x/dia: 10am, 2pm, 6pm CDMX) — 24h sin respuesta

F1

"Hola 1! Pasaba a saludarte. Pudiste pensar en lo que platicamos sobre Sellerfy? Si tienes alguna duda, estoy por aca para ayudarte."

F2

"Hola 1! Solo queria dejarte saber que si en algun momento quieres ver como Sellerfy puede optimizar tu rentabilidad, con gusto agendamos una demo. Exito con tus ventas!"

REMINDER (2 templates — v2 activo)

Trigger: POST /meeting-reminders (cada 30min, 8am-7pm) — ~2h antes de demo

R v2 — sellerfy_reminder_v2 (SID HX2371..bd) — 3 vars (nombre, hora, link)

"Hola 1! Te recordamos tu demo de Sellerfy a las 2. Voy a tener lista la proyeccion de tu tienda para que la veamos en vivo. Aqui tienes el link de acceso: 3. Confirmas que puedes entrar?"

R v1 (reemplazado)

"Hola 1! Te recordamos que hoy tienes tu demo de Sellerfy a las 2. Ten a la mano tu usuario de marketplace para que podamos conectar y ver tus datos en vivo. Nos confirmas que si podras asistir?"

NO-SHOW (1 template)

Trigger: POST /noshow-followups (3x/dia: 11am, 3pm, 7pm) — lead no se presento

NS

"Hola 1! No pudimos conectarnos en la demo que teniamos agendada. Entendemos que los tiempos a veces no cuadran. Te gustaria reagendar? Solo dime que dia y hora te funciona mejor."

SUPPORT REPLY (1 template)

Trigger: Respuesta a mensajes de soporte entrantes

SR — support_reply (SID HX1115..51)

"Hola 1! Gracias por escribirnos. Somos del equipo de Sellerfy y estamos aqui para ayudarte..."

10.5 Flujo Visual Completo

LEAD NUEVO
  ├── Backlog (frio) ──────→ COLD pool (3 templates)
  ├── Formulario (tibio) ──→ WARM pool (1 template)   ──→ DISCOVERY
  └── Google Ads (caliente)→ WARM pool (1 template)
                                         │
                                    Responde?
                                   /          \
                                 SI            NO
                                 │              │
                            Bot (Opus 4.6)   24h → Follow-up 1
                                 │              │
                                 ▼          Responde?
                            INFORMING       /       \
                                 │        SI         NO
                                 ▼        │       48h → Follow-up 2
                            PROPOSING    Bot          │
                                 │              Responde?
                                 ▼              /       \
                              BOOKED          SI        NO → LOST
                              /    \          │
                        Reminder  No-show   Bot
                       (2h antes) (si falta)

10.6 Crons Activos (7 crons en droplet)

Ver tabla completa de crons
CronScriptFrecuenciaHorario CDMXQue hace
Poll leadssellerfy-poll-leads.shCada 10min8am-7pmOutreach a form leads nuevos
Backlog outreachsellerfy-backlog-outreach.shCada hora10am-3pm20 leads/hora del backlog
Follow-upssellerfy-follow-ups.sh3x/dia10am, 2pm, 6pmFollow-up stale 48h
Sync bookingssellerfy-sync-bookings.shCada 30min8am-7pmDetecta meetings, envia reminders
No-showsellerfy-noshow.sh3x/dia11am, 3pm, 7pmDetecta no-shows, envia reagendar
Daily reportsellerfy-daily-report.sh1x/dia9pmReporte engagement del dia
Backup DBbackup-db.sh1x/dia5am UTCBackup conversations.db

10.7 Escalacion y Handoff

Escalacion

Bot detecta pregunta fuera del KB → responde "Dejame confirmarlo con el equipo" + nota privada en Chatwoot + ticket.

Handoff

Agente humano se asigna la conversacion en Chatwoot → bot deja de responder automaticamente.

Deteccion: is_bot_handling()

Estado ChatwootAsignacionBot responde?
pendingcualquieraSi
openunassignedSi
openhuman assignedNo (stop)

10.8 Anti-alucinacion (Validador)

Haiku valida cada respuesta contra el KB antes de enviar. Si FAIL → respuesta generica: "Dejame confirmarlo con el equipo".

Validado (PASS)

  • Saludos y cortesias
  • Info del Knowledge Base
  • Precios oficiales
  • Testimonios reales
  • Links de demo

Rechazado (FAIL)

  • Features inventados
  • Precios incorrectos
  • Promesas falsas
  • Info no verificable

10.9 Deteccion de Auto-replies

WhatsApp Business auto-replies ("Gracias por comunicarte con...") se detectan por texto (15+ patrones) + timing (<10s).

MecanismoDetalle
Deteccion por texto15+ patrones regex (ej: "gracias por comunicarte", "fuera de horario", "te responderemos")
Deteccion por timingRespuesta en <10 segundos desde el outreach
Marcado en DBis_auto_reply=1 — excluido de metricas
Comportamiento del botSe presenta y pide hablar con encargado de eCommerce

10.10 Atribucion de Origen

Cada contacto se clasifica por origen automaticamente. El nombre de WhatsApp se sincroniza de Chatwoot a HubSpot.

WhatsApp Bot

Contacto escribio directo

Database Marketing

Backlog outreach

Web

Form lead

GWS

Google Ads lead form

Instagram / LinkedIn

Texto pre-llenado detectado

Procolombia / Otro

Texto pre-llenado detectado

10.11 A/B Testing Dashboard

URL: sellerfychat.pabesfu.com/template-stats?format=html

Dashboard completo de performance del bot. Muestra metricas en tiempo real:

Contactados

Resp. Humanas

Auto-replies

Sin Respuesta

Demos

  • Funnel por fase: distribucion de leads en cada etapa del pipeline
  • Performance por origen: tasa de respuesta segmentada (Web, GWS, Database, etc.)
  • A/B testing por template: contenido de cada template con su tasa de respuesta

Pipeline Unificado — De 0 a Cliente

CONTACTO

Lifecycle Stage

LEAD

Lead Status

DEAL

Deal Stage

Camino principal

0 Contacto nuevo
23,224
Contacto: Lead
Lead: NEW
Deal: —

Detona: Import HubSpot, formulario web, Google Ads, o WhatsApp organico

Template: ninguno  |  Cron: automatico al crear

1 Template welcome enviado
~137 enviados
Contacto: Lead
Lead: NEW
Deal: —

Detona: Backlog (20/hora) | Form leads (cada 10min) | Google Ads (tiempo real)

Template: Pool COLD (3 templates) para backlog | Pool WARM (1 template — Warm 1 ganador 10.7%) para form/Google Ads

Crons: backlog-outreach (10am-3pm)  |  poll-leads (8am-7pm)  |  google-ads webhook

2 Lead responde — Bot conversa (DISCOVERY)
52
Contacto: Lead
Lead: CONNECTED
Deal: —

Detona: Lead escribe al WhatsApp (respuesta humana, no auto-reply)

Template: ninguno — Bot Opus 4.6 conversa libre (ventana 24h abierta)

Trigger: webhook tiempo real  |  Bot recopila: marketplace, dolor, empresa, SKUs

3 MQL — Interes detectado (INFORMING)
14
Contacto: MQL
Lead: IN_PROGRESS
Deal: —

Detona: marketplace + dolor capturados, O marketplace + 3 msgs, O wants_demo, O 4+ msgs con datos

Template: ninguno — Bot crea deseo, social proof, conecta dolor con features

4 SQL — Link de demo enviado (PROPOSING)
1
Contacto: SQL
Lead: IN_PROGRESS
Deal: —

Detona: Bot envia link de demo (Miguel o Jose). booking_link_sent=true

Template: ninguno — Bot comparte link de HubSpot Meetings en la conversacion

5 Demo agendada — DEAL CREADO (BOOKED)
16 deals
Contacto: Opportunity
Lead: OPEN_DEAL
Deal: Demo/BANT

Detona: Meeting detectado en HubSpot + booking_link_sent=true → _on_booked() crea Deal

Template: Reminder v2 ~2h antes: "Voy a tener lista la proyeccion de tu tienda... Aqui tienes el link: 3"

Cron: sync-bookings cada 30min (8am-7pm)

6-7 Trial → Negociacion → Contrato (MANUAL)
2 deals
Contacto: Opportunity
Lead: OPEN_DEAL
Deal: Trial / Negociacion / Contrato

Detona: Equipo de ventas mueve manualmente despues de la demo. El bot NO interviene.

Template: ninguno  |  Cron: ninguno

8 CLIENTE
23 clientes | MRR $964
Contacto: Customer
Lead: —
Deal: Cerrado Ganado

Detona: MANUAL + stripe_sync.py detecta subscription active → lifecycle=Customer

Cron: stripe_sync.py diario 6am UTC  |  Bot cambia a modo soporte si escriben

Caminos alternativos

No responde (24h)

Lead
ATTEMPTED

Template: Follow-up 1 (24h) → Follow-up 2 (72h)

Cron: follow-ups 3x/dia

LOST

Lead
BAD_TIMING

Detona: 14 dias + 2 follow-ups sin respuesta

Si vuelve a escribir → re-abre en DISCOVERY

No-Show 11 deals

Opportunity
ATTEMPTED
No-Show

Template: No-Show (reagendar) max 3 intentos

Cron: noshow-followups 3x/dia

Escalado 6

sin cambio
CONNECTED

Detona: Pregunta fuera del KB → "Dejame confirmarlo"

Si da datos → re-abre en DISCOVERY o INFORMING

Churn 211

Churn
WIN_BACK

Detona: Stripe sync (subscription canceled)

Bot hace win-back si escriben al WhatsApp

Cerrado Perdido / Repesca 12 deals

Opportunity
C.Perdido / Repesca

Detona: MANUAL — equipo decide

Conversion entre etapas (18 marzo 2026)

24,002

Contactos

52

Respondieron

0.22%

14

MQL

26.9%

45

Deals

23

Clientes

MRR $964

Cuellos de botella

96.7% en Lead/NEW — 23,224 sin contactar. A 120/dia = ~150 dias para completar.

24% No-Show — 11 de 45 deals. Bot reintenta 3 veces, despues queda estancado.

Response rate ~3.6% — Templates cold nuevos pendientes de aprobacion Meta. A/B testing medira mejora.

Servicio al Cliente y Tickets

Como sabe el bot que alguien es cliente?

Cuando alguien escribe al WhatsApp, lo PRIMERO que hace el bot es clasificar al contacto. Si es cliente, trial, churn o registered, el bot NO entra al pipeline de ventas — entra a un flujo de servicio diferente.

Mensaje llega al WhatsApp
    |
    v
hubspot.classify_contact(contact)
    |
    ├── Stripe subscription_status = "active"?     → customer_active
    ├── Stripe subscription_status = "canceled"?   → churn
    ├── trial_end_date > hoy?                      → trial_active
    ├── trial_end_date < hoy (vencido)?            → trial_expired
    ├── memberstack = true O preview data?         → registered
    └── Nada de lo anterior?                       → cold_lead (pipeline ventas)
      

Fuente de verdad: Stripe es la fuente principal. stripe_sync.py corre diario a las 6am UTC y actualiza lifecycle + subscription_status en HubSpot. El bot lee esas propiedades en tiempo real.

Que hace el bot con cada tipo de usuario existente

customer_active — Cliente con suscripcion activa 23 contactos

Rol del bot: Soporte tecnico. NO ofrece demos ni planes.

Que hace: Responde dudas de la plataforma usando el KB. Si necesita soporte tecnico o facturacion → dice "Te conecto con el equipo" → handoff.

Ticket: SI crea ticket en HubSpot con categoria detectada automaticamente (conexion, datos, billing, feature_request, otro).

churn — Ex-cliente (suscripcion cancelada) 211 contactos

Rol del bot: Win-back con empatia. Pregunta que paso, menciona mejoras.

Que hace: Si muestra interes en volver → ofrece demo. Si no → deja puerta abierta. Si necesita soporte de cuenta anterior → handoff.

Ticket: SI crea ticket al hacer handoff (igual que customer_active).

trial_active — Trial vigente

Rol del bot: Guia de trial. Maximizar uso, resolver dudas, proponer upgrade.

Que hace: Responde dudas tecnicas con KB. Si pregunta precios → info del KB. Si quiere suscribirse → handoff.

Ticket: SI crea ticket al hacer handoff (activacion bloqueada, necesita soporte tecnico).

trial_expired — Trial vencido

Rol del bot: Reactivacion con empatia. NO asume por que no continuo, pregunta con curiosidad genuina.

Que hace: Menciona que sus datos siguen disponibles. Si no tuvo tiempo → empatiza. Si tuvo problemas tecnicos → handoff. Si muestra interes → demo.

Ticket: SI crea ticket al hacer handoff.

registered — Se registro pero no tiene trial ni suscripcion

Rol del bot: Activacion. Guia paciente, como un onboarding personalizado por WhatsApp.

Que hace: Pregunta si exploro la plataforma. Guia paso a paso para conectar marketplace. Explica seguridad (Partners Oficiales, solo lectura). Puede ofrecer demo.

Ticket: SI crea ticket al hacer handoff.

Cuando se crea un Ticket en HubSpot

Hay 2 flujos que crean tickets automaticamente. Ambos lo hacen en el Support Pipeline de HubSpot.

Flujo 1: Escalacion (cold_lead)

Detona: El validador anti-alucinacion detecta que la respuesta del bot contiene info fuera del KB → el bot dice "Dejame confirmarlo con el equipo"

Que pasa:

  1. Fase → ESCALATED
  2. Crea ticket en HubSpot: "Escalacion Bot — [Nombre]"
  3. Prioridad: detectada por keywords del mensaje
  4. Nota privada en Chatwoot
  5. Bot sigue respondiendo (no hace handoff)

Codigo: app.py:348-372

Flujo 2: Handoff (TODOS los perfiles existentes)

Detona: El bot responde con frases de handoff ("te conecto", "el equipo te puede ayudar") a cualquier usuario existente (customer, churn, trial, registered)

Que pasa:

  1. Conversacion se asigna a SALES_AGENT_ID=1 en Chatwoot
  2. Bot DEJA de responder (is_bot_handling=false)
  3. Nota privada: "[perfil detectado — handoff a equipo]"
  4. Crea ticket en HubSpot: "Soporte WhatsApp — [Nombre]"
  5. Ticket tiene: categoria, prioridad, plan del seller, canal=whatsapp_bot

Aplica a: customer_active, churn, trial_active, trial_expired, registered

Diferencia clave: Escalacion NO hace handoff (bot sigue activo). Handoff SI hace handoff (bot se detiene y humano toma control).

Template de soporte (para clientes fuera de ventana 24h)

Cuando un cliente existente escribe al WhatsApp despues de que cerro la ventana de 24h, se puede reabrir la conversacion con este template:

"Hola 1! Gracias por escribirnos. Somos del equipo de Sellerfy y estamos aqui para ayudarte. Cuentanos en que podemos asistirte y te respondemos enseguida."

SID: HX1115...cb51 | Status: pendiente aprobacion Meta | Categoria: UTILITY

Support Pipeline (HubSpot Tickets)

#StageQuien lo mueve
0NewBot (al crear ticket automaticamente)
1Waiting on contactManual — equipo respondio, esperando al cliente
2Waiting on usManual — cliente respondio, equipo debe actuar
3ClosedManual — resuelto

Total tickets: 299 | El bot solo crea tickets en stage "New". Todo lo demas es manual.

Clasificacion automatica de tickets

El bot clasifica automaticamente la prioridad y categoria del ticket analizando el mensaje del cliente.

Prioridad (por keywords)

HIGH: "no puedo conectar", "bloqueo", "error", "no carga", "no veo datos", "$0", "token", "desconectado", "cuenta bloqueada"

MEDIUM: "factura", "cobro", "pago", "plan", "cancelar", "precio", "cambiar plan"

LOW: todo lo demas (feature requests, preguntas generales)

Categoria (por keywords)

conexion: "conectar", "token", "sincron", "api", "bloqueo"

datos: "dato", "$0", "panel", "no veo", "no aparece"

billing: "factura", "cobro", "pago", "plan", "cancelar", "precio"

feature_request: "funcion", "feature", "sugerencia", "pudieran"

otro: todo lo demas

Cada ticket tambien registra: seller_plan (lite/growth/scale/trial/none) y canal_origen_ticket (whatsapp_bot).

Como se asignan conversaciones en Chatwoot

is_bot_handling(conversation):

  status = "pending"?              → BOT responde
  status = "open" + sin asignar?   → BOT responde
  status = "open" + bot asignado?  → BOT responde
  status = "open" + humano asignado? → BOT SE DETIENE
  status = "resolved"?             → BOT SE DETIENE
      

Bot activo (automatico)

  • Conversacion nueva (pending) → bot responde
  • Conversacion abierta sin asignar → bot responde
  • Asignada a "agent_bot" → bot responde

Bot detenido (handoff a humano)

  • Bot dice "te conecto" → assign_to_sales(SALES_AGENT_ID=1)
  • Humano se asigna manualmente en Chatwoot
  • Conversacion resuelta (resolved)

Una vez asignada a humano, el bot NO vuelve a responder en esa conversacion.

Flujo completo: Cliente escribe al WhatsApp

Cliente/Ex-cliente escribe al WhatsApp
    |
    v
Bot clasifica: customer_active / churn / trial / registered
    |
    v
Bot responde con prompt de servicio (NO ventas)
    |
    ├── Puede resolver con KB?
    |       |
    |       SI → responde y sigue activo
    |
    ├── Necesita soporte tecnico / billing?
    |       |
    |       v
    |   Bot dice "te conecto con el equipo"
    |       |
    |       v
    |   ┌────────────────────────────────────┐
    |   │  1. Chatwoot: assign_to_sales      │
    |   │  2. Bot se detiene                  │
    |   │  3. Nota privada en Chatwoot        │
    |   │  4. Solo customer/churn:            │
    |   │     → Ticket creado en HubSpot      │
    |   │       - Prioridad: HIGH/MEDIUM/LOW  │
    |   │       - Categoria: conexion/datos/   │
    |   │         billing/feature/otro         │
    |   │       - Plan del seller              │
    |   │       - Canal: whatsapp_bot          │
    |   └────────────────────────────────────┘
    |
    └── Pregunta fuera del KB?
            |
            v
        Bot dice "dejame confirmarlo con el equipo"
            |
            v
        Ticket "Escalacion Bot" creado en HubSpot
        (bot SIGUE activo, no hay handoff)
      

Knowledge Base — De donde saca la info el bot

El bot lee archivos estaticos locales (/opt/sellerfy-bot/kb/). No se conecta a APIs ni datos en tiempo real. Hay 2 KB distintos segun el perfil del contacto.

KB de Ventas (cold_lead + registered)

Se inyecta via render_kb_for_prompt()

  • company.json — nombre, slogan, web, demo, mercados
  • plans.json — 3 planes con precios, features, limites
  • technology.json — features core, sync, Sofi IA, comparativa
  • brand.json — testimonios, battlecards, diferenciadores
  • faqs.json — 30+ preguntas frecuentes con triggers

Ultima actualizacion: 13 marzo 2026

KB de Soporte (customer, churn, trial)

Se inyecta via render_support_kb()

  • faq_inicio_rapido_v1.md — checklist supervivencia, conexiones, pagos, Sofi IA, movil
  • soporte_tecnico_v1.md — proceso soporte, triaje, battlecards, HubSpot Service Hub
  • technology.json — sincronizacion, intervalos por plan
  • plans.json — referencia rapida de precios

Ultima actualizacion: 17 marzo 2026

Archivos KB no usados por el bot (solo referencia interna)

faq_ventas_y_negocio_v1.md — FAQs de ventas (no cargado en prompt)

planes_y_precios_v1.md — Detalle de planes en markdown (no cargado, plans.json se usa)

proceso_comercial_v1.md — Proceso comercial interno (no para el bot)

seguridad_y_comparativa_v1.md — Seguridad y comparativa (no cargado)

sla_equipos_v1.md — SLA equipos (no para el bot)

claude_leadgen_v1.md — Documentacion del pipeline de leadgen (no para el bot)

index.md — Indice del KB (no cargado)

Que puede responder el bot vs que NO

SI puede (esta en el KB):

  • Precios y planes (Lite $79, Growth $109, Scale $189)
  • Como conectar Amazon/ML (API oficial, solo lectura)
  • Por que no veo datos (sync 12-24h, token expirado, adblockers)
  • Sofi IA limites (2/5/ilimitado por plan)
  • Seguridad (Partners Oficiales, tokens encriptados)
  • Comparativa vs Jungle Scout, Helium 10, etc.
  • Como instalar en movil (webapp, agregar a pantalla)
  • Diferencia de datos (Sellerfy resta comisiones/impuestos)

NO puede (no esta en el KB):

  • Ver datos del cliente (su dashboard, sus metricas, su plan actual real)
  • Verificar estado de conexion del marketplace del cliente
  • Forzar re-sincronizacion de datos
  • Resolver bugs de la plataforma
  • Procesar cancelaciones o cambios de plan
  • Ver historial de pagos o facturas
  • Features nuevos que no esten en el KB
  • Problemas especificos de un marketplace (cambios de API, etc.)

Pendientes — Mejoras identificadas

KB estatico — no se actualiza automaticamente

Los archivos JSON/MD se escribieron manualmente y no se actualizan cuando cambian precios, features o procesos. Riesgo: bot da info desactualizada.

Solucion propuesta: Sync automatico desde Stripe (precios) y app (features).

Sin acceso a datos del cliente

El bot no puede ver el dashboard, metricas ni estado de conexion del cliente. No puede decir "veo que tu tienda de Amazon esta desconectada desde hace 3 dias".

Solucion propuesta: Integrar API de Sellerfy para consultar estado del usuario en tiempo real.

Sin template de soporte para ventana 24h

Template sellerfy_support_reply creado pero pendiente de aprobacion Meta. Hasta que se apruebe, si un cliente escribe despues de 24h el bot no puede responder proactivamente.

Sin encuesta de satisfaccion (CES/NPS) automatica

El doc de soporte menciona que HubSpot envia CES automatico al cerrar ticket, pero no hay template de WhatsApp para esto. La encuesta solo funciona por email.

Sin tracking de tiempo de resolucion

No se mide cuanto tarda un ticket en resolverse. HubSpot Service Hub tiene esta metrica pero no esta configurada en el dashboard del bot.

7 archivos de KB no se usan

faq_ventas_y_negocio, planes_y_precios, proceso_comercial, seguridad_y_comparativa, sla_equipos, claude_leadgen, index — existen pero el bot no los carga. Potencial de mejorar respuestas si se integran selectivamente.

Contactos — Estructura CRM

Lifecycle Stages (Etapas del ciclo de vida)

Cada contacto tiene un lifecycle stage que indica en que punto esta del embudo. El bot y Stripe los mueven automaticamente.

StageContactosQuien lo mueve aquiQue significa
Lead23,667Bot (al crear contacto), Import, Form leadsContacto nuevo, aun no calificado
Fuente de Leads41ManualLead de fuente especifica (embajadores, alianzas)
MQL14Bot (fase INFORMING)Marketing Qualified Lead — mostro interes, el bot le esta creando deseo
SQL1Bot (fase PROPOSING)Sales Qualified Lead — link de demo enviado, evaluando
Opportunity44Bot (fase BOOKED) + Sync bookingsDemo agendada, deal creado
Customer23Stripe sync (subscription active)Cliente con suscripcion activa
Churn211Stripe sync (subscription canceled)Ex-cliente, suscripcion cancelada

Total: 24,002 contactos | Actualizado: 18 marzo 2026

Clasificacion del Bot (6 perfiles)

Cuando un contacto escribe al WhatsApp, el bot lo clasifica en 1 de 6 perfiles. Cada perfil tiene un comportamiento diferente.

cold_lead (default)

No es cliente ni trial. Entra al pipeline de 7 fases: GREETING → BOOKED

customer_active

Stripe active. Bot da soporte tecnico, NO ofrece demos

churn

Stripe canceled. Bot hace win-back, menciona mejoras, ofrece demo si hay interes

trial_active

Trial vigente. Bot guia el trial, maximiza uso, propone upgrade

trial_expired

Trial vencido. Bot ofrece segunda oportunidad, entiende por que no continuo

registered

Memberstack o preview data. Bot guia activacion hacia primera compra

Mapeo automatico: Fase del bot → Lifecycle Stage

El bot sincroniza automaticamente el lifecycle stage en HubSpot segun la fase de la conversacion.

Fase del BotLifecycle StageLead Status
GREETINGLeadNEW
DISCOVERYLeadCONNECTED
INFORMINGMQLIN_PROGRESS
PROPOSINGSQLIN_PROGRESS
BOOKEDOpportunityOPEN_DEAL
ESCALATEDsin cambioCONNECTED
LOSTsin cambioBAD_TIMING
Stripe: activeCustomer-
Stripe: canceledChurnWIN_BACK

Reglas exactas: que detona cada transicion

GREETING → DISCOVERY

Se mueve al primer mensaje del lead. No hay condicion — siempre avanza. El bot saluda y pregunta marketplace.

DISCOVERY → INFORMING (Lead → MQL)

Se mueve cuando ANY de estas condiciones es true:

  • marketplace + dolor principal capturados en la conversacion
  • marketplace + 3 mensajes intercambiados
  • El lead dice que quiere la demo (wants_demo=true)
  • 4+ mensajes con al menos un dato capturado (marketplace, dolor o empresa)

Codigo: conversation.py:224-228

INFORMING → PROPOSING (MQL → SQL)

Se mueve SOLO cuando booking_link_sent = true — es decir, el bot compartio el link de demo de Miguel o Jose.

El bot decide cuando enviar el link segun las instrucciones del prompt: "cuando el seller muestre interes claro".

PROPOSING → BOOKED (SQL → Opportunity) + DEAL CREADO

Se mueve cuando se detecta un meeting confirmado en HubSpot para ese contacto. Condicion doble:

  • check_meeting_booked() encuentra un meeting futuro asociado al contacto
  • Y booking_link_sent = true (el bot envio el link, no es un meeting viejo/externo)

Al entrar a BOOKED, se ejecuta _on_booked():

  • Lifecycle → opportunity
  • Se crea un Deal en stage Demo/BANT
  • Se asocia deal al contacto + meeting
  • Se setea owner del deal (Miguel o Jose segun assigned_rep)
  • Se registra nota en HubSpot con resumen de la conversacion

→ ESCALATED

Cuando el validador anti-alucinacion detecta que la respuesta del bot tiene info fuera del KB. El bot responde "Dejame confirmarlo con el equipo" y la conversacion se marca como escalada. Puede pasar desde cualquier fase excepto BOOKED y PROPOSING.

→ LOST

Condiciones exactas (ambas deben cumplirse):

  • 14 dias desde el ultimo mensaje (last_message_at < 14 days ago)
  • 2+ follow-ups enviados sin respuesta (follow_up_count >= 2)
  • Fase NO es BOOKED, LOST ni ESCALATED

Al marcar LOST: lifecycle vuelve a lead, lead status → BAD_TIMING

LOST → DISCOVERY (re-engagement)

Si un lead en LOST vuelve a escribir, el bot lo mueve a DISCOVERY automaticamente y retoma la conversacion con entusiasmo.

ESCALATED → DISCOVERY/INFORMING (re-engagement)

Si un lead escalado sigue escribiendo y da datos de marketplace + dolor, el bot lo mueve a INFORMING. Si solo da marketplace o empresa, lo mueve a DISCOVERY.

Cuando NO se crea un Deal

  • Si el contacto ya tiene un deal_contact_has_deal() verifica duplicados antes de crear
  • Si booking_link_sent = false — meetings viejos o externos se ignoran para no crear deals falsos
  • Si el meeting no es futuro — solo meetings con fecha futura crean deals
  • Fases GREETING, DISCOVERY, INFORMING, PROPOSING — nunca crean deals directamente
  • Clientes activos, trial, churn, registered — el flujo de _handle_existing_user no crea deals

Follow-ups: cuando se envian y que pasa

CondicionAccionLead Status
24h sin respuesta, follow_up_count=0, fase NO es BOOKED/LOST/ESCALATED, messages_count>0Envia Follow-up 1ATTEMPTED_TO_CONTACT
48h despues de F1 (72h total), follow_up_count=1Envia Follow-up 2ATTEMPTED_TO_CONTACT
14 dias total sin respuesta, follow_up_count>=2Marca como LOSTBAD_TIMING
Lead responde despues de follow-upConversacion normal continua, bot respondeSegun fase actual
Lead en LOST vuelve a escribirRe-abre → fase DISCOVERYCONNECTED

Leads Pipeline — Como avanza un lead

Lead Status (estado dentro de Lead)

Mientras un contacto es "Lead" en lifecycle, el lead status indica que tan avanzado esta el contacto.

StatusContactosQuien lo poneSignificado
NEW23,224Bot (al crear contacto)Lead nuevo, sin contactar o sin respuesta
CONNECTED52Bot (fase DISCOVERY)Lead respondio, conversacion activa
IN_PROGRESS19Bot (fase INFORMING/PROPOSING)Interesado, en proceso de calificacion
OPEN_DEAL16Bot (fase BOOKED)Demo agendada, deal abierto
OPEN23ManualEn seguimiento manual por el equipo
ATTEMPTED_TO_CONTACT2Bot (follow-up enviado)Se intento contactar pero no respondio
BAD_TIMING0Bot (fase LOST)14 dias inactivo + 2 follow-ups sin respuesta
WIN_BACK209Stripe sync (cancelacion)Ex-cliente para re-engagement
UNQUALIFIED2ManualNo es target (ej: area de RRHH, empresa incorrecta)
sin status455Imports antiguosContactos sin clasificar

Flujo completo: de Lead nuevo a Cliente

NUEVO CONTACTO
  |
  v
Lead / NEW ──────────────────────────────────────────────────────────
  |                                                                  |
  |  Bot envia template welcome                                      |
  |  (backlog=cold pool, form/gads=warm pool)                        |
  |                                                                  |
  v                                                                  |
Lead / CONNECTED ← lead respondio                                    |
  |                                                                  |
  |  Bot conversa (DISCOVERY)                                        |
  |  Recopila: marketplace, dolor, empresa                           |
  |                                                                  |
  v                                                                  |
MQL / IN_PROGRESS ← interes detectado                                |
  |                                                                  |
  |  Bot crea deseo (INFORMING)                                      |
  |  Conecta dolor con features, social proof                        |
  |  Envia link de demo cuando hay interes claro                     |
  |                                                                  |
  v                                                                  |
SQL / IN_PROGRESS ← link enviado                                     |
  |                                                                  |
  |  Bot resuelve dudas (PROPOSING)                                  |
  |  Objeciones: precio, seguridad, competencia                     |
  |                                                                  |
  v                                                                  |
Opportunity / OPEN_DEAL ← demo agendada                              |
  |                                                                  |
  |  Deal creado automaticamente                                     |
  |  Reminder 2h antes de la demo                                    |
  |  No-show? → reagendar template                                   |
  |                                                                  |
  v                                                                  |
Customer ← Stripe subscription active                                |
  |                                                                  |
  |  Bot cambia a modo soporte                                       |
  |                                                                  |
  v                                                                  |
Churn ← Stripe subscription canceled                                 |
  |                                                      Si no responde:
  |  Bot hace win-back                                   48h → F1
  |                                                      48h → F2
  v                                                      14d → LOST
                                                         BAD_TIMING
      

Dato clave: 96.7% de los contactos estan en Lead/NEW

23,667 de 24,002 contactos son leads sin contactar. El backlog outreach los contacta a 120/dia (~150 dias para completar).

Funnel integrado: template + bot + deal en cada paso

Cada paso del funnel muestra exactamente que se envia, quien lo detona, y que template de WhatsApp se usa.

PASO 1 — Primer contacto (template welcome)

Status: Lead / NEW

Backlog (frio)

Cron: backlog-outreach cada hora, 10am-3pm

20 leads/batch

Pool COLD (3 templates):

Cold 1: "...IVA y retenciones en Latam..."
Cold 2: "...Playlist de Acciones diaria..."
Cold 3: "Vi tu tienda y me surgio una duda..."

Formulario web (tibio)

Cron: poll-leads cada 10min, 8am-7pm

Pool WARM (1 template — Warm 1 ganador 10.7%):

W1: "Vi que mostraste interes en nuestra plataforma..."

Google Ads (caliente)

Webhook: /hooks/google-ads-lead tiempo real

Pool WARM (1 template)

Mismo W1 que formulario (Warm 1 ganador)

Nota: el template se envia por Twilio (fuera de la ventana 24h de WhatsApp). Solo templates aprobados por Meta pueden iniciar conversacion.

PASO 2 — Lead responde (bot conversa)

Status: Lead / CONNECTED → fases DISCOVERY, INFORMING, PROPOSING

Cuando el lead responde al template, se abre la ventana de 24h de WhatsApp. El bot (Opus 4.6) conversa libremente sin templates:

  • DISCOVERY: Recopila marketplace, dolor, empresa. Maximo 1 pregunta por mensaje. Valor primero.
  • INFORMING: Crea deseo. Conecta dolor con Net Profit, Sofi, Playlist. Envia link de demo cuando hay interes.
  • PROPOSING: Link enviado. Resuelve dudas de precio, seguridad, competencia.

No se envian templates en este paso — todo es conversacion libre del bot via Chatwoot → Twilio → WhatsApp.

PASO 3 — Lead NO responde (follow-up templates)

Status: Lead / ATTEMPTED_TO_CONTACT

Cron: follow-ups 3x/dia (10am, 2pm, 6pm CDMX). Busca conversaciones con 24h+ sin respuesta.

Follow-up 1 (a las 24h):

"Hola 1! Pasaba a saludarte. Pudiste pensar en lo que platicamos sobre Sellerfy? Si tienes alguna duda, estoy por aca para ayudarte."

Follow-up 2 (48h despues del F1 — 72h total):

"Hola 1! Solo queria dejarte saber que si en algun momento quieres ver como Sellerfy puede optimizar tu rentabilidad, con gusto agendamos una demo. Exito con tus ventas!"

14 dias + 2 follow-ups sin respuesta → LOST (lifecycle=lead, status=BAD_TIMING)

PASO 4 — Demo agendada (deal creado + reminder)

Status: Opportunity / OPEN_DEAL → Deal en Demo/BANT

Al detectar meeting en HubSpot + booking_link_sent=true:

  • Se crea Deal en stage Demo/BANT con owner, properties, notas
  • Lifecycle → Opportunity

Reminder v2 (~2h antes de la demo):

"Hola 1! Te recordamos tu demo de Sellerfy a las 2. Voy a tener lista la proyeccion de tu tienda para que la veamos en vivo. Aqui tienes el link de acceso: 3. Confirmas que puedes entrar?"

Cron: sync-bookings cada 30min, 8am-7pm. Solo envia si la ventana 24h cerro (sino usa Chatwoot directo).

PASO 5 — No-show (deal movido + reagendamiento)

Deal movido a stage No-Show

Cron: noshow-followups 3x/dia (11am, 3pm, 7pm). Detecta meetings con status NO_SHOW en HubSpot.

No-Show template:

"Hola 1! No pudimos conectarnos en la demo que teniamos agendada. Entendemos que los tiempos a veces no cuadran. Te gustaria reagendar? Solo dime que dia y hora te funciona mejor."

Maximo 3 intentos. noshow_count se incrementa en el deal. Si reagenda → deal vuelve a Demo/BANT (manual).

PASO 6 — Post-demo (manual)

Deal en Trial / Negociacion / Cerrado

A partir de aqui el equipo de ventas toma control manual. El bot no envia templates ni mueve deals. Las transiciones Trial → Negociacion → Contrato → Cerrado Ganado/Perdido son 100% manuales.

Stripe sync detecta pagos y mueve lifecycle a Customer automaticamente.

Deals Pipeline — Sales Pipeline

Cuando se crea un Deal

Un deal se crea SOLO cuando el lead agenda una demo (fase BOOKED). El bot ejecuta _on_booked() que:

  1. Verifica que no exista un deal duplicado para ese contacto
  2. Crea el deal en stage "Demo/BANT" con pipeline "Sales Pipeline"
  3. Asocia el deal al contacto y al meeting de HubSpot
  4. Setea properties: owner, facturacion_mensual, pain_principal, plan_interes
  5. Registra una nota con resumen de la conversacion
  6. Tambien: el cron sync-external-bookings crea deals para meetings que no tienen deal

Deal Stages (etapas del pipeline)

#StageDealsQuien mueve aquiQue significa
0Demo/BANT16Bot (al agendar demo)Demo agendada, pendiente de realizarse
1Trial2Manual (equipo ventas)Despues de la demo, lead activo trial
2Negociacion0ManualNegociando precio/plan
3Contrato Enviado0ManualPropuesta/contrato enviado
4Cerrado Ganado4Manual / Stripe (indirecto)Cliente pago, deal ganado
5No-Show11Bot (cron noshow-followups)Lead no se presento a la demo
6Cerrado Perdido10ManualLead decidio no comprar
7Repesca2ManualRe-engagement de deals perdidos o no-show

Total: 45 deals | Pipeline: Sales Pipeline (unico)

Properties custom en Deals

facturacion_mensual

Opciones: <5k, 5k-50k, >50k USD

plan_interes

Opciones: Lite, Growth, Scale

pain_principal

Texto libre — dolor principal del seller

noshow_count

Numero de no-shows (max 3 intentos)

Funnel completo: Bot → Deal → Cliente

BOT                           DEALS                        STRIPE
===                           =====                        ======

GREETING ──────────────────── (no deal)
    |
DISCOVERY ─────────────────── (no deal)
    |
INFORMING ─────────────────── (no deal)
    |
PROPOSING ─────────────────── (no deal)
    |
BOOKED ──── _on_booked() ──→ Demo/BANT (16)
                                  |
                              ¿Se presento?
                             /              \
                           SI                NO
                           |                  |
                        Trial (2)        No-Show (11)
                           |                  |
                      ¿Compro?           Repesca (2)
                     /        \               |
                   SI          NO          ¿Reagendo?
                   |            |          /        \
             Cerrado         Cerrado     SI         NO
             Ganado (4)      Perdido (10)  |          |
                   |                    Demo/BANT  Cerrado
                   v                              Perdido
              subscription ──→ Customer (23)
              canceled    ──→ Churn (211)

AUTOMATICO (bot):  Demo/BANT, No-Show
MANUAL (equipo):   Trial, Negociacion, Contrato, Cerrado Ganado/Perdido, Repesca
STRIPE (sync):     Customer, Churn
      

Reglas exactas: que mueve un Deal entre stages

→ Demo/BANT (automatico)

Trigger: _on_booked() cuando la conversacion llega a fase BOOKED.

Tambien: cron sync-external-bookings crea deals para meetings que existen en HubSpot pero no tienen deal asociado.

Properties seteados automaticamente: owner (Miguel/Jose), facturacion_mensual, pain_principal, descripcion con resumen de conversacion, meeting time.

Demo/BANT → No-Show (automatico)

Trigger: cron noshow-followups (3x/dia) detecta meetings con status NO_SHOW en HubSpot.

Tambien detectado en el webhook cuando el lead escribe: check_meeting_noshow() corre en cada mensaje de un lead en fase BOOKED.

Acciones: mueve deal a stage No-Show, incrementa noshow_count, envia template de reagendamiento, lead status → ATTEMPTED_TO_CONTACT.

Maximo 3 intentos de no-show. Despues el deal queda estancado (no hay automatizacion para mover a Cerrado Perdido).

Demo/BANT → Trial / Negociacion / Contrato Enviado (MANUAL)

El bot NO mueve deals a estas etapas. Son transiciones manuales que hace el equipo de ventas despues de la demo.

→ Cerrado Ganado (MANUAL / Stripe indirecto)

El bot NO mueve deals a Cerrado Ganado. El equipo lo hace manualmente, o indirectamente cuando Stripe sync detecta una suscripcion activa y cambia lifecycle a Customer.

→ Cerrado Perdido (MANUAL)

Solo manual. El bot no cierra deals como perdidos — el equipo decide.

→ Repesca (MANUAL)

Solo manual. Para re-engagement de deals en No-Show o Cerrado Perdido que muestran interes de nuevo.

Resumen: Automatico vs Manual

Bot automatiza

  • Crear deal (Demo/BANT) al agendar demo
  • Mover a No-Show al detectar no-show
  • Setear owner, properties, notas
  • Lifecycle stage en cada fase
  • Lead status en cada fase
  • Follow-ups y marcar LOST

Equipo hace manual

  • Mover deal a Trial despues de la demo
  • Mover a Negociacion / Contrato Enviado
  • Cerrar como Ganado o Perdido
  • Repesca de deals estancados
  • Marcar como UNQUALIFIED

Punto critico: No-Show es el mayor cuello de botella

11 de 45 deals (24%) estan en No-Show. El bot envia template de reagendamiento y el cron reintenta 3 veces. Si no reagendan, el deal queda estancado — considerar mover a Cerrado Perdido despues de 3 intentos.