Manual Operativo
Completo
Guia integral para el equipo comercial y de marketing. Producto, proceso de ventas, tecnologia, CRM, analytics y operaciones.
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 |
| hola@sellerfy.ai | |
| +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)
Orientados a resultados y numeros
Toman decisiones basadas en metricas, no intuicion. Valoran dashboards accionables sobre reportes estaticos.
Frustrados con herramientas pasivas
Han probado tools que muestran datos sin decir que hacer. Quieren recomendaciones claras, no mas graficos que interpretar.
Buscan escalar sin multiplicar costos
Quieren crecer su operacion sin contratar mas personas ni aumentar proporcionalmente sus gastos operativos.
Valoran el tiempo por sobre todo
Dedican horas semanales a tareas repetitivas (Excel, reportes manuales). Quieren automatizar lo operativo para enfocarse en estrategia.
Quieren ventaja competitiva con tecnologia
Entienden que la IA es el diferenciador. Buscan herramientas que los pongan un paso adelante de su competencia.
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
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.
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.
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.
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.
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 planesAsistente 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.
2. Net Profit Real
Todos los planesCalcula 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.
3. Monitor (Torre de Control)
Todos los planesDashboard 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 planesSistema 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 + ScaleControl 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 + ScalePanel 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 exclusivoMonitor 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 planesConecta 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 planesAntes 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 + ScalePermite 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 planesConjunto 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 exclusivoEnvio 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
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.
Growth
Para escalar con estrategia y control de rentabilidad
Sofi IA: 5 recomendaciones/mes por categoria
Sincronizacion: cada 4 dias
Incluido (todo de Lite +)
- Monitor de Publicidad (ACOS/ROAS)
- Monitor de Finanzas
- Control de Costos (Landed Cost)
- Net Profit Real completo
- Sofi IA (5 reco/mes por categoria)
- Analisis de competencia
- Alertas avanzadas
- Chat prioritario (respuesta <24h)
- 1 llamada mensual de seguimiento estrategico
No incluido
- Playlists (Modulos de Accion)
- Diagnostico por WhatsApp
- Actualizacion ilimitada de datos
Ideal para sellers en crecimiento que necesitan controlar publicidad y rentabilidad con hasta 300 productos por marketplace.
Scale
Solucion premium para vendedores de alto volumen
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
Abrir app.sellerfy.ai en el navegador del celular (preferiblemente Google Chrome).
-
2
Tocar el menu de opciones (tres puntos verticales en Chrome, o el icono de compartir en Safari).
-
3
Seleccionar "Agregar a la pantalla de inicio" (o "Add to Home Screen").
-
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.
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.
ActivaMercado 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.
ActivaStripe
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.
ActivaProximamente (Roadmap)
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.
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%.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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."
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."
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.
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.
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.
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.
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...”).
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.
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.
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
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.
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
- • 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.") | |
| 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
#salespara 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.
| Componente | Detalle |
|---|---|
| Stack | Flask + Gunicorn + Chatwoot + HubSpot + Twilio + Claude (Sonnet 4 para respuestas, Haiku 4.5 para extraccion/validacion) |
| Servidor | 134.199.231.196 (DigitalOcean droplet) |
| Servicio | sellerfy-bot.service (Gunicorn, puerto 5200) |
| Chatwoot | sellerfychat.pabesfu.com (Account 1, Inbox 1) |
| Base de Datos | SQLite con WAL mode para acceso concurrente (5 tablas) |
| Modelo Principal | claude-sonnet-4-20250514 — genera respuestas conversacionales |
| Modelo Economico | claude-haiku-4-5-20251001 — extraccion de datos y validacion anti-alucinacion |
| Idiomas | Espanol (primario), Ingles, Portugues — deteccion automatica, prompts localizados |
| Concurrencia | Semaforo 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.
| Usuario | Password | Rol | |
|---|---|---|---|
| Pablo Estrada | pablo@sellerfy.ai | Sellerfy2026! | Administrator |
| Miguel Camargo | miguel@sellerfy.ai | MiguelSfy2026! | 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.
| Proteccion | Detalle |
|---|---|
| Solo cold_leads | Filtra por classify_contact(): si el contacto es registered, trial, customer, o churn, se skipea |
| Dedup por telefono y HubSpot ID | Si ya tiene conversacion en la DB del bot, se skipea — nunca se contacta dos veces |
| Requiere telefono | Leads 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 batch | HubSpot hard limit de 20 resultados por llamada al Search API |
| Cursor persistente | Archivo 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.
| Regla | Detalle |
|---|---|
| Ventana stale | 48 horas sin mensaje del lead |
| Max follow-ups | 2 intentos (template distinto por intento) |
| Marca LOST | 14 dias inactivo + 2 follow-ups = LOST + lifecycle BAD_TIMING en HubSpot |
| Horario | 8am-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.
| Regla | Detalle |
|---|---|
| Ventana | Meetings creadas en las ultimas 72 horas |
| Filtro de titulo | Sellerfy, Intro, Demo, Onboarding, Conoce, Miguel Angel Camargo |
| Dedup | Si el contacto ya tiene deal, se skipea |
| Deal creado | Nombre con fecha, owner = owner del meeting, stage = Demo/BANT, asociado a contacto y meeting |
| Cron | Cada 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
| Cron | Frecuencia | Horario CDMX | Que hace |
|---|---|---|---|
| poll-leads | 10 min | 8am-8pm | Outreach a leads nuevos (formularios) |
| backlog-outreach | 1h | 10am-4pm | 20 leads/h del backlog (~120/dia) |
| follow-ups | 3x/dia | 10am, 2pm, 6pm | Follow-up a leads stale (48h) |
| sync-bookings | 30 min | 8am-8pm | Crea deals para meetings externas sin deal |
| noshow | 3x/dia | 11am, 3pm, 7pm | Detecta no-shows, mueve deal, re-agendar |
| daily-report | 1x/dia | 9pm | Reporte de engagement con deltas |
| backup-db | 1x/dia | 5am UTC | Backup 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
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.
Autenticacion del webhook
Verifica que el account.id del evento coincida con CHATWOOT_ACCOUNT_ID. Si no coincide, rechaza con 403.
Filtrado de mensajes entrantes
Solo procesa eventos message_created de tipo incoming (no privados). Ignora mensajes salientes, notas internas, y otros eventos de Chatwoot.
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.
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).
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.
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.
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.
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).
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.
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.
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").
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.
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.
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.
| Archivo | Funcion | Descripcion |
|---|---|---|
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
| Fase | Objetivo | Link de demo | Transicion |
|---|---|---|---|
| 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.
| Campo | Tipo | HubSpot Property | Descripcion |
|---|---|---|---|
| contact_name | str | firstname | Nombre del contacto |
| contact_lastname | str | lastname | Apellido del contacto |
| str | Email del seller | ||
| company_name | str | company | Nombre de la empresa o marca |
| marketplace | enum | marketplace | "amazon", "mercadolibre", o "ambos". Se mapea a enum HubSpot: Amazon, Mercado Libre, Ambos |
| sku_count | int | numero_de_skus | Numero aproximado de productos/SKUs |
| monthly_revenue | str | annualrevenue | Facturacion mensual como texto ("10K-50K USD", "$20,000") |
| main_pain | str | motivo_de_interes | Dolor principal ("no se cuanto gano", "mucho tiempo en Excel") |
| current_tools | str | herramientas_actuales | Herramientas que ya usa ("Helium 10", "Excel", "ninguna") |
| segment | enum | tipo_seller | Tipo de seller: Seller, Marca Propia, Agencia, Arbitraje, Dropshipping |
| country | str | country | Pais del seller |
| url_amazon | str | url_amazon | URL de la tienda en Amazon |
| url_mercado_libre | str | url_mercado_libre | URL de la tienda en MercadoLibre |
| experience | str | experiencia_seller | Tiempo vendiendo en marketplaces. Se mapea a enum: <1 ano, 1-5 anos, >5 anos |
| revenue_range | str | rango_facturacion | Rango de facturacion mensual. Se mapea a enum: <5k, 5k-50k, >50k |
| wants_demo | bool | — | True si el seller expresa interes en ver/probar la plataforma |
| demo_confirmed | bool | — | True solo si claramente confirman que agendaron/quieren la demo |
| language | enum | — | "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.
| Aspecto | Detalle |
|---|---|
| Se presenta como | "Equipo de Sellerfy" — nunca un nombre falso, nunca "Autonomous" |
| Personalidad | Curioso, 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. |
| Tono | Se 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 verdad | Responde 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 pedir | Por 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". |
| Emojis | Maximo 1-2 por mensaje, solo cuando suman. Usa: grafico, foco, apretones de manos, risa. NUNCA: cohete, fuego, musculo, destellos (suenan a marketing). |
| Formato | 2-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)
outreach.py busca nuevos contactos en HubSpot (ventana 60 min)Flujo 2: ORGANICO (nos escriben)
/hooks/sellerfy4.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.
| Columna | Tipo | Descripcion |
|---|---|---|
| conversation_id | INTEGER PK | ID de conversacion Chatwoot |
| hubspot_contact_id | TEXT | ID del contacto en HubSpot |
| phone | TEXT | Telefono normalizado E.164 |
| phase | TEXT | Fase actual (GREETING, DISCOVERY, etc.) |
| origin | TEXT | "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_range | MIXED | Todos los campos extraidos de la conversacion |
| wants_demo, demo_confirmed, booking_link_sent, reminder_sent | INTEGER | Flags booleanos del funnel de demo |
| contact_profile | TEXT | Clasificacion: cold_lead, registered, trial_active, etc. |
| language | TEXT | Idioma detectado (es/en/pt) |
| follow_up_count, follow_up_at | INT/TEXT | Tracking de follow-ups enviados |
| noshow_count, noshow_at | INT/TEXT | Tracking de no-shows a demos |
| meeting_time | TEXT | Hora de la demo agendada (ISO) |
| messages_count | INTEGER | Total de mensajes en la conversacion |
| last_message_at, created_at | TEXT | Timestamps 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.
| Escenario | Trigger | Accion | Limite |
|---|---|---|---|
| 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.
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.
Respuesta al seller
"Dejame confirmarlo con el equipo y te escribo" — respuesta honesta y profesional.
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).
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.
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.
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).
| Archivo | Contenido | Datos 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)
| Archivo | Contenido |
|---|---|
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
| Operacion | Comando |
|---|---|
| Health check | curl http://127.0.0.1:5200/health |
| Status del container | docker ps -f name=sellerfy-nurture |
| Logs en vivo | docker logs sellerfy-nurture -f --tail 100 |
| Reiniciar container | docker restart sellerfy-nurture |
| Stats del bot | curl http://127.0.0.1:5200/api/stats -H "Authorization: Bearer $ADMIN_TOKEN" |
| Escalaciones pendientes | curl 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 | 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
Deteccion de form leads
/poll-leads busca en HubSpot contactos creados en los ultimos 60 minutos que tengan telefono.
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.
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.
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.
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.
| Mecanismo | Frequencia | Horario | Volumen |
|---|---|---|---|
| Poll-leads (nuevos) | Cada 10 min | 8am-8pm CDMX | ~20/dia (depende de registro) |
| Backlog-outreach | Cada hora | 10am-4pm CDMX | ~120/dia (20/hora x 6h) |
| Follow-ups | 3x/dia | 10am, 2pm, 6pm | Leads 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:
| Contacto | Monto | Intentos | Fechas |
|---|---|---|---|
| Veronica Pernia | $421 (anual) | 4x | Feb 25 - Mar 2 |
| Alberto Resnik | $149 (mensual) | 1x | Feb 28 |
| Juan Carlos Villarreal | $79.20 | 1x | Mar 5 |
| javiercrbz@gmail.com | $149 (mensual) | 6x | Mar 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)
| Metrica | Valor |
|---|---|
| Total suscripciones activas Stripe | 23 |
| 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 pipeline | 43 |
| Meetings sin outcome actualizado | 22 (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
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.
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.
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.
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.
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.
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.
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
else → cold_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 |
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)
HubSpot: Contacto creado automaticamente (lifecycle=lead, status=NEW). Bot: Responde con IA, fase GREETING. Humano: No interviene.
Entrada B: Lead de formulario web
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)
HubSpot: Contacto ya existia. Bot: Template de bienvenida, crea conversacion, fase DISCOVERY. Humano: No interviene. ~120 leads/dia.
Journey completo paso a paso
Primer contacto
Template de bienvenida (form/backlog) o respuesta IA (organico)
Nada
Contacto: lifecycle=
lead, status=NEWDiscovery (2-4 mensajes)
Valor primero, 1 pregunta/msg. Extrae: marketplace, dolor, SKUs, empresa
Nada — solo monitorea en Chatwoot si quiere
Contacto: status=
CONNECTED, properties actualizadas con datos extraidosInforming (crear deseo)
Net Profit, Sofi IA, social proof. Comparte link de demo cuando hay interes claro
Nada
Contacto: lifecycle=
MQL, status=IN_PROGRESSProposing (link enviado, esperando agendar)
Resuelve dudas, maneja objeciones. Recuerda link UNA vez si no agendan
Nada (a menos que el bot escale)
Contacto: lifecycle=
SQL (si configurado), status=IN_PROGRESSBooked (demo agendada)
Felicita, tips de prep. Crea Deal automaticamente. Asigna owner (Miguel o Jose)
TOMA EL CONTROL: Miguel o Jose dan la demo. Preparan ficha HubSpot
Deal creado (
appointmentscheduled), lifecycle=opportunity, status=OPEN_DEAL, owner=rep asignado, nota con resumen de conversacionPost-demo y cierre
Follow-up post-demo: pregunta como fue, guia hacia plan, maneja objeciones finales
Cierra: Comparte cotizacion (Quote HubSpot), link de Stripe, negocia
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.
| Tarea | Bot | Humano (SDR) |
|---|---|---|
| Primer contacto / bienvenida | Automatico Template o IA | — |
| Discovery (preguntas, datos) | Automatico IA conversacional | — |
| Info de producto / pricing | Automatico IA + KB validado | — |
| Compartir link de demo | Automatico Link de Miguel o Jose (persistente) | — |
| Manejo de objeciones | Automatico IA + battlecards | — |
| Creacion de deal en HubSpot | Automatico Al detectar meeting | — |
| Extraccion de datos al CRM | Automatico Haiku extrae, sync a HubSpot | — |
| Follow-ups a leads frios | Automatico Templates (max 2) | — |
| Pregunta fuera del KB | Crea ticket, escala | Responde via Chatwoot o HubSpot |
| Dar la demo | — | Miguel o Jose con ficha de HubSpot preparada |
| Follow-up post-demo | Automatico IA pregunta como fue | Si necesita intervencion, toma la conv |
| Cerrar venta / cotizacion | — | SDR cierra Quote HubSpot + link Stripe |
| Mover deal stages | — | Solo humanos en HubSpot (excepto appointmentscheduled) |
| Soporte a cliente existente | Detecta perfil, crea ticket | Resuelve 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.
| Template | Cuando se envia | Trigger (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
| Cron | Frecuencia | Horario CDMX | Que hace |
|---|---|---|---|
| sellerfy-poll-leads.sh | Cada 10 min | 8am – 8pm | Busca leads nuevos en HubSpot, envia welcome template |
| sellerfy-backlog-outreach.sh | Cada hora | 10am – 4pm | 20 leads del backlog, welcome template, ~120/dia |
| sellerfy-follow-ups.sh | 3x/dia | 10am, 2pm, 6pm | Follow-up a stale (24h), marca LOST (14d+2 follow-ups) |
| sellerfy-daily-report.sh | 1x/dia | 9pm | Reporte 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)
booking_link_sent=trueIncluye: descripcion con contexto de la conversacion, nota en contacto/deal, notificacion en Chatwoot.
Via 2: Sync de bookings externos (cron cada 30 min)
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
| Propiedad | Valor | Origen |
|---|---|---|
| dealname | Demo - Nombre - 17 Mar 2026, 10:00 AM (Empresa) | contacto + meeting + estado |
| hubspot_owner_id | ID del rep asignado (Miguel: 86642356, Jose: 86642358) | rep persistido en la conversacion |
| pipeline | default | fijo |
| dealstage | appointmentscheduled | fijo (unico stage que el bot escribe) |
| dealtype | newbusiness | fijo |
| amount | Revenue mensual (si se extrajo) | conversacion |
| marketplace_deal | Amazon / Mercado Libre / Ambos | conversacion |
| pain_principal | Dolor principal del seller | conversacion |
| description | Resumen completo: hora, empresa, marketplace, SKUs, revenue, dolor, tools, experiencia, origen | bot (auto-generado) |
| hs_next_step | Demo 17 Mar 2026, 10:00 AM | meeting |
Acciones adicionales al crear deal
opportunityPipeline completo de deals (Sales Pipeline)
| Etapa | ID | Quien mueve | Descripcion |
|---|---|---|---|
| Demo/BANT | appointmentscheduled | Bot | Deal creado automaticamente al detectar meeting. Unica etapa que el bot escribe. |
| Trial | qualifiedtobuy | SDR | Demo completada, seller en periodo de prueba |
| Negociacion | presentationscheduled | SDR | Negociando plan/precio |
| Contrato Enviado | contractsent | SDR | Quote/cotizacion enviada, esperando pago |
| Cerrado Ganado | closedwon | SDR | Cliente pago y esta activo |
| No-Show | 1323275842 | Bot o SDR | Seller no se presento. Bot mueve automaticamente si meeting=NO_SHOW. Bot envia hasta 3 templates de re-agendamiento |
| Cerrado Perdido | closedlost | SDR | Oportunidad perdida definitivamente |
| Repesca | 1311280404 | SDR | Lead frio que vale la pena reintentar mas adelante |
Flujo de No-Show automatico
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
| Rep | Link de meetings | HubSpot Owner ID |
|---|---|---|
| Miguel Camargo | comunidad.sellerfy.ai/meetings/miguel-camargo | 86642356 |
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
| Metrica | Valor |
|---|---|
| Total sellers encontrados | 6,379 |
| Subidos a HubSpot | 3,224 (con contacto validado) |
| Con WhatsApp validado | 1,662 |
| Con email | 2,191 |
| Hot leads (WA + email) | 700 |
| Amazon MX / MercadoLibre MX | 1,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 Sherlock | 609 sellers historicos de 74 runs del agente Sherlock (Jan-Mar 2026) |
| Fase 1: Apify Turbo | 541 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 paralelo | 27% hit rate → +1,505 contactos. Busca "{seller} contacto telefono email" |
| Fase 3: Brave agresivo | 3% hit rate → +60 contactos. Segunda pasada con queries diferentes |
| Fase 4: Multi-strategy | 29% hit rate → +1,145 contactos. Perplexity website discovery + Brave deep + redes sociales |
| Fase 5: Validacion | Limpieza, 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 HubSpot | 3,224 contactos con origen Claude Leadgen, lifecycle=lead, lead_status=NEW |
| Fase 7: Enriquecer campos | marketplace, lead_quality, city, website, tipo_seller en HubSpot |
Scripts y ejecucion
Todos los scripts estan en ~/sellerfy-leads/. Se ejecutan en orden:
| # | Script | Fase |
|---|---|---|
| 1 | turbo_extract.py | Extraccion Apify (ML + Amazon) |
| 2 | enrich_parallel.py | Brave Search paralelo |
| 3 | enrich_massive.py | Brave segunda pasada |
| 4 | enrich_creative.py | Perplexity + Social |
| 5 | validate_and_enrich.py | Validacion + categorias |
| 6 | upload_hubspot.py | Upload a HubSpot |
| 7 | update_contacts.py + update_extra_fields.py | Enriquecer campos extra |
APIs y costos
| API | Uso | Costo por 10K | Key |
|---|---|---|---|
| Apify | Extraccion ML + Amazon | ~$100-150 | APIFY_API_KEY |
| Brave Search Pro | Enriquecimiento contactos | Incluido en plan | BRAVE_API_KEY_PRO |
| Perplexity | Website discovery + categorizacion | ~$5-10 | PERPLEXITY_API_KEY |
| HubSpot | CRM upload | $0 | HUBSPOT_TOKEN |
Bugs criticos resueltos
- ML Apify: campo
countrydebe ser URL (https://listado.mercadolibre.com.mx/), NO string - Amazon Apify: usa
startUrls(array), NOsearchUrl - HubSpot phone:
+52XXXXXXXXXX(12 dig), NO+521XXXXXXXXXX(13 dig) notes_last_updatedes read-only en HubSpotlead_sourceno existe; usarutm_source+ customorigen
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:
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
| Metrica | Valor |
|---|---|
| Contactos importados | 20,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 URLs | 5,323 |
| MercadoLibre URLs | 2,479 |
| LinkedIn / Instagram / Facebook | 1,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_typeinstagram_url,facebook_urldata_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.
| Script | Que hace | Frecuencia |
|---|---|---|
| stripe_sync.py | Sincroniza suscripciones Stripe → HubSpot: plan_name, MRR, status, detecta churns. Fuente de verdad para clasificar clientes | Diario 6am UTC |
| analytics_sync.py | Enriquece contactos con GA4 (fuente adquisicion, landing page, campana). Genera reporte diario de funnel | Diario 7am UTC |
| gclid_conversions.py | Sube conversiones offline a Google Ads cuando un lead con GCLID paga en Stripe | Manual |
| ltv_backfill.py | Calcula LTV, months_as_customer y funnel_stage con datos de Stripe → HubSpot | Manual/periodico |
| intercom_backfill.py | Migro datos legacy Intercom → HubSpot: signup_date, browser, region. 4,045 contactos. One-off (completado) | One-off |
Stripe Sync: flujo
Propiedades: plan_name, mrr, stripe_subscription_status, lifecyclestage=customer. Key: STRIPE_SYNC_KEY en .env.local.
UTM Tracking: frontend a HubSpot
| Archivo | Donde | Que hace |
|---|---|---|
| utm_tracking_code.js | head de sellerfy.ai | Captura UTMs del URL, cookie 30d |
| utm_registration_example.js | Form registro | Agrega UTMs al payload del backend |
| utm_hubspot_backend_example.py | Backend (ejemplo) | Incluye utm_source, utm_medium, gclid al crear contacto |
Google Ads GCLID: conversion offline
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.
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.
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.
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.
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.
Integraciones conectadas al portal
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.
Visitante suscrito al sitio web. Etapa por defecto para contactos importados o creados sin interaccion directa.
Contacto con interes declarado. Llego por formulario, WhatsApp, o cualquier canal de contacto. El bot crea automaticamente todo contacto nuevo como Lead.
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).
Marketing Qualified Lead. Ha interactuado con contenido, perfil validado. Tiene suficiente engagement para considerarse calificado por marketing.
Contacto con demo agendada o interes confirmado de compra. El bot avanza automaticamente a esta etapa cuando el contacto llega a fase BOOKED.
Cliente activo que paga una suscripcion. stripe_sync.py actualiza automaticamente: si hay suscripcion activa en Stripe, el contacto es Customer.
Cliente promotor que refiere a otros sellers. Asignacion manual por el equipo comercial cuando se identifica un promotor activo.
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
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).
SOLO cuando el contacto llega a fase BOOKED en el bot (demo agendada). Nunca antes. No crear deals para leads que aun no agendaron.
Todos manuales excepto "Visita Agendada" que se crea automaticamente al generar el deal. El equipo comercial avanza manualmente los stages.
El bot NO asigna owner a contactos ni deals. Cuando el lead llega a BOOKED o se hace handoff, se asigna a Gisela manualmente.
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.
Usar la herramienta de Cotizaciones de HubSpot para enviar links profesionales de pago al cliente despues de la demo.
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.
5.7 Intercom Backfill
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.
Campos poblados
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)
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.
Como se calcula el LTV
status=paid) del cliente via Stripe API.amount_paid de cada invoice (en centavos, convertido a dolares). Este es el LTV real, no estimado.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.
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.
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.
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.
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.
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.
Pipeline stages
El pipeline de deals tiene 8 etapas ordenadas segun el flujo real de ventas:
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.
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.
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.
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.
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.
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
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 |
| 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.
Nuevo
Contacto recien creado. Aun no hay conversacion significativa. Fase bot: GREETING.
Conectado
Ya hay conversacion activa, el seller respondio. Fase bot: DISCOVERY o ESCALATED.
En progreso
El lead esta recibiendo informacion o ya se le envio link de demo. Negociacion activa. Fase bot: INFORMING o PROPOSING.
Deal abierto
Tiene demo agendada o deal creado en el pipeline. Fase bot: BOOKED. El SDR debe tomar control.
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.
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.
No calificado
Asignacion manual. El seller no cumple con criterios minimos (no vende en marketplaces, no tiene tienda activa, etc.).
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
descriptionypain_principalantes 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
Persistencia y API
Se actualiza en cada visita con nuevos parametros (last touch). Se borra automaticamente despues de 30 dias de inactividad.
Guarda el primer touch de forma permanente. Nunca se sobrescribe: preserva la atribucion original del usuario.
window.SellerfyUTM.get() // ultimo touchwindow.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
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.
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.
Cuando el usuario se registra (via Memberstack), el GCLID se envia como property del contacto a HubSpot. Esta parte esta PENDIENTE.
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.
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.
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
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
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)
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
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 webcampaigns — Performance de campanasrealtime — Usuarios activos ahora mismo6.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:
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
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
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().
Incluir en la request a HubSpot: utm_source, utm_medium, utm_campaign, utm_term, utm_content, gclid, referrer (como first_referrer), landing_page.
Logica: utm_medium=cpc o gclid presente = Google Ads, utm_medium=organic = Organic Search, etc. Enviar como property acquisition_channel.
Impacto de no completar
No se sabe que canal genero cada cliente. Las decisiones de marketing se toman a ciegas.
gclid_conversions.py esta activo pero no encuentra contactos con GCLID porque los GCLIDs no llegan a HubSpot.
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.
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.
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
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.
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.
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.
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
Acceder vía
app.sellerfy.ai(URL correcta, no otra dirección) - 2 Cerrar sesión y volver a entrar — soluciona la mayoría de errores de carga
- 3 Desactivar bloqueadores de anuncios — ocultan gráficas de ventas y pueden impedir la carga de componentes
- 4 Usar Google Chrome — navegador con optimización preferente para Sellerfy
Panel vacío / $0 en el dashboard
- 1 Verificar estado de conexión: el logo de Amazon o Mercado Libre debe aparecer en verde
- 2 La primera sincronización toma 12-24 horas — es completamente normal ver $0 durante este periodo
- 3 Verificar que la tienda tenga publicaciones activas en el marketplace
- 4 Verificar que la cuenta no esté en modo vacaciones — Sellerfy no puede sincronizar datos si la tienda está pausada
-
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.
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.
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).
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."
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.
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).
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Pablo Estrada
CEO / Product Engineer
Dirección de producto, arquitectura de plataforma, estrategia de negocio. No mencionar en conversaciones comerciales.
Mateo Quintero
CTO
Arquitectura técnica, infraestructura, liderazgo de ingeniería.
Andrés León
Data + Backend Engineer
Pipelines de datos, integraciones de marketplace, APIs backend.
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)
hola@sellerfy.ai
+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
| Componente | Detalle |
|---|---|
| Runtime | Docker container sellerfy-nurture, puerto 5200, droplet 134.199.231.196 |
| Modelo principal | Claude Opus 4.6 (temperature 0.3) — genera respuestas conversacionales |
| Modelo extraccion | Claude Sonnet 4.6 — extraccion de datos y validacion anti-alucinacion |
| Dashboard | sellerfychat.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.
| Tipo | Criterio | Que hace el bot |
|---|---|---|
customer_active | Stripe status=active | Soporte tecnico, no ofrece demos |
churn | Stripe status=canceled | Win-back, menciona mejoras, ofrece demo si interesa |
trial_active | trial_end_date > hoy | Guia de trial, maximizar uso, upgrade |
trial_expired | trial_end_date < hoy | Reactivacion, segunda oportunidad |
registered | memberstack=true o preview data | Activacion, guiar a primera compra |
cold_lead | Todo lo anterior es false | Pipeline de 7 fases (GREETING→BOOKED) |
10.3 Funnel de 7 Fases (cold_lead)
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
| Transicion | Trigger |
|---|---|
| GREETING → DISCOVERY | marketplace + dolor capturados, O ≥3 mensajes, O wants_demo |
| DISCOVERY → INFORMING | Interes claro detectado |
| INFORMING → PROPOSING | Demo link enviado |
| PROPOSING → BOOKED | Meeting confirmado en HubSpot |
| Any → ESCALATED | Respuesta fuera de KB |
| Any → LOST | 14 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
| Cron | Script | Frecuencia | Horario CDMX | Que hace |
|---|---|---|---|---|
| Poll leads | sellerfy-poll-leads.sh | Cada 10min | 8am-7pm | Outreach a form leads nuevos |
| Backlog outreach | sellerfy-backlog-outreach.sh | Cada hora | 10am-3pm | 20 leads/hora del backlog |
| Follow-ups | sellerfy-follow-ups.sh | 3x/dia | 10am, 2pm, 6pm | Follow-up stale 48h |
| Sync bookings | sellerfy-sync-bookings.sh | Cada 30min | 8am-7pm | Detecta meetings, envia reminders |
| No-show | sellerfy-noshow.sh | 3x/dia | 11am, 3pm, 7pm | Detecta no-shows, envia reagendar |
| Daily report | sellerfy-daily-report.sh | 1x/dia | 9pm | Reporte engagement del dia |
| Backup DB | backup-db.sh | 1x/dia | 5am UTC | Backup 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 Chatwoot | Asignacion | Bot responde? |
|---|---|---|
| pending | cualquiera | Si |
| open | unassigned | Si |
| open | human assigned | No (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).
| Mecanismo | Detalle |
|---|---|
| Deteccion por texto | 15+ patrones regex (ej: "gracias por comunicarte", "fuera de horario", "te responderemos") |
| Deteccion por timing | Respuesta en <10 segundos desde el outreach |
| Marcado en DB | is_auto_reply=1 — excluido de metricas |
| Comportamiento del bot | Se 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
Detona: Import HubSpot, formulario web, Google Ads, o WhatsApp organico
Template: ninguno | Cron: automatico al crear
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
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
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
Detona: Bot envia link de demo (Miguel o Jose). booking_link_sent=true
Template: ninguno — Bot comparte link de HubSpot Meetings en la conversacion
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)
Detona: Equipo de ventas mueve manualmente despues de la demo. El bot NO interviene.
Template: ninguno | Cron: ninguno
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)
Template: Follow-up 1 (24h) → Follow-up 2 (72h)
Cron: follow-ups 3x/dia
LOST
Detona: 14 dias + 2 follow-ups sin respuesta
Si vuelve a escribir → re-abre en DISCOVERY
No-Show 11 deals
Template: No-Show (reagendar) max 3 intentos
Cron: noshow-followups 3x/dia
Escalado 6
Detona: Pregunta fuera del KB → "Dejame confirmarlo"
Si da datos → re-abre en DISCOVERY o INFORMING
Churn 211
Detona: Stripe sync (subscription canceled)
Bot hace win-back si escriben al WhatsApp
Cerrado Perdido / Repesca 12 deals
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
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).
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).
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).
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.
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:
- Fase → ESCALATED
- Crea ticket en HubSpot: "Escalacion Bot — [Nombre]"
- Prioridad: detectada por keywords del mensaje
- Nota privada en Chatwoot
- 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:
- Conversacion se asigna a SALES_AGENT_ID=1 en Chatwoot
- Bot DEJA de responder (is_bot_handling=false)
- Nota privada: "[perfil detectado — handoff a equipo]"
- Crea ticket en HubSpot: "Soporte WhatsApp — [Nombre]"
- 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:
SID: HX1115...cb51 | Status: pendiente aprobacion Meta | Categoria: UTILITY
Support Pipeline (HubSpot Tickets)
| # | Stage | Quien lo mueve |
|---|---|---|
| 0 | New | Bot (al crear ticket automaticamente) |
| 1 | Waiting on contact | Manual — equipo respondio, esperando al cliente |
| 2 | Waiting on us | Manual — cliente respondio, equipo debe actuar |
| 3 | Closed | Manual — 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, mercadosplans.json— 3 planes con precios, features, limitestechnology.json— features core, sync, Sofi IA, comparativabrand.json— testimonios, battlecards, diferenciadoresfaqs.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, movilsoporte_tecnico_v1.md— proceso soporte, triaje, battlecards, HubSpot Service Hubtechnology.json— sincronizacion, intervalos por planplans.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.
| Stage | Contactos | Quien lo mueve aqui | Que significa |
|---|---|---|---|
| Lead | 23,667 | Bot (al crear contacto), Import, Form leads | Contacto nuevo, aun no calificado |
| Fuente de Leads | 41 | Manual | Lead de fuente especifica (embajadores, alianzas) |
| MQL | 14 | Bot (fase INFORMING) | Marketing Qualified Lead — mostro interes, el bot le esta creando deseo |
| SQL | 1 | Bot (fase PROPOSING) | Sales Qualified Lead — link de demo enviado, evaluando |
| Opportunity | 44 | Bot (fase BOOKED) + Sync bookings | Demo agendada, deal creado |
| Customer | 23 | Stripe sync (subscription active) | Cliente con suscripcion activa |
| Churn | 211 | Stripe 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 Bot | Lifecycle Stage | Lead Status |
|---|---|---|
| GREETING | Lead | NEW |
| DISCOVERY | Lead | CONNECTED |
| INFORMING | MQL | IN_PROGRESS |
| PROPOSING | SQL | IN_PROGRESS |
| BOOKED | Opportunity | OPEN_DEAL |
| ESCALATED | sin cambio | CONNECTED |
| LOST | sin cambio | BAD_TIMING |
| Stripe: active | Customer | - |
| Stripe: canceled | Churn | WIN_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_userno crea deals
Follow-ups: cuando se envian y que pasa
| Condicion | Accion | Lead Status |
|---|---|---|
| 24h sin respuesta, follow_up_count=0, fase NO es BOOKED/LOST/ESCALATED, messages_count>0 | Envia Follow-up 1 | ATTEMPTED_TO_CONTACT |
| 48h despues de F1 (72h total), follow_up_count=1 | Envia Follow-up 2 | ATTEMPTED_TO_CONTACT |
| 14 dias total sin respuesta, follow_up_count>=2 | Marca como LOST | BAD_TIMING |
| Lead responde despues de follow-up | Conversacion normal continua, bot responde | Segun fase actual |
| Lead en LOST vuelve a escribir | Re-abre → fase DISCOVERY | CONNECTED |
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.
| Status | Contactos | Quien lo pone | Significado |
|---|---|---|---|
| NEW | 23,224 | Bot (al crear contacto) | Lead nuevo, sin contactar o sin respuesta |
| CONNECTED | 52 | Bot (fase DISCOVERY) | Lead respondio, conversacion activa |
| IN_PROGRESS | 19 | Bot (fase INFORMING/PROPOSING) | Interesado, en proceso de calificacion |
| OPEN_DEAL | 16 | Bot (fase BOOKED) | Demo agendada, deal abierto |
| OPEN | 23 | Manual | En seguimiento manual por el equipo |
| ATTEMPTED_TO_CONTACT | 2 | Bot (follow-up enviado) | Se intento contactar pero no respondio |
| BAD_TIMING | 0 | Bot (fase LOST) | 14 dias inactivo + 2 follow-ups sin respuesta |
| WIN_BACK | 209 | Stripe sync (cancelacion) | Ex-cliente para re-engagement |
| UNQUALIFIED | 2 | Manual | No es target (ej: area de RRHH, empresa incorrecta) |
| sin status | 455 | Imports antiguos | Contactos 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):
Formulario web (tibio)
Cron: poll-leads cada 10min, 8am-7pm
Pool WARM (1 template — Warm 1 ganador 10.7%):
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:
- Verifica que no exista un deal duplicado para ese contacto
- Crea el deal en stage "Demo/BANT" con pipeline "Sales Pipeline"
- Asocia el deal al contacto y al meeting de HubSpot
- Setea properties: owner, facturacion_mensual, pain_principal, plan_interes
- Registra una nota con resumen de la conversacion
- Tambien: el cron
sync-external-bookingscrea deals para meetings que no tienen deal
Deal Stages (etapas del pipeline)
| # | Stage | Deals | Quien mueve aqui | Que significa |
|---|---|---|---|---|
| 0 | Demo/BANT | 16 | Bot (al agendar demo) | Demo agendada, pendiente de realizarse |
| 1 | Trial | 2 | Manual (equipo ventas) | Despues de la demo, lead activo trial |
| 2 | Negociacion | 0 | Manual | Negociando precio/plan |
| 3 | Contrato Enviado | 0 | Manual | Propuesta/contrato enviado |
| 4 | Cerrado Ganado | 4 | Manual / Stripe (indirecto) | Cliente pago, deal ganado |
| 5 | No-Show | 11 | Bot (cron noshow-followups) | Lead no se presento a la demo |
| 6 | Cerrado Perdido | 10 | Manual | Lead decidio no comprar |
| 7 | Repesca | 2 | Manual | Re-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.