Lead Qualification Playbook logo

Lead Qualification Playbook

Organization
microsoft
lead-qualification-playbook

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".

Overview

Publishermicrosoft
Repositorydataverse-business-skills
Skill namelead-qualification-playbook
Stars
52
Forks
9
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by microsoft on GitHub. Read the source before you install it.

Installation

Install the Lead Qualification Playbook AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/microsoft/dataverse-business-skills/tree/main/skills/lead-qualification-playbook
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/microsoft/dataverse-business-skills.git /tmp/dataverse-business-skills
mkdir -p .claude/skills
cp -r /tmp/dataverse-business-skills/skills/lead-qualification-playbook .claude/skills/lead-qualification-playbook
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Lead Qualification Playbook in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Lead Qualification Playbook on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Lead Qualification Playbook is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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:

CriteriaCurrent ValueScore (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):

  1. Problem: What specific problem are they experiencing?
  2. Impact: What's the business impact (cost, time, risk)?
  3. Root Cause: Why hasn't this been solved before?
  4. 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:

CriteriaGood FitModerate FitPoor Fit
Company Size[your range]BorderlineOutside range
IndustryTarget verticalAdjacentUnserved
Use CaseCore productPossibleNot supported
Tech StackCompatibleWorkableIncompatible
Step 4: Calculate Final Qualification Score

BANT+ Scoring Model:

CriteriaWeightScoring
Budget25%3=25, 2=20, 1=10, 0=0
Authority20%Decision Maker=20, Champion=15, User=10, Unknown=0
Need25%0=25, 1=20, 2=10, 3=0
Timeline15%0=15, 1=12, 2=8, 3=4, 4=0
Fit15%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

TablePurpose
leadPrimary entity being qualified
accountCreated upon conversion
contactCreated upon conversion
opportunityCreated upon qualification
activitypointerReview engagement history
taskCreate follow-up tasks
phonecallLog 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 amount
  • need (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 maker
  • msdyn_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 factors
  • statecode (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 lead
  • qualifyingopportunityid (LOOKUP) - Set on lead when qualified
  • salesstage (CHOICE) - Qualify(0), Develop(1), Propose(2), Close(3)

Qualification Best Practices

  1. Always capture the "why": Don't just check boxes, understand the context
  2. Listen for buying signals: Urgency, specific requirements, stakeholder engagement
  3. Watch for red flags: Unrealistic timelines, no budget, tire-kickers
  4. Document everything: Future opportunities may come from disqualified leads
  5. 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:

  1. Retrieve lead record for John Smith at Contoso
  2. Display current BANT status and qualification score
  3. Identify gaps (e.g., budget unknown, timeline unclear)
  4. Suggest discovery questions to fill gaps
  5. 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:

  1. Calculate BANT+ score from lead fields
  2. Compare against qualification thresholds
  3. Analyze engagement history
  4. 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:

  1. Review lead history and engagement
  2. Assess qualification gaps
  3. Recommend disqualification with appropriate reason code
  4. 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

Frequently asked questions

What does the Lead Qualification Playbook AI skill do?

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".

Why use Lead Qualification Playbook on TypingMind?

Because you install it once and use it with any model. Lead Qualification Playbook is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Lead Qualification Playbook in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/microsoft/dataverse-business-skills/tree/main/skills/lead-qualification-playbook. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Lead Qualification Playbook?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Lead Qualification Playbook?

As many as you like. As long as a model supports skills, you can use Lead Qualification Playbook with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Lead Qualification Playbook AI skill free?

Yes. It is published on GitHub by microsoft under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇