When a hire pays off
VOICE MEDIA GROUP · 2025–2026
Three systems, no shared identifier, and a question the company had never been able to answer.
3
systems joined that shared no identifier
193
sellers measurable on one model for the first time
8
months to profitability, median for sellers hired after 2020
145K
activity records joined, across six years
01What the company couldn't see
A seller costs money for months before they make any. Nobody at the company could say how many months, or tell you at month three whether a given hire was going to get there. We hired fifteen to twenty of them a year.
The pieces of the answer existed. The revenue system knew what every seller booked, the CRM knew what they did to book it, and HR knew when they started. No two of those systems shared an identifier, so every question that sat across them stayed unanswered.
That shaped what leadership talked about. Revenue was reported monthly because revenue was reportable, and activity was not, so the executive review ran on lagging indicators alone: what had already happened, discussed once it had finished happening.
Reproducing even the basics by hand ran four to five hours a week, and some of it could not be reproduced at all. I asked IT to join the three systems and the answer was no, because a multi-year ERP programme already owned their development backlog. So I built it myself, in spreadsheets.
What each system could tell us
- Revenue system
- revenue booked, orders, client counts, monthly turn
- CRM
- calls, meetings, opportunities created
- HRIS
- hire date, tenure, business unit
What none of them could
- Whether activity predicted revenue
- When a new seller became profitable
- Whether a hire was on track at month three
- Whether paying for experience bought a faster ramp
- Any of the above for one named seller, across all three
Every question on the right sits across two or more systems. None of the three shared a key, so none of them could be answered.
Synthetic data: the architecture is real, the figures are generated, and no seller, client or partner data appears.
02What I built
None of the three systems carried a shared key, so the first thing I built was one: a synthetic seller ID, and a mapping from every record in every source onto it.
That sounds procedural until you look at what the CRM held. One person could appear three times, and a join on name would have counted them as three sellers and split their revenue across all three. Identities had to resolve to human beings before anything above them could be trusted.
What sat on top was deliberately ordinary. Raw exports landed untouched in their own sheets, a joined fact table sat above them at one row per seller per month, and pre-aggregated rollups fed the reporting layer so it never had to touch the raw rows.
The first version joined the three sources inside the BI tool and would not hold under testing. The join belonged a layer down, at the spreadsheet, and rebuilding it there cost weeks and fixed it.
214 CRM identities resolved to 193 sellers. 17 of them held more than one.
03What it made measurable
The first thing it produced was a relationship nobody had been able to state. Revenue and pre-sales activity had lived in separate systems, so no one had ever shown that a change in call volume translated into a change in closed campaigns and booked revenue. Once the two sat on one timeline the link was visible, and activity stopped being the thing managers nagged about and became the thing that predicted the number.
Then the benchmarks. Restricted to sellers hired after the revenue panel opens in 2020, where the full history is observable, a new seller reached $50,000 in cumulative net revenue in a median of seven months, $100,000 in ten, and consistent profitability at around eight. Anyone hired before that window shows the distance from their hire date to the start of the data rather than a ramp, so a company-wide average including them would mean nothing.
I designed twelve metrics and wrote down why each one existed. Eleven got built; our CRM could not produce the twelfth.
Some of these had been possible before, through manual work across systems that nobody had time to do weekly. Others had never been possible at all, which is why nobody was asking for them.
Both series indexed to 100 at the first shared month, so two different measures can sit on one axis.
Dot is the median, line the full observed range. Scoped to the 73 sellers hired after the revenue panel opens in 2020, where the full history is observable. The other 120 were already on the books when the data starts, so a ramp measured for them is really the distance from their hire date to January 2020.
04What changed
Four things, and none of them were mine to decide.
Hiring. I presented the ramp analysis split by experience class. The rookies matched or beat the experienced hires to the early and middle benchmarks and fell slightly behind on the two longest, on cells of one to nine sellers, which I said plainly when I presented it. It was enough to make the case that the premium we paid for prior sales experience was not buying faster time to revenue. The profile changed: we began screening for communication skills and appetite for a high volume of sales activity ahead of years on a sales floor.
The executive review. Leadership moved from reviewing lagging indicators alone to reviewing leading and lagging together.
Management practice. Local managers shifted from hammering on revenue to working the leading indicators with their teams, and new training was ordered and delivered to support the change.
The systems the company bought. The dashboard and its metrics were used as a filter during the ERP and CRM migrations that followed, and both projects were amended so the systems they delivered could carry the measurement the spreadsheet had been carrying.
That last one still surprises me. The function that declined to build this wrote it into the specification for the systems that replaced it.
| Benchmark | Green | Silver | Gold |
|---|---|---|---|
| $50k cumulative | 7.0 n=7 | 8.5 n=2 | 8.0 n=9 |
| $100k cumulative | 10.5 n=6 | 8.0 n=1 | 11.0 n=7 |
| Sustained $10k/month streak | 10.0 n=5 | 9.0 n=2 | 9.5 n=8 |
| Consistent profitability | 9.0 n=4 | 8.0 n=1 | 11.0 n=7 |
Median months to benchmark; lower is faster. Green is the rookie cohort, Gold the experienced one. It rests on 18 classified sellers out of 73, in cells of one to nine, which is enough to raise the question and not enough to settle it. That is why every n is shown.
05What I'd do differently
Three things, and they are all the same thing: I built for the data I could get instead of arguing for the data that existed.
I had transaction-level records going back to 2013 and I used monthly aggregates, because Google Sheets caps at ten million cells and the transaction detail did not fit. Selling patterns, industry-level trends, product-level trends: all of it was sitting in the export and none of it reached the model. Learning a real warehouse would have cost me a week I did not think I could spare, and it would have repaid that week almost immediately.
The refresh stayed manual for the life of it. Every month I re-pulled and reorganised the exports by hand, an hour or two each time, which put a company-wide reporting layer on one person's calendar. That is a single point of failure, and it existed because the automated export was the thing IT had already declined.
So I would make the warehouse, the volume headroom and the automated pipeline part of the original ask rather than accepting the fallback and building around it. I got a working answer out of the fallback. I left a much larger one in the export.