Skip to content
Bruna Prado
← Case studies · Systems for deciding

Personal project · 2026 · RevOps · Local LLM

Cockpit RevOps: the report that writes itself

I got some feedback: I communicated very well on the technical side, with sales and with the marketing operation, but needed to bring more practical narratives to the C-level. That's where Cockpit came from.

Challenge

Turn RevOps data into an executive narrative: a clear answer, why it matters and what to do, with no made-up numbers.

What I did

  1. I built 7 n8n flows that pull CRM, GA4 and media data and calculate the metrics in Python and DuckDBSee the flow running
    1. 12 · Monday

      • Windows Task Scheduler
      • Webhook
      • Save pipeline snapshot
      • Standard briefs
      • Open the weekly report
    2. 23 · Generate report

      • Validate brief
      • Calculate metrics (SQL)
      • One section per item
    3. 34 · Write section

      • Writer (LLM)
      • Numeric check
      • Do the numbers match?
      • Request a fix
    4. 46 · LLM with a VRAM guard

      • Check free VRAM
      • Does it fit on the GPU?
      • Ollama · qwen3:8b
      • Wait 60 s
    5. 55 · Review

      • Reviewer (LLM)
      • Problems per section
      • Ask the writer for a fix
    6. 63 · Generate report

      • Rule-based verdict
      • Summary and 3 actions
      • Render HTML
      • Notify that it's ready

    7 · Error alert: if any flow fails, Windows sends a notification. And 1 · Form generates the same report on demand.

    Monday, 6 a.m.: Windows fires the webhook, the Python service saves the pipeline snapshot (POST /snapshot) and, at the end of the batch, opens the weekly report: one HTML file with all 4 views.

  2. Headline, “why it matters” and decisions come from rules over the numbers. A local LLM (qwen3 on Ollama) writes the reading of each section; code checks every number against the data, a second LLM reviews it, and the verdict comes from a rule, never from the model
  3. Every Monday at 6 a.m., the report comes out as a single HTML file with 4 views, one for each role: C-level, marketing, SDRs and sales. A toggle switches between “with commentary” and “data only”
  4. I created one dashboard per role, without an LLM: the CEO sees the journey from traffic to MRR and where revenue leaks; SDRs see who needs to be contacted today; sales sees how much of the pipeline is real
  5. To test the agent, I hid 10 problems in Vela's fictitious data (a rep who inflates the forecast, a campaign with cheap, bad MQLs…), which should show up in 15 places across the reports. It flagged 12 of the 15, with the number that proves each one

Result

  • 4 + 3views of the Monday report and dashboards per role (CEO, SDRs and sales)
  • 12/15problems hidden on purpose in the data that the report flagged, with the number that proves them
  • R$ 0per report: the model runs on my GPU

Each team's report

One report every Monday, with one view for each role. Click a view to open the report.

What Vela gets every Monday at 6 a.m.

1 report, 4 views: one for each role

Cockpit numbers from Oct 5, 2026, as Vela's Q4 begins. 100% fictitious data.

Connects with