Scores classified B2B leads 0-100 against the Net Revenue setter qualification scorecard, assigns score tiers, writes setter-ready notes, and routes leads to the correct outbound account and channel. Use this skill whenever leads need to be scored, ranked, tiered, or assigned for outreach — including after classification, during pipeline reviews, when re-scoring existing leads, or when the user asks to "score", "rank", "tier", or "prioritize" leads. This skill requires classification data from nr-icp-classifier as input.
Score a pre-classified lead against Net Revenue's setter qualification scorecard. This is step 2 of a two-step process — classification comes from nr-icp-classifier, scoring happens here.
Takes a classified lead (with vertical, offer type, demand signals) plus raw lead data and Apollo enrichment, then:
Two JSON objects are required:
{
"vertical": "tax_strategy",
"offer_type": "service",
"estimated_ticket": "10k_25k",
"audience_tier": "unknown",
"demand_signals": ["high_reviews", "has_team", "booking_calls"],
"disqualify_reason": null
}
{
"name": "...", "bio": "...", "website": "...", "category": "...",
"follower_count": null, "review_count": 85, "rating": 4.9,
"has_booking_link": true, "is_running_ads": false,
"sources": ["google_maps"], "email": "...", "phone": "...",
"ig_handle": "...", "linkedin_url": "...",
"apollo_headcount": 12, "apollo_revenue": 2500000,
"apollo_industry": "Accounting", "apollo_founded_year": 2018,
"apollo_funding_total": null, "apollo_technologies": [],
"apollo_org_name": "...", "apollo_enriched": true
}
Any field can be null or missing.
Each criterion is scored independently, 0-20 points, for a total of 0-100. The five criteria are designed to answer one question: "Is this lead worth a setter's time?"
This measures whether the lead has public credibility signals. Leads with strong social proof are easier to close because prospects can verify their track record.
| Threshold | Points |
|---|---|
| 100+ reviews OR 4-5 star Trustpilot | 20 |
| 50-99 reviews | 16 |
| 20-49 reviews | 12 |
| Under 20 reviews (but some exist) | 8 |
| No reviews / no data | 0 |
Use review_count and rating as primary signals.
This overlaps with social proof but focuses on the raw volume of evidence — testimonials, case studies, client mentions. High volume means consistent delivery over time, which correlates with ability to pay for NR's services.
| Threshold | Points |
|---|---|
| 100+ proof points | 20 |
| 50-99 | 16 |
| 20-49 | 12 |
| Under 20 | 8 |
| No data | 0 |
When review data is missing, estimate conservatively from social signals (follower engagement, testimonials in bio, case studies on website).
Audience size indicates reach and demand capacity. But this criterion works differently for the two ICP segments because professional service firms don't build audiences the same way coaches do.
For coaches/consultants (Segment B):
| Threshold | Points |
|---|---|
| 250K+ followers | 20 |
| 100K-249K | 16 |
| 50K-99K | 12 |
| 20K-49K | 6 |
| Under 20K | 0 |
For professional service firms (Segment A) without social presence:
Use alternative credibility signals instead — these firms don't need followers to be great prospects:
Use the highest applicable score, not a sum.
NR's services are priced for businesses selling $3K+ offers. A lead selling $50 ebooks can't afford NR and won't see ROI. This criterion gates for economic fit.
| Fit Level | Points |
|---|---|
| Clear high-ticket ($3K+ confirmed) | 20 |
| Partial (likely but unconfirmed) | 10 |
| No (low-ticket, free, or unknown) | 0 |
Signals for clear fit:
estimated_ticket is 3k_5k or higherSignals for partial:
estimated_ticket is unknown but industry norms suggest $3K+This estimates whether the lead has enough inbound demand to justify NR's acquisition system. A lead with 5 calls a month doesn't need what NR offers. A lead drowning in 150+ calls/month is the ideal — they need systems to scale.
| Threshold | Points |
|---|---|
| 150+ estimated monthly calls | 20 |
| 75-150 | 16 |
| 50-74 | 12 |
| 20-49 | 6 |
| Under 20 | 0 |
This is an estimate — triangulate from:
is_running_ads = true → strong signal, likely 50+ calls/monthhas_booking_link = true → confirmed call-booking modelWhen unsure between two tiers, pick the lower one. False positives waste setter time — a setter who shows up to a call with inflated expectations loses trust in the pipeline.
| Tier | Range | What happens |
|---|---|---|
| priority_a | 80-100 | Push to GHL leadgen pipeline, top of queue |
| standard | 65-79 | Push to GHL leadgen pipeline, normal queue |
| nurture | 50-64 | Push to GHL nurture pipeline, long-term follow-up |
| dq | Below 50 | Logged but not pushed |
If the classification vertical is disqualified, assign score 0 and tier dq automatically.
The tier assignment follows the score mechanically — the scorer doesn't override tiers based on gut feel. The rubric is the system of record.
Write 1-2 sentences a setter can glance at before reaching out. These should be actionable — reference specific data points, not generic praise.
Good: "Tax advisory firm with 85+ Google reviews and 12-person team in Dallas. Lead with how NR helped Amanda Han CPA scale client acquisition."
Bad: "Looks like a promising lead with good potential."
Include:
After scoring, route the lead to the right outbound account and contact channel. Read references/account_assignment.md for the full mapping tables and the reasoning behind each rule.
The short version:
Return only valid JSON — no markdown wrapping, no explanation:
{
"setter_score": 76,
"score_breakdown": {
"social_proof": 16,
"review_volume": 16,
"audience_size": 12,
"offer_fit": 20,
"demand_indicator": 12
},
"score_tier": "standard",
"notes": "CPA firm with 65+ Google reviews and 12-person team in Dallas. Has booking link but not running ads. Lead with tax strategy pain points.",
"assigned_account": "Britt",
"secondary_account": "Wade",
"primary_channel": "linkedin",
"is_partnership_track": false
}
Example 1: Strong Segment A lead
Classification: {"vertical": "tax_strategy", "offer_type": "service", "estimated_ticket": "10k_25k", "audience_tier": "unknown", "demand_signals": ["high_reviews", "has_team", "booking_calls"]}
Lead data: review_count=92, rating=4.9, has_booking_link=true, apollo_headcount=8, apollo_revenue=1800000, apollo_founded_year=2015, linkedin_url="https://linkedin.com/company/apex-tax"
Output:
{"setter_score": 82, "score_breakdown": {"social_proof": 16, "review_volume": 16, "audience_size": 12, "offer_fit": 20, "demand_indicator": 18}, "score_tier": "priority_a", "notes": "Tax advisory firm, 92 Google reviews at 4.9 stars, 8-person team, $1.8M revenue. Has booking link and strong fundamentals. Lead with scale story — similar firms 2x'd inbound with NR.", "assigned_account": "Britt", "secondary_account": "Wade", "primary_channel": "linkedin", "is_partnership_track": false}
Example 2: Mid-tier coach
Classification: {"vertical": "str_coaching", "offer_type": "coaching", "estimated_ticket": "3k_5k", "audience_tier": "mid", "demand_signals": ["running_ads", "booking_calls"]}
Lead data: follower_count=78000, is_running_ads=true, has_booking_link=true, review_count=null, apollo_headcount=3, email="[email protected]"
Output:
{"setter_score": 62, "score_breakdown": {"social_proof": 0, "review_volume": 0, "audience_size": 12, "offer_fit": 20, "demand_indicator": 16}, "score_tier": "nurture", "notes": "STR coaching program with 78K followers, running ads and booking calls. No review data which drags down score. Worth nurturing — if they can show testimonials, score jumps to standard.", "assigned_account": "Wade", "secondary_account": "Ben", "primary_channel": "ig", "is_partnership_track": false}
Example 3: Disqualified lead
Classification: {"vertical": "disqualified", "offer_type": "course", "estimated_ticket": "under_3k", "audience_tier": "mid", "demand_signals": ["running_ads"], "disqualify_reason": "crypto keyword in bio"}
Output:
{"setter_score": 0, "score_breakdown": {"social_proof": 0, "review_volume": 0, "audience_size": 0, "offer_fit": 0, "demand_indicator": 0}, "score_tier": "dq", "notes": "Disqualified — crypto/trading vertical. Not an NR ICP fit regardless of audience size.", "assigned_account": "Scott", "secondary_account": "Ben", "primary_channel": "ig", "is_partnership_track": false}
setter_score. This is a mechanical check — if they don't add up, the output is wrong.dq. Still write notes (explaining the DQ) and assign account/channel (for logging, even though they won't be pushed).dq, and note that classification is required first.