Case 02 · Axenya

Pipeline dashboard: auditable forecast in real time

They were rebuilding the forecast by hand in Excel, four to five days, every two weeks. I rebuilt it as a real-time platform where every chart shows the exact CRM fields behind the number.

From 4 to 5 days of manual work to real time 8 panels in production, 20 releases, no recorded downtime 1,000+ CRM properties audited
In four lines
Situation
A B2B corporate health broker with 81 people and a pipeline in the hundreds of millions of reais in ARR. Forecast meant exporting the whole pipeline to Excel and recalculating it cell by cell, four to five days every two weeks. A legacy dashboard existed, and nobody could trace its numbers to their origin.
Task
As the Revenue Operations lead, give leadership a forecast they could read in real time and audit back to the CRM, with no data team and no second database to look after.
Action
Audited the legacy dashboard for a week, then rebuilt instead of patching. Defined the source of truth before any screen, moved the business rules into a versioned catalog, made every chart open the exact fields behind it, turned moving assumptions into toggles, and documented for handover.
Result
From 4 to 5 manual days to real time. 8 panels validated in production, 20 releases with no recorded downtime, 1,000+ properties audited, 2 to 3 hours of weekly consolidation removed. The forecast meeting became a written ritual.
The problem

Axenya is a B2B corporate health benefits broker with 81 people and a pipeline in the hundreds of millions of reais in ARR. Forecast meant exporting the entire pipeline to Excel and recalculating it cell by cell. Every number lived in a different spreadsheet, and nobody could trace it back to its source.

There was a legacy dashboard. The diagnosis from the people who used it was a single sentence: the numbers are hard to trace to their origin.

What stood
Forecast cycleFrom 4 to 5 manual days every two weeks to real time
Panels validated in production8: CRO, Forecast, Board, AE, BDR, Last 48h, Delta and Coverage
Releases20, with no recorded downtime over about 3 months
Properties audited1,000+, across 5 CRM objects
Manual consolidation removed2 to 3 hours a week
Since October 2026The panels read from the company’s own Sales and Marketing CRM, which replaced HubSpot
What I decided
  • Rebuild from scratch. I spent a week auditing the legacy dashboard before concluding, with data, that starting over was faster than maintaining it. A scoping decision. I spent a week auditing the legacy dashboard before concluding, with data, that starting over was faster than maintaining it. A scoping decision, not a preference.
  • Source of truth before any screen. I defined which CRM fields count, standardized how they are read and published the canonical list for the other teams to use in their own analyses.
  • Auditability as architecture. Every chart opens a panel with the exact fields used in the calculation, traceable in real time. Snapshot data and historical data explicitly separated. A unique code per chart for cross-reference.
  • No intermediate database. The platform reads straight from the CRM API, HubSpot at the time. Only the ARR calculation lives in the CRM, as a calculated field. Fewer points of failure and no stale data. The platform reads straight from the HubSpot API. Only the ARR calculation lives in the CRM, as a calculated field. Fewer points of failure and no stale data.
  • Business rules as a catalog. Compensation logic, probabilities, filters and deduplication live in a versioned semantic catalog that generates each panel’s documentation. It exposed two conflicting probability rules coexisting in the old code. Compensation logic, probabilities, filters and deduplication live in a versioned semantic catalog that generates each panel’s documentation. It exposed two conflicting probability rules coexisting in the old code.
  • A moving assumption becomes a parameter. Instead of rewriting the logic every time leadership changed an assumption, each panel got toggles: what counts as an active deal, whether a POC counts as revenue. The assumption becomes interface. Instead of rewriting the logic every time leadership changed an assumption, each panel got toggles: what counts as an active deal, whether a POC counts as revenue. The assumption becomes interface, not refactoring.
  • Built to be handed over. Documentation and architecture designed so other people, and other AI agents, could continue the project. That is what made the handover possible.
The human part

A dashboard is only worth something if the executive fills in the field. And they did not, because the deal screen was cluttered with fields useful to RevOps and useless to the person selling. The answer was to design progressive fill-in by stage, and to turn the forecast meeting into a written ritual: prework per executive, named hygiene follow-up, to-dos per AE and a report with the delta.

Some fields are necessary only for me. Recognizing that was the decision that got the system used.

HubSpot APIGoogle AuthVercelGitHubClaude Code

The snapshot is a static copy of the platform, frozen in August 2026. Account and executive names were replaced by generic identifiers; values, dates and proportions reflect the real distribution of the pipeline. The snapshot holds 7 of the 8 panels.