Leads Optimizer — Formación
Agente de optimización automática de campañas Google Ads para generación de leads de formación.
Cruza datos de Airtable (leads reales) con métricas de Google Ads y decide ajustes de presupuesto.
Campos requeridos en Airtable
Tabla: "Google Ads Campaigns"
| Campo |
Tipo |
Descripción |
| Curso |
Text |
Nombre del curso |
| GoogleCampaignID |
Number |
ID de campaña en Google Ads |
| PPL |
Number |
Precio por lead (€) |
| CapTotalMes |
Number |
Capping mensual de leads |
| CPAMaximo |
Number |
CPA máximo tolerable (€) |
| Activa |
Boolean |
TRUE para incluir en el análisis |
Tabla: "Leads Lake"
| Campo |
Tipo |
Descripción |
| GoogleCampaignID |
Text |
ID de campaña de origen |
| FechaEntrada |
Date |
Fecha del lead (formato YYYY-MM-DD) |
Variables de entorno
export AIRTABLE_TOKEN=pat_xxxxxxxxxxxx
export AIRTABLE_BASE_ID=appXXXXXXXXXXXXXX
export GOOGLE_ADS_DEVELOPER_TOKEN=xxxx
export GOOGLE_ADS_CLIENT_ID=xxxx.apps.googleusercontent.com
export GOOGLE_ADS_CLIENT_SECRET=xxxx
export GOOGLE_ADS_REFRESH_TOKEN=xxxx
export GOOGLE_ADS_LOGIN_CUSTOMER_ID=1234567890 # sin guiones
export ANTHROPIC_API_KEY=sk-ant-xxxx
export SLACK_WEBHOOK_URL=xxx
Instalación y ejecución
# Instalar dependencias
pip install -r requirements.txt
# Ejecutar en modo DRY RUN (recomendado para empezar)
# DRY_RUN = True en config.py → solo muestra decisiones, no aplica cambios
python run.py
# Cuando estés seguro, cambiar DRY_RUN = False en config.py
python run.py
Lógica de urgencia
| Urgencia |
Condición |
Acción típica |
| PAUSAR |
leads >= capping |
Pausa campaña |
| SPRINT |
ritmo muy atrasado + quedan ≤ 5 días |
+30-50% presupuesto |
| ACELERAR |
ritmo atrasado > 15 puntos vs ratio del mes |
+10-25% presupuesto |
| FRENAR |
ritmo adelantado > 15 puntos vs ratio del mes |
-10-25% presupuesto |
| EN_RITMO |
dentro del margen esperado |
Mantener |
Automatización con cron
# Ejecutar cada día a las 8:00
0 8 * * * cd /ruta/leads-optimizer && python run.py >> logs/optimizer.log 2>&1