Client system · Sales dashboard
An Australian property investment advisory sells through a four-stage sales pipeline. The stages lived in one system, the meeting outcomes in another, and the numbers in whichever spreadsheet was last stitched together. We built the one screen the team now opens.
Financial services · property investment
7 live views
The dashboard, four views
Who is moving deals
Per-agent conversion, side by side, without exporting anything.
Agent Performance · the live dashboard
Deals sat in HubSpot. Meeting outcomes arrived by JotForm. Bookings lived in Google Calendar, documents in Drive. The number anyone actually wanted lived in whichever spreadsheet had last been stitched together by hand.
So a stalled deal looked exactly like a healthy one. A form that never fired, or a folder that was never created, stayed invisible until someone went looking — usually weeks later, usually because something had already gone wrong.
The ask was not another report. It was one screen, current the moment it loads, that answered the questions the team kept re-answering by hand.
One application
Every tab reads the same live pipeline. The team changes view; nobody changes system, and nobody rebuilds a spreadsheet to ask a different question.
Automation health
Every deal in this pipeline is supposed to end up with a form attached and a folder created. Before the dashboard, the only way to know was to open the deal.
Now it is a number on the screen. In the current 30-day window, 313 of 314 deals carry both — and the one that does not is findable in a click rather than a quarter.
We started from the questions the team asked most often, not from the data that happened to be easiest to export.
Where is every deal right now? Four stages across two pipelines, and no single place that counted them.
Did the automation actually fire? A missing form or folder was invisible until someone went hunting for it.
Who is carrying the load? Per-agent performance meant an export and a pivot table, every time.
What has gone quiet? Idle deals and stalled finance requests surfaced at month end, not on the day.
The funnel is the first thing on the screen because it is the first question in every meeting. The same window can be re-cut to 60 or 90 days without leaving the page.
The funnel, three ways
The counts
How many deals sit at each of the four stages, right now.
Pipeline Funnel · 30-day window
Active sales and no-show are split on every stage, so a booked-but-missed meeting never inflates the funnel.
Each card carries its change from the stage before it.
30, 60 and 90-day windows, plus a custom range.
The agent view puts every team member on the same row structure — deals carried, share confirmed, share unable to confirm, rescheduled, and how much of their book has gone stale.
Agent Performance · the live dashboard
The same window and the same stage rules apply to every row, so the comparison is fair.
A high deal count with a low confirmation rate reads differently from a small, well-worked book.
The activity view is the one nobody asked for and everybody uses. It counts how long it has been since anything happened to a deal, which is usually the truest signal in the pipeline.
Deal Activity Health · the live dashboard
One number for the whole book, rather than a feeling about it.
Beyond 14 days needs a follow-up; beyond 30 is likely lost without re-engagement.
Ten people, one view
Each agent's numbers used to be a separate export. They now land on one screen — same window, same definitions, same live data.

How it is wired
No migration, and no new system of record. The dashboard reads what the business already produces and turns it into one feed.
Deals, meeting outcomes, bookings and documents stay exactly where the team creates them.
From reporting to deciding
The point was never the dashboard. It was the decision somebody makes because of it.
The decision it forced
Finance scenarios are the step between a strategy meeting and a deal. The dashboard tracks each request from raised to completed — and the first time the 90-day view was opened, it named the ones that had been sitting.
Finance Scenario · the live dashboard, 90-day window
66
scenarios in the 90-day window
The week ahead
The meeting view is bucketed by week rather than by the page's date filter, because the question it answers is always "what is on".
Sixty-two client meetings in the current week, each with its type, day, the agent running it and the credit-side detail the finance team needs before the call.
The honest split. A dashboard is only trustworthy if it is clear about which parts of the system are automatic and which are somebody's judgement.
Live reads from the source systems every time the screen is opened
Form and folder creation checked on every deal, every stage
Stage movement and conversion recalculated on every load
Finance scenario ageing, including the over-seven-days list
Domain-locked sign-in on every page and data route
One screen instead of a rebuild The whole pipeline — first appointment through to EOI — reads from one application, so asking a different question no longer means assembling a different spreadsheet.
Silent failures stopped being silent A deal missing its form or folder shows up on the day, against a fire rate the team can see, rather than surfacing weeks later.
Reporting runs unattended The screen reads the source systems in real time, so the numbers are current whenever someone opens it; nobody prepares the Monday numbers.
Stalled work has a name and an age Stale deals and ageing finance scenarios are listed with how long they have been sitting, which is what turns a dashboard into a decision.
Built on your stack. Owned by you. Shipped in weeks.


Deals untouched beyond 14 days, as a proportion of what each person carries.
The view also reports how many deals have no recorded activity at all.
Scheduled n8n workflows on Railway keep the tracker current, and Apps Script serves the team's own Google Sheets to the dashboard as JSON.
A single application on Vercel draws every view with Chart.js, behind a Google sign-in locked to the company domain.
73%
completed
3.3d
average turnaround
18
still open past seven days
Confirming a meeting outcome after the call
Deciding which stalled deal is worth chasing
Team role confirmation, reviewed by the client in their own sheet
Acting on an ageing finance scenario
Extending the same tracking to the earlier prospecting pipelines
Scheduled email or Slack digests off the same feed
Alerting when a stage conversion moves beyond a set threshold
The client owns it It runs on the systems they already pay for — their CRM, their Sheets, their Drive — with no new SaaS subscription and no new system of record.
2026-08-29
Read the case study