lección 7
Día 5: La presentación a Ana
Presenta los resultados al cliente PharmaLife. Enfrenta las preguntas incomodas de Ana, gestiona cambios de última hora y aprende a comunicar datos a no técnicos.
⏱ 55 min
## Viernes 9:30 AM — Ensayo general
Carmen, Iván y tu en la sala ROAS, 30 minutos antes de la call con Ana. Carmen tiene la presentación abierta en Tableau: 3 slides simples con la tabla de reconciliación, el grafico de ROAS por canal y la recomendación. "Repasemos. El mensaje principal son dos cifras y en este orden: el ROAS de primera compra es 1,43x, por debajo de su objetivo de 3x; con el LTV a doce meses es 3,28x, justo por encima. Con el ajuste proporcional, Meta es el canal que mejor rinde, y recomendamos mover presupuesto de Google a Meta. Preguntas?"
Iván anade: "Si Ana pregunta por que los números son tan diferentes a los que reporta Google, explica la doble atribución en 2 frases. No entres en detalle técnico a menos que ella pregunte. Si pregunta por la metodologia, tenemos el doc de 1 pagina que puedes compartir después de la call."
Tu preguntas: "Y si Ana se enfada con los números? El ROAS de primera compra es 1,43x, la mitad de su objetivo de 3x." Carmen te mira: "Le vas a dar las dos cifras, y en este orden: 1,43x en la primera compra, 3,28x contando el LTV a doce meses. La segunda cumple el objetivo, pero solo si la recurrencia se mantiene, y eso es una condición, no una promesa. Ana prefiere la verdad incomoda a la mentira comoda. Por eso nos contrató. Si se enfada, se enfada con los números, no con nosotros."
Iván te da un último consejo: "Cuando hables, no mires la pantalla. Mira a la camara. Y cuando Ana haga una pregunta, espera 2 segundos antes de responder. Eso transmite que estas pensando la respuesta, no recitando de memoria. Y si no sabes algo, di no lo se, lo verifico y te mando un email. NUNCA inventes un número en una call con cliente."
## La call — 10:00 AM
1[Videollamada: PharmaLife Quarterly Review]2[Presentes: Ana Soler (PharmaLife), Carmen, Iván, Tu]34Carmen: Buenos días Ana. Hoy te traemos los números de ROAS real5de enero. Hemos cruzado los datos de las 3 plataformas publicitarias6con vuestro CRM de HubSpot para daros números basados en ventas7REALES, no en lo que reportan Google y Meta.89[Carmen comparte pantalla: tabla de reconciliación]1011Ana: Veo ROAS 1,43x en la primera compra. Es la mitad de mi12objetivo de 3x. Y Google me dice que mi ROAS es casi 2x.13Por que hay TANTA diferencia?1415Carmen: Dos razones. Primera: Google cuenta como conversión16cualquier compra en 30 días tras un click, aunque ese usuario17también hizo click en Meta y recibió un email. Las 3 plataformas18se atribuyen la misma venta. Eso infla un 49.5% las conversiones.1920Segunda: tu objetivo de ROAS 3x está calculado sobre revenue21total incluyendo clientes recurrentes. Pero los 200K que gastas22en ads solo captan NUEVOS clientes. El ROAS de captacion de la23primera compra siempre es más bajo -- el valor está en que esos24clientes recompran.2526Ana: [pausa 3 segundos] Ok, entiendo la inflación. Pero 1,43x27sigue estando lejos de 3x. ¿Estoy perdiendo dinero?2829Iván: Hay un matiz importante de plazos. Los 200K los gastas en30un mes, pero un cliente que captas en enero sigue comprando31durante el año. Con el LTV que nos dais (2,3 compras al año),32lo que van a generar los 3.150 clientes de enero son 655.515 EUR33a doce meses. Sobre el gasto de enero eso es 3,28x.3435O sea que cumples el objetivo por poco, pero con una condición:36que la recurrencia se mantenga. Si las 2,3 compras al año bajan37a 2, el 3,28x se queda en 2,85x. Lo que sí podemos decirte hoy38es dónde está la diferencia entre canales, y ahí hay margen real.3940Ana: Prefiero saberlo. ¿Qué recomendáis?
La presentación: números claros, sin jerga, respuestas preparadas
1Carmen: Tres recomendaciones:231. REDISTRIBUIR: con el ajuste proporcional, Meta rinde un 26%4 más que Google (1,63x contra 1,29x). Mover 10-15% del5 presupuesto de Google a Meta: sobre los 110K de Google,6 son 11K-16,5K EUR/mes.78 Y un matiz que hay que decir en voz alta: con atribución9 lineal el canal más eficiente no es Meta, es Email. Los dos10 modelos no ordenan igual los canales, asi que dejamos escrito11 con cuál se ha decidido cada cosa. Esta recomendación sale12 del ajuste proporcional.13142. OPTIMIZAR EMAIL: Cart Recovery (email) tiene el mejor15 ROI por euro invertido pero está subcapitalizado. Podemos16 aumentar la frecuencia de envios de cart abandonment.17183. MONITORIZAR: Queremos implementar un report semanal19 automatizado con estos números reales para que no tengas20 que esperar al quarterly.2122Ana: Me gusta. Hacedlo. Pero tengo una pregunta más.23Si Google es tan malo... por que no cortamos todo ahi y24ponemos todo en Meta?2526Tu: Porque Google cumple una función de captura de demanda.27Cuando alguien busca "comprar omega 3", ese click de Google28es el que cierra la venta. Sin Google, esas busquedas irian29a la competencia. Lo que si podemos reducir es el gasto en30Display de Google, que tiene el peor rendimiento.3132Ana: Bien. Una última cosa. Necesito estos números CADA SEMANA,33no cada trimestre. Y quiero ver la tendencia: si redistribuimos34presupuesto, quiero ver que el ROAS sube semana a semana.3536Carmen: Listo. Lo implementamos esta semana. Primer report37semanal el lunes que viene.3839Ana: Perfecto. Buen trabajo, equipo.
Las preguntas de Ana y la recomendación accionable
## El cambio de última hora
La call termina a las 10:35. Carmen cierra el portatil satisfecha: "Bien. Ana está contenta. Pero acabais de comprometeros a un report semanal automatizado para el lunes. Eso significa que necesitamos el DAG de Airflow listo en... 3 días." Te mira. Iván te mira. Tu asientes.
1#canal-pharmalife [10:40]23Carmen Reyes: Resumen post-call:4- Ana aprueba la redistribucion Google -> Meta5- Quiere report semanal automatizado empezando lunes6- Raúl: coordina con el equipo de paid para ejecutar7 la redistribucion de presupuesto antes del lunes8- @Tu: DAG de Airflow para el report semanal.9 Deadline: domingo noche funcionando.10- @Iván: revisar el DAG antes de que se ejecute en prod1112Iván Romero: Tranquilo, el DAG es straightforward.13Ya tienes todas las piezas (scripts 01-08). Solo14necesitas orquestarlas con dependencias correctas.15Te ayudo esta tarde si te atascas.1617Raúl Merino: Genial la presentación! Ana me acaba de18mandar un email diciendo "por fin números que entiendo".19La redistribución la hago esta tarde en las plataformas.
Post-call: compromisos claros, deadlines apretados, equipo alineado
Una presentación exitosa a un cliente siempre genera más trabajo inmediato. Es una señal positiva: significa que confian en tu equipo y quieren más. Pero también significa que tienes que cumplir lo prometido. Nunca prometas algo en una call que no puedas entregar — si no estas seguro, di "lo evaluamos y os confirmamos mañana".
## El report semanal automatizado
Por la tarde, te sientas con Iván a disenar el DAG. La logica ya la tienes — solo necesitas orquestarla. Iván te da la plantilla de Airflow que usan en AdPulse para todos los clientes:
1from airflow import DAG2from airflow.operators.python import PythonOperator3# SQLExecuteQueryOperator vive en el provider common-sql, no en airflow.operators.4# Con "from airflow.operators.sql import ..." el DAG ni se parsea: ese modulo no5# existe en Airflow 2.8. Hace falta apache-airflow-providers-common-sql.6from airflow.providers.common.sql.operators.sql import SQLExecuteQueryOperator7from datetime import datetime, timedelta89default_args = {10 'owner': 'data-team',11 'depends_on_past': False,12 'email_on_failure': True,13 'email': ['carmen@adpulse.io', 'ivan@adpulse.io'],14 'retries': 2,15 'retry_delay': timedelta(minutes=5),16}1718with DAG(19 'pharmalife_weekly_report',20 default_args=default_args,21 description='Pipeline semanal PharmaLife: ingesta -> unificacion -> reconciliación -> report',22 schedule='0 7 * * 1', # Lunes 7:00 AM23 start_date=datetime(2024, 1, 1),24 catchup=False,25 # Sin template_searchpath, sql='sql/unify_weekly.sql' se trata como SQL26 # literal en vez de como ruta a un fichero, y la task falla al ejecutarse.27 template_searchpath='/opt/airflow/dags',28 tags=['pharmalife', 'weekly', 'production'],29) as dag:3031 # Las 3 ingestas en PARALELO (no dependen entre si)32 ingest_google = PythonOperator(task_id='ingest_google', python_callable=ingest_google_fn)33 ingest_meta = PythonOperator(task_id='ingest_meta', python_callable=ingest_meta_fn)34 ingest_email = PythonOperator(task_id='ingest_email', python_callable=ingest_email_fn)35 ingest_crm = PythonOperator(task_id='ingest_crm', python_callable=ingest_crm_fn)3637 # Unificacion (necesita las 3 ingestas completadas)38 unify = SQLExecuteQueryOperator(39 task_id='unify_campaigns',40 conn_id='adpulse_postgres',41 sql='sql/unify_weekly.sql',42 )4344 # Reconciliacion (necesita unificacion + CRM)45 reconcile = PythonOperator(task_id='reconcile', python_callable=reconcile_fn)4647 # En paralelo: detectar huerfanas + generar report48 detect_orphans = PythonOperator(task_id='detect_orphans', python_callable=detect_orphans_fn)49 generate_report = PythonOperator(task_id='generate_report', python_callable=report_fn)5051 # Enviar report por email a Ana52 send_report = PythonOperator(task_id='send_report', python_callable=send_email_fn)5354 # Dependencias55 [ingest_google, ingest_meta, ingest_email] >> unify56 [unify, ingest_crm] >> reconcile57 reconcile >> [detect_orphans, generate_report]58 generate_report >> send_report
DAG de Airflow: ingestas en paralelo, luego unificacion y reconciliación secuencial
En producción, las APIs de Google y Meta tienen rate limits y fallan con frecuencia (timeouts, errores 500, cambios de schema sin aviso). Los 2 retries con 5 minutos de espera resuelven el 80% de fallos transitorios. Para el 20% restante, el email_on_failure alerta al equipo para intervención manual.
## Lo que aprendiste sobre presentar a un cliente
Despues de la call, Carmen te da feedback sobre tu participacion en la presentación:
1Carmen Reyes [10:40 - después de la call]:23Feedback rápido:45LO QUE HICISTE BIEN:6- Cuando Ana preguntó por Google vs Meta, respondiste con7 datos: "con el ajuste proporcional, Meta rinde un 26% más8 que Google". No dijiste "yo creo", y ademas dijiste con qué9 modelo. Perfecto: una cifra de eficiencia sin decir con qué10 atribución se ha calculado no significa nada.11- Tu tono era seguro. No vacilaste. Eso genera confianza.1213LO QUE PUEDES MEJORAR:14- Te extendiste demasiado en la explicacion del email.15 En presentaciones: respuesta en 2 frases. Si quieren más,16 preguntan. No ofrezcas información que no han solicitado.17- Cuando diste el número de ROAS, no dijiste las unidades.18 Siempre di: "1,43 euros de vuelta por cada euro invertido19 en el mes". Ana entiende euros, no "x".2021REGLAS PARA PRESENTAR A CLIENTE:221. Respuestas cortas (2-3 frases max)232. Siempre con datos, nunca opiniones243. Si no sabes, di "lo verifico y te confirmo"254. Nunca uses jerga técnica sin explicarla primero265. El silencio del cliente no es malo -- está pensando
Feedback de Carmen: comunicar a clientes es un skill que se entrena
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...
Regístrate para guardar tu progreso.