Saltar al contenido

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]
3
4Carmen: Buenos días Ana. Hoy te traemos los números de ROAS real
5de enero. Hemos cruzado los datos de las 3 plataformas publicitarias
6con vuestro CRM de HubSpot para daros números basados en ventas
7REALES, no en lo que reportan Google y Meta.
8
9[Carmen comparte pantalla: tabla de reconciliación]
10
11Ana: Veo ROAS 1,43x en la primera compra. Es la mitad de mi
12objetivo de 3x. Y Google me dice que mi ROAS es casi 2x.
13Por que hay TANTA diferencia?
14
15Carmen: Dos razones. Primera: Google cuenta como conversión
16cualquier compra en 30 días tras un click, aunque ese usuario
17también hizo click en Meta y recibió un email. Las 3 plataformas
18se atribuyen la misma venta. Eso infla un 49.5% las conversiones.
19
20Segunda: tu objetivo de ROAS 3x está calculado sobre revenue
21total incluyendo clientes recurrentes. Pero los 200K que gastas
22en ads solo captan NUEVOS clientes. El ROAS de captacion de la
23primera compra siempre es más bajo -- el valor está en que esos
24clientes recompran.
25
26Ana: [pausa 3 segundos] Ok, entiendo la inflación. Pero 1,43x
27sigue estando lejos de 3x. ¿Estoy perdiendo dinero?
28
29Iván: Hay un matiz importante de plazos. Los 200K los gastas en
30un mes, pero un cliente que captas en enero sigue comprando
31durante 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 EUR
33a doce meses. Sobre el gasto de enero eso es 3,28x.
34
35O 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 bajan
37a 2, el 3,28x se queda en 2,85x. Lo que sí podemos decirte hoy
38es dónde está la diferencia entre canales, y ahí hay margen real.
39
40Ana: Prefiero saberlo. ¿Qué recomendáis?

La presentación: números claros, sin jerga, respuestas preparadas

1Carmen: Tres recomendaciones:
2
31. REDISTRIBUIR: con el ajuste proporcional, Meta rinde un 26%
4 más que Google (1,63x contra 1,29x). Mover 10-15% del
5 presupuesto de Google a Meta: sobre los 110K de Google,
6 son 11K-16,5K EUR/mes.
7
8 Y un matiz que hay que decir en voz alta: con atribución
9 lineal el canal más eficiente no es Meta, es Email. Los dos
10 modelos no ordenan igual los canales, asi que dejamos escrito
11 con cuál se ha decidido cada cosa. Esta recomendación sale
12 del ajuste proporcional.
13
142. OPTIMIZAR EMAIL: Cart Recovery (email) tiene el mejor
15 ROI por euro invertido pero está subcapitalizado. Podemos
16 aumentar la frecuencia de envios de cart abandonment.
17
183. MONITORIZAR: Queremos implementar un report semanal
19 automatizado con estos números reales para que no tengas
20 que esperar al quarterly.
21
22Ana: Me gusta. Hacedlo. Pero tengo una pregunta más.
23Si Google es tan malo... por que no cortamos todo ahi y
24ponemos todo en Meta?
25
26Tu: Porque Google cumple una función de captura de demanda.
27Cuando alguien busca "comprar omega 3", ese click de Google
28es el que cierra la venta. Sin Google, esas busquedas irian
29a la competencia. Lo que si podemos reducir es el gasto en
30Display de Google, que tiene el peor rendimiento.
31
32Ana: Bien. Una última cosa. Necesito estos números CADA SEMANA,
33no cada trimestre. Y quiero ver la tendencia: si redistribuimos
34presupuesto, quiero ver que el ROAS sube semana a semana.
35
36Carmen: Listo. Lo implementamos esta semana. Primer report
37semanal el lunes que viene.
38
39Ana: 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]
2
3Carmen Reyes: Resumen post-call:
4- Ana aprueba la redistribucion Google -> Meta
5- Quiere report semanal automatizado empezando lunes
6- Raúl: coordina con el equipo de paid para ejecutar
7 la redistribucion de presupuesto antes del lunes
8- @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 prod
11
12Iván Romero: Tranquilo, el DAG es straightforward.
13Ya tienes todas las piezas (scripts 01-08). Solo
14necesitas orquestarlas con dependencias correctas.
15Te ayudo esta tarde si te atascas.
16
17Raúl Merino: Genial la presentación! Ana me acaba de
18mandar 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 DAG
2from airflow.operators.python import PythonOperator
3# 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 no
5# existe en Airflow 2.8. Hace falta apache-airflow-providers-common-sql.
6from airflow.providers.common.sql.operators.sql import SQLExecuteQueryOperator
7from datetime import datetime, timedelta
8
9default_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}
17
18with 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 AM
23 start_date=datetime(2024, 1, 1),
24 catchup=False,
25 # Sin template_searchpath, sql='sql/unify_weekly.sql' se trata como SQL
26 # 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:
30
31 # 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)
36
37 # 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 )
43
44 # Reconciliacion (necesita unificacion + CRM)
45 reconcile = PythonOperator(task_id='reconcile', python_callable=reconcile_fn)
46
47 # En paralelo: detectar huerfanas + generar report
48 detect_orphans = PythonOperator(task_id='detect_orphans', python_callable=detect_orphans_fn)
49 generate_report = PythonOperator(task_id='generate_report', python_callable=report_fn)
50
51 # Enviar report por email a Ana
52 send_report = PythonOperator(task_id='send_report', python_callable=send_email_fn)
53
54 # Dependencias
55 [ingest_google, ingest_meta, ingest_email] >> unify
56 [unify, ingest_crm] >> reconcile
57 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]:
2
3Feedback rápido:
4
5LO QUE HICISTE BIEN:
6- Cuando Ana preguntó por Google vs Meta, respondiste con
7 datos: "con el ajuste proporcional, Meta rinde un 26% más
8 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.
12
13LO 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 invertido
19 en el mes". Ana entiende euros, no "x".
20
21REGLAS PARA PRESENTAR A CLIENTE:
221. Respuestas cortas (2-3 frases max)
232. Siempre con datos, nunca opiniones
243. Si no sabes, di "lo verifico y te confirmo"
254. Nunca uses jerga técnica sin explicarla primero
265. El silencio del cliente no es malo -- está pensando

Feedback de Carmen: comunicar a clientes es un skill que se entrena

Regístrate para guardar tu progreso.