CRM lead lifecycle · funnel & pipeline metrics · forecast · attribution · ICP segmentation — as of 2026-07-07
Stage-wise conversion and drop-off, computed from data/revenue_engine.db via src/analytics/funnel.py (scripts/02_run_funnel_metrics.py) — not asserted, re-derivable from source data.
| Transition | From | To | Conversion | Drop-off | 2025–26 benchmark |
|---|---|---|---|---|---|
| Lead → MQL | 2,080 | 995 | 47.8% | 52.2% | 35–55% · within |
| MQL → SQL | 995 | 241 | 24.2% | 75.8% | 20–25% · within |
| SQL → Opportunity | 241 | 104 | 43.2% | 56.8% | 30–50% · within |
| Opportunity → Closed Won | 104 | 21 | 20.2% | 79.8% | 25–35% · below |
Opportunity → Closed Won is the one stage below its published benchmark range — the AI Copilot's "which stage is underperforming?" answer names this same stage from this same table, not a separate guess.
Month-over-month % change in qualified-lead (MQL) volume. July is a 7-day partial month (data cutoff 2026-07-07) — its −56.7% reading is a partial-month artifact, not a real drop; excluded from the forecast trendline and from the AI Copilot's trend read.
| Month | Leads | MQLs | LVR (MoM) |
|---|---|---|---|
| 2026-02 | 340 | 141 | — |
| 2026-03 | 365 | 183 | +29.8% |
| 2026-04 | 390 | 181 | −1.1% |
| 2026-05 | 415 | 189 | +4.4% |
| 2026-06 | 440 | 210 | +11.1% |
| 2026-07* | 130 | 91 | −56.7% (partial month, not comparable) |
Leads sourced and MRR won, by each lead's first-touch channel. Outbound LinkedIn drives the largest won-MRR share on this simple view — but see the multi-touch attribution section below, where last-touch credit tells a different story.
| Channel | Leads | Won deals | Won MRR | Win rate |
|---|---|---|---|---|
| Signal-scored inbound | 709 | 6 | $6,550 | 0.85% |
| Outbound LinkedIn | 581 | 8 | $14,050 | 1.38% |
| Cold email sequence | 426 | 5 | $10,600 | 1.17% |
| Referral | 210 | 1 | $2,200 | 0.48% |
| Content/organic | 154 | 1 | $2,650 | 0.65% |
v1 could only do first-touch (one channel field per lead). v2 tracks 2–6 timestamped touches per lead in the activities table, so src/analytics/attribution.py can compute first-touch, last-touch, linear, and U-shaped (40/20/40) credit — and they disagree, which is the actual RevOps talking point.
| Channel | First-touch | Last-touch | Linear | U-shaped |
|---|---|---|---|---|
| Outbound LinkedIn | $14,050 | $8,350 | $11,498 | $10,982 |
| Signal-scored inbound | $6,550 | $9,950 | $9,435 | $8,643 |
| Cold email sequence | $10,600 | $5,650 | $6,947 | $7,752 |
| Referral | $2,200 | $8,000 | $4,847 | $5,053 |
| Content/organic | $2,650 | $4,100 | $3,323 | $3,620 |
Top channel by model: first-touch → Outbound LinkedIn · last-touch → Signal-scored inbound · linear → Outbound LinkedIn · U-shaped → Outbound LinkedIn. First-touch and last-touch disagree on the top channel — a real budget-allocation decision hinges on which model a team standardizes on, not a data error. (21 won deals, $36,050 total won MRR attributed.)
src/segmentation/icp.py scores every account 0–100 on category fit + firmographic fit + signal strength, bucketing into Beachhead / Core ICP / Adjacent / Poor Fit. The synthetic generator encodes different conversion odds by segment, so this section verifies reporting behavior rather than predictive lift.
| Segment | Leads | Won | Won MRR | Lead→Won rate |
|---|---|---|---|---|
| Beachhead | 1,109 | 18 | $32,550 | 1.62% |
| Core ICP | 799 | 3 | $3,500 | 0.38% |
| Adjacent | 161 | 0 | $0 | 0.00% |
| Poor Fit | 11 | 0 | $0 | 0.00% (sample too small to be reliable) |
Beachhead (Beauty/Baby/Skin, small-seller firmographic fit, strong signal) converts at 4.3× Core ICP's rate — the segmentation is doing real work, not just labeling accounts.
Close probabilities are derived from this dataset's own SQL→Opportunity→Won conversion history (not generic industry assumptions). Scenario bounds use the published SMB Opportunity-win-rate range (15–35%). See src/analytics/forecasting.py.
| Month | Projected leads | Projected MQL | Projected SQL | Projected Opp | New MRR (worst / expected / best) |
|---|---|---|---|---|---|
| 2026-08 | 467 | 223 | 54 | 23 | $5,006 / $8,343 / $13,348 |
| 2026-09 | 496 | 237 | 57 | 25 | $6,674 / $8,343 / $15,017 |
| 2026-10 | 527 | 252 | 61 | 26 | $6,674 / $8,343 / $15,017 |
Load-balance check on src/crm/routing.py's executable weighted round-robin (crm-system-design.md §2) — leads land within ~2% of an even three-way split, confirming the routing rule works as designed, now provably true of the code path (see tests/test_analytics.py), not just of one dataset.
| Rep | Leads | SQL | Closed Won | Won MRR |
|---|---|---|---|---|
| A. Chouhan | 683 | 80 | 4 | $3,650 |
| R. Iyer | 692 | 78 | 6 | $11,750 |
| S. Kapoor | 705 | 83 | 11 | $20,650 |
src/copilot/revops_copilot.py answers RevOps questions over the exact data above — either via a real Claude API call (if ANTHROPIC_API_KEY is set) or an honestly-labeled deterministic analyst engine when it isn't. Neither path ever states a number not present in the data. Live, interactive version: streamlit run dashboard_app.py → "AI Copilot" tab.
| Question | Answer (deterministic-fallback mode) |
|---|---|
| Why is pipeline down? | No — MQL lead velocity averaged +4.8% over the last 3 complete months (partial July excluded). Not currently down. |
| Which stage is underperforming? | Opportunity → Closed Won: 20.2% vs. its 25–35% benchmark range. |
| Which segment converts best? | Beachhead: 1.62% Lead→Won rate on 1,109 leads ($32,550 won MRR). |
| Where should sales focus? | Fix Opportunity→Won conversion, double down on Beachhead, and S. Kapoor's rep-level results (lowest won MRR is the first coaching target — full report varies by run). |