Lifecycle and Routing
Define stages as exits, route deterministically, and measure the SLA rather than publishing it. Most lead-quality arguments are handoff-definition arguments in disguise.
When to use
- Sales says the leads are bad and marketing says the leads are fine
- Inbound sits untouched
- No written stage definitions, or written ones nobody follows
- Territory or ownership changes
Inputs
- Reads:
workspace/data/scoring-model.md,workspace/data/object-model.md - Needs from user: current stage list, how a lead reaches a rep today, the ownership rules, and one recent example of a lead both sides disagreed about
That last example is the most useful input in the whole skill. Work the specific case rather than the abstraction.
Workflow
1. Define every stage as an exit, not an entry
The single change that fixes most lifecycle problems.
An entry definition ("an MQL is a lead that downloaded something") tells you nothing about what happens next. An exit definition names what must be true to leave, who decides, and where it goes.
STAGE: <name>
Enters when: <condition>
Exits when: <specific, checkable condition>
Who decides: <role>
Exits to: <next stage, or disqualified with a reason>
Max time in stage: <n days, then it is escalated or aged out>
The max-time field prevents the silent graveyard. Without it, records accumulate in a middle stage forever and the stage becomes a place things go rather than a place things pass through.
2. Kill the undefined MQL
An MQL that only means "hit a score threshold" produces the recurring argument, because it encodes no fit judgment.
Replace it with the two-axis output from icp-scoring-engine:
High fit + high intent → route to a rep now, SLA applies
High fit + low intent → nurture, marketing keeps ownership
Low fit + high intent → inspect. Often a competitor, student, or job seeker
Low fit + low intent → suppress. No rep ever sees it
The fourth quadrant is what earns sales trust. A team that stops sending bad-fit leads gets believed about the good ones.
3. Write the routing rules to be deterministic
Every record has exactly one owner, decided by a rule, not by a scramble.
Route on: <territory | segment | round robin | named account owner>
Precedence: named account owner > territory > segment > round robin
Fallback: <named person, for anything unmatched>
Reassignment: <who can, under what condition>
A named fallback owner is required. Unmatched records with no fallback go nowhere, and nobody notices because nobody owns noticing.
Precedence order matters. Named account ownership beating round robin is what stops two reps calling the same company in one week.
4. Set the SLA, then measure it
An SLA that is published but not measured is a preference.
| Segment | First-touch SLA | Why |
|---|---|---|
| High fit, high intent inbound | 15 minutes | Conversion falls off sharply beyond this |
| High fit, medium intent | Same business day | |
| Everything else routed to a rep | 48 hours |
Measure: median and 90th percentile minutes from routed to first touch
Report: weekly, by rep, visible to the team
Escalate: breaches over <n>, automatically, to the manager
Report the 90th percentile alongside the median. A good median with a terrible tail means a subset of leads is being ignored entirely, and the median hides it.
5. Instrument the handoff both ways
The handoff needs a return path, or lead quality is discussed only in meetings.
Marketing → Sales: the record plus why it qualified, in a field
Sales → Marketing: accept or reject with a reason code, required
Reason codes need to be short and mandatory. Four to six options. Rejection reasons aggregated monthly are the most honest lead-quality data available, and they end the argument by replacing it with a distribution.
6. Check stage integrity
Stage integrity = records in a stage that meet its exit criteria ÷ records in that stage
Under 75% and the definitions are being ignored, which means every funnel metric built on them is wrong. Fix the definition or fix the enforcement, and pick which before publishing another conversion rate.
Output
- Writes:
workspace/reports/lifecycle.md - Uses:
templates/lifecycle-stage-definitions.md - Prints: the stage table with exits and max times, the four-quadrant routing, the routing precedence with fallback, the SLA table, the reason-code set, and the stage integrity figure
Rules & quality bar
- Every stage defined as an exit, with a decider and a max time
- No undefined MQL. Fit and intent, separately
- Bad-fit records never reach a rep. This is how trust gets built
- One owner per record, by rule, with a named fallback
- Named account ownership outranks round robin
- SLAs are measured and reported by rep, median and 90th percentile
- Rejection reason codes are mandatory and aggregated monthly
- Stage integrity under 75% invalidates the funnel metrics. Say so before reporting them
Related skills
- Requires:
icp-scoring-enginefor the two axes - Pairs with:
signal-pipelinefor trigger-driven routing - Feeds:
reporting-architecture - See also:
docs/metrics.md