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.

40 min

### Viernes 9:30 AM -- Ensayo general

Carmen, Ivan 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 es: el ROAS real con LTV es 0.33x total, Meta es el mejor canal, y recomendamos redistribuir presupuesto de Google a Meta. Preguntas?"

Ivan 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? ROAS 0.33x es bastante malo para su objetivo de 3x." Carmen te mira: "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. Nuestro trabajó es darle la foto real para que tome decisiones informadas."

Ivan 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, Ivan, 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 0.33x con LTV. Eso es menos del 10% de mi
12objetivo de 3x. Algo no cuadra. Google me dice que mi ROAS
13es casi 2x. Por 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 2M que gastas
22en ads solo captan NUEVOS clientes. El ROAS de captacion siempre
23es bajo -- el valor está en que esos clientes recompran.
24
25Ana: [pausa 3 segundos] Ok, entiendo la inflacion. Pero 0.33x
26sigue siendo bajo. Estoy perdiendo dinero?
27
28Ivan: No necesariamente. Si miramos el revenue TOTAL de enero
29(nuevos + recurrentes que recompran) es 3.85M EUR. Eso dividido
30entre los 2M de gasto da ROAS 1.93x. No llegas al 3x pero no
31estas perdiendo dinero. Cada euro invertido genera 1.93 en
32revenue total.
33
34Ana: Eso tiene más sentido. Pero sigue sin ser 3x. Que
35recomendais?

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

1Carmen: Tres recomendaciones:
2
31. REDISTRIBUIR: Meta es 27% más eficiente que Google en
4 atribución lineal. Mover 10-15% del presupuesto de Google
5 a Meta (unos 110K-165K EUR/mes).
6
72. OPTIMIZAR EMAIL: Cart Recovery (email) tiene el mejor
8 ROI por euro invertido pero está subcapitalizado. Podemos
9 aumentar la frecuencia de envios de cart abandonment.
10
113. MONITORIZAR: Queremos implementar un report semanal
12 automatizado con estos números reales para que no tengas
13 que esperar al quarterly.
14
15Ana: Me gusta. Hacedlo. Pero tengo una pregunta más.
16Si Google es tan malo... por que no cortamos todo ahi y
17ponemos todo en Meta?
18
19Tu: Porque Google cumple una función de captura de demanda.
20Cuando alguien busca "comprar omega 3", ese click de Google
21es el que cierra la venta. Sin Google, esas busquedas irian
22a la competencia. Lo que si podemos reducir es el gasto en
23Display de Google, que tiene el peor rendimiento.
24
25Ana: Bien. Una última cosa. Necesito estos números CADA SEMANA,
26no cada trimestre. Y quiero ver la tendencia: si redistribuimos
27presupuesto, quiero ver que el ROAS sube semana a semana.
28
29Carmen: Listo. Lo implementamos está semana. Primer report
30semanal el lunes que viene.
31
32Ana: Perfecto. Buen trabajó 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. Ivan te mira. Tu asientes.

1#canal-pharmalife [10:40]
2
3Carmen Delgado: Resumen post-call:
4- Ana aprueba la redistribucion Google -> Meta
5- Quiere report semanal automatizado empezando lunes
6- Raul: 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- @Ivan: revisar el DAG antes de que se ejecute en prod
11
12Ivan Romero: Tranquilo, el DAG es straightforward.
13Ya tienes todas las piezas (scripts 01-08). Solo
14necesitas orquestarlas con dependencias correctas.
15Te ayudo está tarde si te atascas.
16
17Raul Merino: Genial la presentación! Ana me acaba de
18mandar un email diciendo "por fin números que entiendo".
19La redistribucion la hago está tarde en las plataformas.

Post-call: compromisos claros, deadlines apretados, equipo alineado

Una presentación exitosa a un cliente siempre genera más trabajó 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 Ivan a disenar el DAG. La logica ya la tienes -- solo necesitas orquestarla. Ivan te da la plantilla de Airflow que usan en AdPulse para todos los clientes:

1from airflow import DAG
2from airflow.operators.python import PythonOperator
3from airflow.operators.sql import SQLExecuteQueryOperator
4from airflow.utils.dates import days_ago
5from datetime import timedelta
6
7default_args = {
8 'owner': 'data-team',
9 'depends_on_past': False,
10 'email_on_failure': True,
11 'email': ['carmen@adpulse.io', 'ivan@adpulse.io'],
12 'retries': 2,
13 'retry_delay': timedelta(minutes=5),
14}
15
16with DAG(
17 'pharmalife_weekly_report',
18 default_args=default_args,
19 description='Pipeline semanal PharmaLife: ingesta -> unificacion -> reconciliación -> report',
20 schedule_interval='0 7 * * 1', # Lunes 7:00 AM
21 start_date=days_ago(1),
22 catchup=False,
23 tags=['pharmalife', 'weekly', 'production'],
24) as dag:
25
26 # Las 3 ingestas en PARALELO (no dependen entre si)
27 ingest_google = PythonOperator(task_id='ingest_google', python_callable=ingest_google_fn)
28 ingest_meta = PythonOperator(task_id='ingest_meta', python_callable=ingest_meta_fn)
29 ingest_email = PythonOperator(task_id='ingest_email', python_callable=ingest_email_fn)
30 ingest_crm = PythonOperator(task_id='ingest_crm', python_callable=ingest_crm_fn)
31
32 # Unificacion (necesita las 3 ingestas completadas)
33 unify = SQLExecuteQueryOperator(
34 task_id='unify_campaigns',
35 conn_id='adpulse_postgres',
36 sql='sql/unify_weekly.sql',
37 )
38
39 # Reconciliacion (necesita unificacion + CRM)
40 reconcile = PythonOperator(task_id='reconcile', python_callable=reconcile_fn)
41
42 # En paralelo: detectar huerfanas + generar report
43 detect_orphans = PythonOperator(task_id='detect_orphans', python_callable=detect_orphans_fn)
44 generate_report = PythonOperator(task_id='generate_report', python_callable=report_fn)
45
46 # Enviar report por email a Ana
47 send_report = PythonOperator(task_id='send_report', python_callable=send_email_fn)
48
49 # Dependencias
50 [ingest_google, ingest_meta, ingest_email] >> unify
51 [unify, ingest_crm] >> reconcile
52 reconcile >> [detect_orphans, generate_report]
53 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 Delgado [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: "los datos muestran que Meta es 27% más eficiente".
8 No dijiste "yo creo". Dijiste "los datos muestran". Perfecto.
9- Tu tono era seguro. No vacilaste. Eso genera confianza.
10
11LO QUE PUEDES MEJORAR:
12- Te extendiste demasiado en la explicacion del email.
13 En presentaciones: respuesta en 2 frases. Si quieren más,
14 preguntan. No ofrezcas información que no han solicitado.
15- Cuando diste el número de ROAS, no dijiste las unidades.
16 Siempre di: "ROAS de 0.38 euros por cada euro invertido".
17 Ana entiende euros, no "x".
18
19REGLAS PARA PRESENTAR A CLIENTE:
201. Respuestas cortas (2-3 frases max)
212. Siempre con datos, nunca opiniones
223. Si no sabes, di "lo verifico y te confirmo"
234. Nunca uses jerga técnica sin explicarla primero
245. El silencio del cliente no es malo -- está pensando

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

## ejercicios

[01]

Escribir el email de resumen post-presentación

Redacta el email que Carmen enviara a Ana después de la presentación, resumiendo los hallazgos, las acciones acordadas y los proximos pasos. Debe ser claro, sin jerga técnica.

Cargando editor...
[02]

Query del report semanal automatizado

Implementa la query SQL que genera el report semanal para Ana: métricas de la semana actual, comparativa con media de 4 semanas anteriores, y alertas si algo cambia mucho.

Cargando editor...
[03]

Funcion de detección de huerfanas con alerta Slack

Implementa la función Python que detecta campañas sin mapping en la última semana, las prioriza por gasto y genera el mensaje formateado para el canal de Slack de Raul.

Cargando editor...
[04]

Ranking de campañas por eficiencia (SQL con RANK)

Crea un ranking de las campañas más y menos eficientes usando RANK() y ROAS corregido. Identifica las top 3 para escalar y las bottom 3 para pausar.

Cargando editor...

Regístrate para guardar tu progreso.

## comentarios

Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.

Inicia sesión para comentar y responder.

cargando comentarios...