José Manuel Gómez a94c18c13c Add daily portfolio analysis and weekly strategic report
- agent.py: portfolio_daily_analysis() for daily Slack block,
  weekly_strategic_analysis() for deep weekly report
- run.py: call portfolio analysis before Slack send
- slack_reporter.py: add strategic diagnosis block at end of daily report
- weekly_report.py: standalone weekly report script
- .github/workflows/weekly.yml: runs Mondays at 9am (CEST)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 20:22:37 +02:00
2026-04-17 12:53:25 +02:00
2026-04-17 12:53:25 +02:00
2026-04-27 15:19:30 +02:00
2026-04-17 12:53:25 +02:00
2026-04-17 12:53:25 +02:00
2026-04-17 12:53:25 +02:00

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

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
Description
No description provided
Readme 345 KiB
Languages
Python 99.5%
Shell 0.5%