AutomationFlowsAI & RAG › Lrac-031 · Reporte Semanal Ejecutivo Gemini Pro

Lrac-031 · Reporte Semanal Ejecutivo Gemini Pro

LRAC-031 · Reporte semanal ejecutivo Gemini Pro. Uses postgres, httpRequest, googleDrive, gmail. Scheduled trigger; 8 nodes.

Cron / scheduled trigger★★★★☆ complexity8 nodesPostgresHTTP RequestGoogle DriveGmail
AI & RAG Trigger: Cron / scheduled Nodes: 8 Complexity: ★★★★☆ Added:

This workflow follows the Gmail → Google Drive recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "LRAC-031 \u00b7 Reporte semanal ejecutivo Gemini Pro",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 6 * * 1"
            }
          ]
        }
      },
      "id": "node-001-cron",
      "name": "Cron \u00b7 lunes 6:00 hora Per\u00fa",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        -1800,
        0
      ]
    },
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "WITH ultima_sem AS (SELECT * FROM lrac_metricas_diarias WHERE fecha BETWEEN NOW() - INTERVAL '7 days' AND NOW()), prev_sem AS (SELECT * FROM lrac_metricas_diarias WHERE fecha BETWEEN NOW() - INTERVAL '14 days' AND NOW() - INTERVAL '7 days') SELECT json_build_object('lrac_actual', (SELECT AVG(lrac_4p) FROM ultima_sem), 'lrac_previo', (SELECT AVG(lrac_4p) FROM prev_sem), 'racs_creados', (SELECT COUNT(*) FROM lrac_racs WHERE creado >= NOW() - INTERVAL '7 days'), 'racs_cerrados', (SELECT COUNT(*) FROM lrac_racs WHERE cerrado >= NOW() - INTERVAL '7 days' AND estado = 'CERRADO_VERIFICADO_IA'), 'racs_reabiertos', (SELECT COUNT(*) FROM lrac_racs WHERE reabierto >= NOW() - INTERVAL '7 days'), 'detecciones_epp', (SELECT COUNT(*) FROM lrac_detecciones WHERE timestamp >= NOW() - INTERVAL '7 days'), 'gerencias_bajas', (SELECT json_agg(json_build_object('vp', vp, 'gerencia', gerencia, 'lrac_4p', lrac_4p) ORDER BY lrac_4p LIMIT 3) FROM lrac_metricas_semanal), 'patrones_recurrentes', (SELECT json_agg(json_build_object('tipo', tipo, 'count', cnt) ORDER BY cnt DESC LIMIT 3) FROM (SELECT tipo, COUNT(*) AS cnt FROM lrac_racs WHERE creado >= NOW() - INTERVAL '7 days' GROUP BY tipo) p)) AS resumen;"
      },
      "id": "node-002-pg-aggregate",
      "name": "Postgres \u00b7 agregar datos \u00faltimos 7 d\u00edas",
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.4,
      "position": [
        -1500,
        0
      ]
    },
    {
      "parameters": {
        "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent",
        "method": "POST",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "key",
              "value": "={{ $env.GEMINI_API_KEY }}"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"contents\": [{\n    \"parts\": [{ \"text\": \"Eres VP SHE senior con 20 a\u00f1os en mineria peruana. A partir de estos datos de la semana pasada de Mina Juanita S.A., produce un reporte ejecutivo de 1 p\u00e1gina (markdown) dirigido a la junta directiva. Tono: directo, ejecutivo, sin jerga. Estructura: RESUMEN (3 frases con cifras), QUE FUNCIONO (top 3 logros), QUE NO FUNCIONO (top 3 alertas), RECOMENDACIONES (3 acciones), TENDENCIA (proyeccion 4 sem). Datos: {{ JSON.stringify($json.resumen) }}\" }]\n  }],\n  \"generationConfig\": { \"temperature\": 0.2 }\n}"
      },
      "id": "node-003-gemini-reporte",
      "name": "Gemini Pro \u00b7 narrativa ejecutiva",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -1200,
        0
      ]
    },
    {
      "parameters": {
        "jsCode": "const md = $input.first().json.candidates[0].content.parts[0].text;\nconst fechaIso = new Date().toISOString().slice(0, 10);\nconst semana = `Semana del ${new Date(Date.now() - 7*86400000).toISOString().slice(0,10)} al ${fechaIso}`;\nconst markdownCompleto = `# Reporte ejecutivo SHE \u00b7 ${semana}\\n\\n${md}\\n\\n---\\n\\n_Generado autom\u00e1ticamente por LRAC-031 \u00b7 Gemini Pro \u00b7 ${fechaIso}_`;\nreturn [{ json: { markdown: markdownCompleto, fecha: fechaIso, semana } }];"
      },
      "id": "node-004-format",
      "name": "Formatear markdown",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -900,
        0
      ]
    },
    {
      "parameters": {
        "url": "{{ $env.PDFKIT_URL }}/md-to-pdf",
        "method": "POST",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={ \"markdown\": {{ JSON.stringify($json.markdown) }}, \"theme\": \"mmg-lrac\", \"filename\": \"reporte-she-{{ $json.fecha }}.pdf\" }"
      },
      "id": "node-005-pdfkit",
      "name": "PDFkit \u00b7 render PDF con plantilla MMG",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -600,
        0
      ]
    },
    {
      "parameters": {
        "operation": "upload",
        "name": "=Reporte SHE \u00b7 {{ $json.semana }}.pdf",
        "folderId": "{{ $env.GDRIVE_REPORTES_SHE }}",
        "binaryData": true,
        "binaryPropertyName": "data"
      },
      "id": "node-006-drive",
      "name": "Google Drive \u00b7 archivar hist\u00f3rico",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        -300,
        0
      ]
    },
    {
      "parameters": {
        "sendTo": "={{ $env.VP_SHE_EMAIL }},{{ $env.VP_OPS_EMAIL }},{{ $env.VP_PROY_EMAIL }},{{ $env.VP_SUPPLY_EMAIL }}",
        "subject": "=Reporte SHE semanal \u00b7 {{ $json.semana }}",
        "emailType": "html",
        "message": "=Estimad@s VPs,<br><br>Adjunto el reporte ejecutivo SHE de la semana pasada generado autom\u00e1ticamente por LRAC-031.<br><br>{{ $json.markdown }}<br><br>Para drill-down, ver el dashboard ejecutivo: <a href=\"https://lasbambas-lrac-emanuel.streamlit.app\">link</a>.<br><br>--<br>Aecodito \u00b7 LRAC-031",
        "attachments": "data"
      },
      "id": "node-007-gmail",
      "name": "Gmail \u00b7 enviar a VPs",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "INSERT INTO lrac_reportes_ejecutivos (fecha, semana, markdown, pdf_drive_id, destinatarios) VALUES ($1, $2, $3, $4, $5);"
      },
      "id": "node-008-pg-log",
      "name": "Postgres \u00b7 log reporte",
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.4,
      "position": [
        300,
        0
      ]
    }
  ],
  "connections": {
    "Cron \u00b7 lunes 6:00 hora Per\u00fa": {
      "main": [
        [
          {
            "node": "Postgres \u00b7 agregar datos \u00faltimos 7 d\u00edas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Postgres \u00b7 agregar datos \u00faltimos 7 d\u00edas": {
      "main": [
        [
          {
            "node": "Gemini Pro \u00b7 narrativa ejecutiva",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini Pro \u00b7 narrativa ejecutiva": {
      "main": [
        [
          {
            "node": "Formatear markdown",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Formatear markdown": {
      "main": [
        [
          {
            "node": "PDFkit \u00b7 render PDF con plantilla MMG",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "PDFkit \u00b7 render PDF con plantilla MMG": {
      "main": [
        [
          {
            "node": "Google Drive \u00b7 archivar hist\u00f3rico",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive \u00b7 archivar hist\u00f3rico": {
      "main": [
        [
          {
            "node": "Gmail \u00b7 enviar a VPs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail \u00b7 enviar a VPs": {
      "main": [
        [
          {
            "node": "Postgres \u00b7 log reporte",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "workflow_id": "LRAC-031",
    "description": "Reporte semanal ejecutivo Gemini Pro a VPs \u00b7 cada lunes 6:00 \u00b7 ahorra 6-10 h analista",
    "author": "Emanuel Edgar Ancco Guaygua"
  },
  "tags": [
    {
      "name": "lrac"
    },
    {
      "name": "gaiatech-m1"
    },
    {
      "name": "M1.D"
    }
  ]
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

LRAC-031 · Reporte semanal ejecutivo Gemini Pro. Uses postgres, httpRequest, googleDrive, gmail. Scheduled trigger; 8 nodes.

Source: https://github.com/EmanuelAncco/lasbambas-lrac-2026/blob/a315fc386c7394b8eaff11c2ab0d59467f2e267c/n8n-workflows/LRAC-031-reporte-gemini.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Founder's Discovery Engine. Uses googleSheets, googleDrive, httpRequest, gmail. Scheduled trigger; 18 nodes.

Google Sheets, Google Drive, HTTP Request +1
AI & RAG

Who's this for Finance teams, AI developers, product managers, and business owners who need to monitor and control OpenAI API costs across different models and projects. If you're using GPT-4, GPT-3.5

HTTP Request, Google Sheets, Google Drive +1
AI & RAG

A scheduled process aggregates content from eight distinct data sources and standardizes all inputs into a unified format. AI models perform sentiment scoring, detect conspiracy or misinformation sign

HTTP Request, OpenAI, Postgres +2
AI & RAG

Google Drive → AI Video Generation → Captions → Approval → Instagram & TikTok

Google Drive, @Blotato/N8N Nodes Blotato, OpenAI +2
AI & RAG

Virtual-Weather-Caster-Workflow. Uses httpRequest, googleDrive, openAi, gmail. Scheduled trigger; 20 nodes.

HTTP Request, Google Drive, OpenAI +3