← Back to blog

2026-05-20 · 7 min read

How I automated my weekly report and got 4 hours back every Monday

A 90-minute n8n workflow that pulls SQL, writes the narrative with Gemini, drops it in Slack for approval, and auto-sends. Cost: ₹0/month.

Indian woman analyst sipping chai at her home office desk on a Monday morning, laptop with purple glow

Every Monday for two years, I lost half a day to a slide deck nobody read past page 2. Copy-paste from three dashboards. Format the headers. Re-color the chart because Excel reset it. Send. Stare at the wall.

Then I built a 5-node n8n workflow that does the whole thing in 90 seconds. Free Gemini key. Free n8n. Free Slack. Zero rupees a month. 4 hours saved every Monday.

Here is the exact stack and the 4 design choices that made the difference between a toy and a thing that has run unattended for 11 weeks.

The stack (every piece is free)

  • n8n cloud (free tier, 5K executions/month, way more than a weekly report needs)
  • Postgres (your warehouse, mine is Neon)
  • Google Gemini 2.5 Flash via Google AI Studio (free key, no credit card)
  • Slack (free workspace, one channel)

The 5 nodes

  1. Schedule trigger: every Monday 9 AM IST.
  2. Postgres node: one SQL query that returns last-week metrics + prior-week comparison in a single row.
  3. Gemini node: prompt = "Write a 6-line executive summary of this data. Lead with what changed, end with one recommended action." Pass the row in as JSON.
  4. Slack node: post the summary as a message in #weekly-report with two reaction buttons (Approve, Hold).
  5. IF node + Slack post: if Approve, post the same summary to #leadership. If Hold, do nothing.

4 design choices that mattered

1. Approval gate, not full autonomy

My first version sent straight to leadership. Week 3 it hallucinated a 12% drop that was actually a 12% rise. The AI read a delta column wrong. The CEO replied within 4 minutes. The replies got worse from there. After that, I added the approval step. Now I glance at the draft in 30 seconds and either approve or fix the prompt. Trust does not come back if you lose it once. Do not skip the gate.

2. One SQL query, not five

I was tempted to fetch each metric in its own query. Don't. Write ONE query that returns a single row with every number you need. The Gemini node sees one clean blob, the prompt becomes trivial, and debugging is one query log not five.

3. Gemini 2.5 Flash, not Pro

Pro is overkill for a 6-line summary. Flash is faster, free, and the output is indistinguishable for this task. Save the smart model for the gnarly stuff.

4. Slack for the approval, not email

Email made me open Gmail, find the thread, decide, reply. Slack with reaction buttons is one click. The whole workflow now takes me longer to read the summary than to approve it.

What I would not do

  • Skip the approval gate. Especially in week 1. You will catch one hallucination that would have shipped to your CEO.
  • Use ChatGPT API. Gemini is free and good enough for narrative generation. Save the spend for things that need it.
  • Build a fancy dashboard layer on top. The Slack message IS the dashboard. Nobody clicks the link anyway.

The unexpected second-order effect

Once the weekly was automated, my brain freed up for the actual diagnosis. The week the model said "WAU dropped 8%, recommend investigating Tuesday cohort," I had time to actually investigate. Tracking bug in the iOS app. Fixed it. WAU recovered.

The weekly was never the value. The thinking I could do after it was. Automation gave me back the thinking time. Nobody told me that was the real upside.

Want the exact workflow JSON?

I teach this exact build in the 3-Hour Champion Sprint. You leave with the n8n workflow, the SQL template, the prompt, and your own AI Slack bot answering ad-hoc data questions for your team. ₹1,499 Early-Bird. Saturday cohorts.

Free guide

The 6 AI prompts BI analysts actually use

The exact prompt templates BI analysts open 3x a week. Stakeholder rebuttals, SQL debugging, anomaly investigation, slide narratives. Free guide, no card, no spam.