lead-qualification-playbook
Skill51 starsChanged 8 months agoMITView on GitHub
Guides sales reps through structured lead qualification using BANT+ methodology. Evaluates leads, suggests discovery questions, scores quality, and recommends next steps. Use when user says "qualify this lead", "help me qualify", "BANT analysis", "score this lead", "should I convert this lead", "lead qualification questions", or "assess lead quality".
In this repository15 other files it gives its agents.
- account-briefing-generatorSkill
- account-risk-early-warningSkill
- competitive-intelligenceSkill
- create-an-assetSkill
- cross-sell-target-identifierSkill
- daily-briefingSkill
- draft-outreachSkill
- duplicate-detectiveSkill
- expense-entrySkill
- forecastSkill
- handoff-brief-generatorSkill
- log-call-transcriptsSkill
- next-best-action-engineSkill
- pipeline-health-analyzerSkill
- win-loss-pattern-analyzerSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 9 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 17
When user provides a lead to qualify, retrieve current lead data:
- Distinctive: line 382
If user confirms conversion to opportunity:
- Distinctive: line 482
Always capture the "why": Don't just check boxes, understand the context
- Distinctive: line 565
Search by name and company instead of ID
- Distinctive: line 566
Check if lead was already qualified (statecode = 1)
- Distinctive: line 567
Verify lead exists in active records
- Distinctive: line 572
Ensure companyname is populated for account creation
- Distinctive: line 573
Verify email or phone exists for contact creation
- Distinctive: line 580
Check if msdyn_leadscore field exists in org
- Very specific: line 581
Use leadqualitycode (Hot/Warm/Cold) as alternative
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Lead Qualification Playbook
Consistent lead qualification is critical for sales efficiency. This skill provides a structured playbook that helps SDRs qualify leads effectively, ensures all qualification criteria are captured in Dataverse, and provides AI-assisted recommendations on lead disposition.
Instructions
Step 1: Retrieve Lead Information
When user provides a lead to qualify, retrieve current lead data:
SELECT leadid, subject, firstname, lastname, fullname, companyname, jobtitle,
emailaddress1, telephone1, mobilephone, description,
leadsourcecode, industrycode, numberofemployees, revenue,
budgetstatus, budgetamount, need, purchasetimeframe, purchaseprocess,
decisionmaker, leadqualitycode, msdyn_leadscore, msdyn_leadgrade,
estimatedamount, estimatedclosedate, qualificationcomments,
createdon, modifiedon, statecode, statuscode, ownerid
FROM lead
WHERE leadid = '[lead_id]'Also retrieve any related activities:
SELECT activityid, subject, activitytypecode, createdon, description, statecode
FROM activitypointer
WHERE regardingobjectid = '[lead_id]'
ORDER BY createdon DESCStep 2: Assess Current Qualification Status
Display Lead Summary:
LEAD QUALIFICATION WORKSHEET
════════════════════════════════════════════════════
Lead: [fullname] at [companyname]
Title: [jobtitle]
Source: [leadsourcecode]
Created: [createdon]
Current Grade: [msdyn_leadgrade]
AI Score: [msdyn_leadscore]/100
CURRENT BANT STATUS:
════════════════════════════════════════════════════
Budget: [budgetstatus] - [budgetamount if set]
Authority: [decisionmaker status]
Need: [need]
Timeline: [purchasetimeframe]
Process: [purchaseprocess]Calculate Initial Qualification Score:
| Criteria | Current Value | Score (0-20) |
| Budget | [value] | [score] |
| Authority | [value] | [score] |
| Need | [value] | [score] |
| Timeline | [value] | [score] |
| Fit | [value] | [score] |
| Total | /100 |
Step 3: Guide Through BANT+ Discovery
3.1 Budget Qualification
Current Status: budgetstatus field value
- 0 = No Committed Budget
- 1 = May Buy
- 2 = Can Buy
- 3 = Will Buy
Discovery Questions to Ask:
If budgetstatus is NULL or 0 (No Budget):
- "Do you have budget allocated for this initiative?"
- "What's the approval process for projects like this?"
- "Have you invested in similar solutions before? What was the range?"
If budgetstatus is 1 (May Buy):
- "Is budget already approved, or does it need to go through a process?"
- "Who needs to sign off on the budget?"
- "What's your target investment range?"
If budgetstatus is 2 (Can Buy):
- "What's the specific budget you're working with?"
- "Are there any constraints on timing of spend?"Update Guidance:
Based on responses, update lead record:
- budgetstatus: [0-3 based on response]
- budgetamount: [$ amount if confirmed]
- qualificationcomments: Append budget notes3.2 Authority Qualification
Current Status: decisionmaker field (BIT: true/false)
Discovery Questions:
If decisionmaker is NULL or false:
- "Who else is involved in evaluating solutions like ours?"
- "What's the decision-making process at [companyname]?"
- "Will you be the one signing the contract, or is there another stakeholder?"
If jobtitle suggests individual contributor:
- "Who on your team would champion a project like this?"
- "Does your manager know you're exploring solutions?"
- "Who would need to approve moving forward?"Authority Mapping:
Based on job title and responses, classify:
- Economic Buyer (signs checks): C-level, VP, Director
- Technical Buyer (evaluates): Manager, Sr. Engineer, Architect
- User Buyer (end user): Analyst, Associate, Individual Contributor
- Champion (internal advocate): Any level, shows enthusiasm
- Blocker (potential resistance): IT Security, ProcurementUpdate Guidance:
Update lead record:
- decisionmaker: true/false (is this person the decision maker?)
- qualificationcomments: Append "Decision Process: [notes]"
- description: Add stakeholder mapping if multiple people mentioned
Consider creating related contacts if additional stakeholders identified3.3 Need Qualification
Current Status: need field
- 0 = Must have
- 1 = Should have
- 2 = Good to have
- 3 = No need
Discovery Questions:
If need is NULL or 3 (No need):
- "What prompted you to look into [solution type] now?"
- "What challenges are you trying to solve?"
- "What happens if you don't address this?"
If need is 2 (Good to have):
- "How is this problem impacting your business today?"
- "What's the cost of inaction?"
- "Is this tied to any strategic initiatives?"
If need is 0-1 (Strong need):
- "Can you quantify the impact of this problem?"
- "What have you tried before to solve this?"
- "What would success look like?"Pain Point Framework (capture in notes):
- Problem: What specific problem are they experiencing?
- Impact: What's the business impact (cost, time, risk)?
- Root Cause: Why hasn't this been solved before?
- Desired Outcome: What does the ideal solution look like?
Update Guidance:
Update lead record:
- need: [0-3 based on response]
- description: Append pain points and requirements
- qualificationcomments: Append need summary3.4 Timeline Qualification
Current Status: purchasetimeframe field
- 0 = Immediate
- 1 = This Quarter
- 2 = Next Quarter
- 3 = This Year
- 4 = Unknown
Discovery Questions:
If purchasetimeframe is NULL or 4 (Unknown):
- "When are you looking to have a solution in place?"
- "Is there a specific event or deadline driving this?"
- "What happens if this slips to next quarter/year?"
If purchasetimeframe is 2-3 (Next Quarter/This Year):
- "What's driving that timeline?"
- "Is there flexibility, or is it a hard deadline?"
- "What needs to happen between now and then?"
If purchasetimeframe is 0-1 (Immediate/This Quarter):
- "What's the compelling event?"
- "What could delay the decision?"
- "Who needs to be involved to meet that timeline?"Urgency Signals to Listen For:
- Contract renewals (existing vendor)
- Regulatory compliance deadlines
- Fiscal year budget cycles
- Business initiatives or transformations
- Competitive pressure
- Executive mandates
Update Guidance:
Update lead record:
- purchasetimeframe: [0-4 based on response]
- estimatedclosedate: Set based on timeline
- qualificationcomments: Append timeline notes and compelling event3.5 Fit Assessment (Additional Qualification)
Evaluate if the lead matches your ideal customer profile:
Company Fit:
Query industry and size signals:
- industrycode: Does it match target industries?
- numberofemployees: Is company size in range?
- revenue: Does revenue indicate right market segment?Fit Questions:
- "How many people would use this solution?"
- "What systems would this need to integrate with?"
- "Are you currently using any similar tools?"
- "What's your technology stack?"Fit Scoring Matrix:
| Criteria | Good Fit | Moderate Fit | Poor Fit |
| Company Size | [your range] | Borderline | Outside range |
| Industry | Target vertical | Adjacent | Unserved |
| Use Case | Core product | Possible | Not supported |
| Tech Stack | Compatible | Workable | Incompatible |
Step 4: Calculate Final Qualification Score
BANT+ Scoring Model:
| Criteria | Weight | Scoring |
| Budget | 25% | 3=25, 2=20, 1=10, 0=0 |
| Authority | 20% | Decision Maker=20, Champion=15, User=10, Unknown=0 |
| Need | 25% | 0=25, 1=20, 2=10, 3=0 |
| Timeline | 15% | 0=15, 1=12, 2=8, 3=4, 4=0 |
| Fit | 15% | Good=15, Moderate=10, Poor=0 |
Total Score Interpretation:
- 80-100: Hot - Highly qualified, ready for opportunity
- 60-79: Warm - Qualified but needs nurturing on gaps
- 40-59: Cold - Significant gaps, may need more development
- 0-39: Disqualify - Poor fit or no real opportunity
Step 5: Update Lead Record
Use update_record tool with tablename: lead
Update these fields based on discovery:
{
"leadqualitycode": [1=Hot, 2=Warm, 3=Cold],
"budgetstatus": [0-3],
"budgetamount": [if confirmed],
"need": [0-3],
"purchasetimeframe": [0-4],
"purchaseprocess": [0=Individual, 1=Committee, 2=Unknown],
"decisionmaker": [true/false],
"estimatedamount": [deal value estimate],
"estimatedclosedate": [based on timeline],
"qualificationcomments": "[Updated qualification notes]",
"description": "[Updated with pain points and requirements]"
}Step 6: Recommend Next Steps
Based on Qualification Score:
If Score >= 80 (Hot Lead):
RECOMMENDATION: QUALIFY TO OPPORTUNITY
════════════════════════════════════════════════════
This lead is well-qualified. Recommended actions:
1. Convert to Opportunity
- Create opportunity with extracted BANT data
- Set appropriate sales stage (Qualify or Develop)
- Link to existing or new Account
2. Create Account (if new company)
- Use companyname, industrycode, revenue, numberofemployees
3. Create Contact
- Use lead's contact information
- Set accountrolecode based on authority assessment
4. Schedule Next Activity
- Book discovery call or demo
- Invite decision maker if different from leadIf Score 60-79 (Warm Lead):
RECOMMENDATION: CONTINUE NURTURING
════════════════════════════════════════════════════
This lead has potential but gaps exist:
Gap Analysis:
- [List specific gaps, e.g., "Budget not confirmed"]
- [e.g., "Decision maker not identified"]
Recommended Actions:
1. Schedule follow-up call to address gaps
2. Send relevant content to build value
3. Request introduction to additional stakeholders
Create Task:
- Subject: "Follow-up: Address qualification gaps"
- Due: [appropriate date]
- Description: [specific gap to address]If Score 40-59 (Cold Lead):
RECOMMENDATION: LONG-TERM NURTURE
════════════════════════════════════════════════════
This lead is not ready for active pursuit:
Issues:
- [List significant gaps]
Recommended Actions:
1. Add to nurture campaign
2. Set re-engagement reminder for [timeline]
3. Continue light-touch engagement
Update Lead:
- statuscode: 2 (Contacted)
- Set follow-up date in futureIf Score < 40 (Disqualify):
RECOMMENDATION: DISQUALIFY
════════════════════════════════════════════════════
This lead does not meet qualification criteria:
Disqualification Reasons:
- [Specific reasons, e.g., "No budget and no timeline"]
Recommended Actions:
1. Mark lead as disqualified
2. Document reason for future reference
3. Consider referral if poor fit for us but good fit for partner
Update Lead:
- statecode: 2 (Disqualified)
- statuscode: 6 (No Longer Interested) or appropriate code
- qualificationcomments: "Disqualified: [reason]"Step 7: Convert Lead (if qualified)
If user confirms conversion to opportunity:
Create Account (if needed):
Use create_record with tablename: account
{
"name": "[companyname]",
"telephone1": "[telephone1]",
"emailaddress1": "[company email domain]",
"industrycode": "[industrycode]",
"numberofemployees": "[numberofemployees]",
"revenue": "[revenue]",
"address1_line1": "[address]",
"address1_city": "[city]",
"address1_stateorprovince": "[state]",
"address1_postalcode": "[postal]"
}Create Contact:
Use create_record with tablename: contact
{
"firstname": "[firstname]",
"lastname": "[lastname]",
"jobtitle": "[jobtitle]",
"emailaddress1": "[emailaddress1]",
"telephone1": "[telephone1]",
"mobilephone": "[mobilephone]",
"accountid": "[new account id]",
"accountrolecode": [1=Decision Maker, 2=Employee, 3=Influencer]
}Create Opportunity:
Use create_record with tablename: opportunity
{
"name": "[Deal name based on subject]",
"customerid": "[account or contact id]",
"estimatedvalue": "[estimatedamount from lead]",
"estimatedclosedate": "[estimatedclosedate from lead]",
"budgetstatus": "[budgetstatus]",
"need": "[need]",
"purchasetimeframe": "[purchasetimeframe]",
"purchaseprocess": "[purchaseprocess]",
"decisionmaker": "[decisionmaker]",
"description": "[description from lead]",
"currentsituation": "[current situation notes]",
"customerneed": "[customer needs from discovery]",
"originatingleadid": "[leadid]",
"salesstage": 0 (Qualify)
}Update Lead Status:
Use update_record with tablename: lead
{
"statecode": 1 (Qualified),
"statuscode": 3 (Qualified),
"qualifyingopportunityid": "[new opportunity id]"
}Dataverse Tables Used
| Table | Purpose |
lead | Primary entity being qualified |
account | Created upon conversion |
contact | Created upon conversion |
opportunity | Created upon qualification |
activitypointer | Review engagement history |
task | Create follow-up tasks |
phonecall | Log qualification calls |
Key Fields Reference
lead:
leadqualitycode(CHOICE) - Hot(1), Warm(2), Cold(3)budgetstatus(CHOICE) - No Committed Budget(0), May Buy(1), Can Buy(2), Will Buy(3)budgetamount(MONEY) - Confirmed budget amountneed(CHOICE) - Must have(0), Should have(1), Good to have(2), No need(3)purchasetimeframe(CHOICE) - Immediate(0), This Quarter(1), Next Quarter(2), This Year(3), Unknown(4)purchaseprocess(CHOICE) - Individual(0), Committee(1), Unknown(2)decisionmaker(BIT) - Is this contact the decision makermsdyn_leadscore(INT) - AI predictive score (0-100)msdyn_leadgrade(CHOICE) - Grade A(0), B(1), C(2), D(3)msdyn_leadscoretrend(CHOICE) - Improving(0), Steady(1), Declining(2), Not enough info(3)msdyn_scorereasons(MULTILINE TEXT) - JSON with AI scoring factorsstatecode(STATE) - Open(0), Qualified(1), Disqualified(2)statuscode(STATUS) - New(1), Contacted(2) [Open]; Qualified(3) [Qualified]; Lost(4), Cannot Contact(5), No Longer Interested(6), Canceled(7) [Disqualified]leadsourcecode(CHOICE) - Advertisement(1), Employee Referral(2), External Referral(3), Partner(4), Public Relations(5), Seminar(6), Trade Show(7), Web(8), Word of Mouth(9), Other(10)
opportunity (created on conversion):
originatingleadid(LOOKUP) - Links back to source leadqualifyingopportunityid(LOOKUP) - Set on lead when qualifiedsalesstage(CHOICE) - Qualify(0), Develop(1), Propose(2), Close(3)
Qualification Best Practices
- Always capture the "why": Don't just check boxes, understand the context
- Listen for buying signals: Urgency, specific requirements, stakeholder engagement
- Watch for red flags: Unrealistic timelines, no budget, tire-kickers
- Document everything: Future opportunities may come from disqualified leads
- Re-qualify over time: Circumstances change, revisit cold leads periodically
Examples
Example 1: Qualify a New Lead
User says: "Help me qualify the lead from John Smith at Contoso"
Actions:
- Retrieve lead record for John Smith at Contoso
- Display current BANT status and qualification score
- Identify gaps (e.g., budget unknown, timeline unclear)
- Suggest discovery questions to fill gaps
- Recommend next steps based on current score
Result:
LEAD QUALIFICATION WORKSHEET
Lead: John Smith at Contoso
Current Score: 55/100 (Warm)
GAPS IDENTIFIED:
- Budget: Unknown (ask about allocated budget)
- Authority: Unclear (confirm decision-making process)
RECOMMENDED QUESTIONS:
1. "Do you have budget allocated for this initiative?"
2. "Who else is involved in evaluating solutions?"
NEXT STEP: Schedule discovery call to complete qualificationExample 2: Should I Convert This Lead?
User says: "Should I convert this lead to an opportunity?"
Actions:
- Calculate BANT+ score from lead fields
- Compare against qualification thresholds
- Analyze engagement history
- Provide recommendation with reasoning
Result:
QUALIFICATION ASSESSMENT: READY TO CONVERT ✅
Score: 82/100
- Budget: Will Buy ($75K confirmed)
- Authority: Decision maker confirmed
- Need: Must have (pain point documented)
- Timeline: This Quarter
RECOMMENDATION: Convert to opportunity. Strong qualification signals.Example 3: Disqualify a Cold Lead
User says: "This lead isn't going anywhere, should I disqualify?"
Actions:
- Review lead history and engagement
- Assess qualification gaps
- Recommend disqualification with appropriate reason code
- Suggest nurture actions if applicable
Result:
DISQUALIFICATION RECOMMENDED
Reason: No Longer Interested (statuscode: 6)
- No response to 5 outreach attempts over 60 days
- Last activity: Email bounced
ACTION: Add to marketing nurture campaign for re-engagement in 6 monthsTroubleshooting
Error: Lead not found
Cause: Invalid lead ID or lead has been merged/deleted Solution:
- Search by name and company instead of ID
- Check if lead was already qualified (statecode = 1)
- Verify lead exists in active records
Error: Cannot convert lead - missing required fields
Cause: Account or contact creation requires populated fields Solution:
- Ensure companyname is populated for account creation
- Verify email or phone exists for contact creation
- Prompt user to provide missing information
Error: AI Lead Score not available
Cause: Sales Insights not enabled or insufficient data Solution:
- Fall back to manual BANT scoring
- Check if msdyn_leadscore field exists in org
- Use leadqualitycode (Hot/Warm/Cold) as alternative
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

