Pipeline
Shipping todayA pipeline that tells you what is slipping
The useful question is never how many candidates are in the pipeline. It is which requisitions will not fill this month, and what is causing it.
Pipeline management in Surhires shows every live requisition, the candidates at each stage, and how long each has been sitting there. Ageing, stalled submittals, slipped interviews and offers past their response deadline are surfaced automatically, so an owner sees the problems rather than the totals.
By Surhires Editorial · Published · Reviewed
In the product: RecruitmentPipelinePage.tsx, RecruitmentDashboard.tsx and recruitmentDashboardMetrics.ts
Counts are not a pipeline
A board with forty cards on it tells you almost nothing. Twelve of those candidates were submitted three weeks ago and have had no client response. Six have interviews that have already been rescheduled twice. Two are sitting on offers whose response deadline passed on Friday. Those eight facts are the pipeline; the forty is noise.
Surhires computes time-in-stage on every record and flags anything outside the normal range for that client and that job type. What you see first is the exception list, not the census.
The reason a count feels reassuring is that it is going up. Volume grows every time anyone does anything, which makes it a poor measure of whether a desk is going to bill this month. A requisition with thirty candidates in it and no client response for a fortnight is in more trouble than one with four candidates and two interviews booked, and only one of those two facts is visible on a board that counts.
Ageing by stage, not by record
A candidate who has been in your database for two years is not a problem. A candidate who has been at submitted for nineteen days is. Ageing is measured from the last stage change, per stage, and the threshold is set per stage rather than globally, because a three-day-old offer is fine and a three-day-old interview confirmation is not.
Thresholds can be learned from your own history rather than guessed. If your average submittal-to-response for a given client is four days, an eleven-day silence is worth a call.
The stages differ in what a delay actually means, which is why one global number never works. Silence after a submittal is usually a client attention problem. Silence after an interview is usually a feedback problem. Silence after an offer is a candidate problem and frequently a counter-offer. Same elapsed time, three different phone calls, and a system that treats them identically sends the recruiter to the wrong one.
Requisition health
Every requisition carries a health state derived from real signals: how many candidates have been submitted against it, how many were rejected and for what coded reason, how long it has been open relative to your own time-to-fill for that role type, and whether the client has responded to anything recently.
A requisition with eleven submittals and nine salary rejections is not a sourcing problem. Surfacing that early is the difference between renegotiating the brief in week two and losing the job in week seven.
The health state is a prompt rather than a verdict, and it is worth saying so because a red badge invites people to argue with the badge instead of acting on it. What the state is claiming is narrow: on the evidence in the system, this requisition is behaving unlike the ones that fill. The recruiter frequently knows a reason that is not in the system. The point of the flag is to make sure the reason gets said out loud rather than assumed.
Forecasting from stage, not from optimism
Revenue forecasting uses your own conversion rates by stage rather than a probability a recruiter types in. If your desk converts thirty-one percent of first interviews to offers and eighty-four percent of offers to placements, the forecast follows from where the candidates actually are.
The forecast is shown as a range with the assumptions visible, because a single number invites a false confidence that a staffing pipeline rarely deserves.
It gets less useful the further out you look, and the interface says so rather than extending the line. A forecast for the current month is largely arithmetic on candidates who already exist. A forecast for the quarter depends on requisitions nobody has won yet and candidates nobody has met, which is not forecasting so much as budgeting. We would rather show a narrow claim you can rely on than a wide one that gets quoted in a board pack.
Desk-level and owner-level views
A recruiter sees their own board and their own exceptions. An owner sees the same data rolled up by desk, by client and by job type, and can drill straight into the underlying records.
Both views are the same data. Nobody is maintaining a separate management report, which is what makes the numbers trustworthy.
That shared basis changes the politics of reporting as much as the mechanics. When the management number is produced by a separate process, every conversation about performance starts with a dispute about the number, and the recruiter is usually right that it is missing something. When both people are looking at the same records with the same definitions, the disagreement moves to what to do next, which is the conversation that was supposed to be happening.
Alerts that arrive where the work happens
Exceptions can be pushed to a daily digest, to a Slack or Teams channel, or into the task list a recruiter already works from. What matters is that the alert carries the next action, not just the fact.
An offer past its response deadline arrives as a task to call the candidate, with the candidate, the client contact and the offer detail attached.
Volume is the thing that kills an alerting system, so the defaults are deliberately quiet. A digest once a day beats a notification per event, exceptions are grouped by the action they need rather than by the record they came from, and anything a recruiter dismisses repeatedly is a signal that the threshold is wrong rather than that the recruiter is ignoring it.
The first month of exceptions is the loud one
Every desk that switches ageing thresholds on discovers the same thing in week one, which is that the backlog is real. Dozens of submittals genuinely have been silent for a fortnight, and several offers genuinely did pass their deadline. The instinct is to raise the thresholds until the noise stops, and that is how a monitoring tool gets quietly turned off in its first month.
The sequence that works is to treat the first pass as a clean-up rather than as an alert stream. Work the backlog once, close or chase everything in it, and only then set thresholds from each client's own response history rather than from a single global number. Starting with two exception types, usually stalled submittals and offers past deadline, gets a desk into the habit without burying it.
After that the useful measure is not how many exceptions there are but how quickly they get closed. A board that carries fifteen open exceptions on a Monday and three on a Thursday is a working desk. One that carries the same fifteen all month is telling you something about capacity, and it is better to see that on a board than to infer it from a bad quarter.
Where a pipeline view does not help
It does not fill requisitions. Everything on the board is a description of work that has already happened, arranged so the gaps are obvious. The board can tell you that a requisition will not fill on its current trajectory three weeks before that becomes undeniable, which is genuinely valuable and is also not the same thing as doing something about it.
The forecast is only as good as the history behind it, and on a new desk there is no history. Until enough placements have gone through the stages, the conversion rates are computed from a handful of outcomes and the interface says the sample is too small rather than showing a confident figure. Source-level forecasting is thinner still, because source-of-hire attribution is in build for the Wave 1 release, so today the forecast decomposes by desk, client and job type but not yet by where the candidate came from.
It also cannot see the things that are not in the system. A client who has told your recruiter over lunch that the budget is frozen looks, on the board, like a client who has stopped responding. The health state will flag it, and the flag will be right for the wrong reason. That is an argument for logging the conversation, not an argument against the flag.
What you get
Time-in-stage
Every card ages from its last transition, not from when the record was created.
Per-stage thresholds
Different tolerance for a stalled submittal and a stalled offer.
Client response baselines
Thresholds derived from each client's own history, so a habitually slow client is not a daily alert.
Exception-first view
The board opens on what needs attention rather than on the full census.
Requisition health
Submittal volume, coded rejection pattern, open days and client responsiveness in one state.
Stage conversion rates
Real conversion by desk, client and job type, computed from your own history.
Revenue forecast
A range derived from stage conversion, with the assumptions shown.
Small-sample honesty
Where there are too few placements to mean anything, the forecast says so instead of showing a figure.
Slip detection
Interviews rescheduled more than once and offers past deadline are surfaced automatically.
Guarantee tracking
Placements still inside a rebate window remain visible after they close.
Desk roll-up
Owner view by recruiter, client and job type, drilling into the same records.
Digest and channel alerts
Daily digest, Slack or Teams, or straight into the recruiter task list.
Actionable alerts
Every alert carries the next action and the context needed to take it.
Saved board filters
Per-recruiter board configurations that persist across sessions.
Questions recruiters ask
Where do the conversion rates come from?
From your own stage history. Until you have enough placements for the numbers to mean anything, the forecast says so rather than showing a confident figure computed from six data points.
Can thresholds differ per client?
Yes. A client who habitually takes eight days to respond should not generate an alert on day five. Thresholds can be set manually or derived from that client's own response history.
Does the pipeline include contract extensions?
Yes. An extension is tracked as its own event against the placement, with its own end date, so a desk running a contract book sees renewals coming before they lapse.
Can a recruiter hide requisitions that are not theirs?
The default board is scoped to the recruiter's own requisitions and shared reqs. Owners and managers see everything. Visibility follows the permission model rather than a personal filter.
How does this differ from a sales pipeline in a general CRM?
A recruitment pipeline has two sides. A candidate can be in play on three requisitions and a requisition can hold twenty candidates, and a placement needs both to close. General CRMs model a single deal object and break as soon as that many-to-many relationship matters.
Is the forecast used for commission?
No. Commission runs from placements and invoices, which are facts. The forecast is for planning, and it is deliberately shown as a range so it is not mistaken for a fact.
Our recruiters already know what is slipping. What does this actually add?
On a two-person desk with fifteen live requisitions, honestly not much, and we would rather say that than sell you a dashboard. It starts earning where no single person holds the whole board: more desks than one owner can carry in their head, cover during holiday and illness, and handovers. It also survives the week everybody is busy, which is exactly the week things slip.
See it against your own reqs
Bring one live role and three resumes. In twenty minutes you will see the match scores, the shortlist and the placement invoice that comes out the other end.