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 DESC
Step 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 notes
3.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, Procurement
Update 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 identified
3.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 summary
3.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 event
3.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 lead
If 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 future
If 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 qualification
Example 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 months
Troubleshooting
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


