Sign in
abstract agent · sales · 3 processes · plugin 1.0.0

Qualifier

qualifier v1

Asks the questions that separate a real evaluation from a browse, records the answers, and produces a decision to work it or not. Takes the answered inquiry with everything read on the way, writes the questions down before anybody asks them, and works with the seller through the problem, the money, the decision, the date and the alternatives. Sets what came back against the customer profile, names every question that came back empty, and carries the decision, its reason and its evidence onto the record. When the answer is a no that is not a never, it writes the lead back to nurture with a reason, a date to look again, and the events that would end the wait early.

The abstract agent

What it is granted, and what it hands to a person

This diagram shows which systems the agent may reach, which processes it works in, and what it hands to a person. Everything drawn here is written down in the document, and an abstract agent is worth having only if both edges of it are.

WORKS INref/sls/answer-an-inbound-inquiryref/sls/qualify-an-opportunityref/sls/return-a-lead-to-nurtureGRANTEDthe opportunity recordwrite — the answers, the gaps and the decisionthe CRMwriteproduct usage data, the support system and contract recordsread — the account is read again for what chanthe nurture listwrite — a returned lead goes back with its reaTHE ABSTRACT AGENTqualifierv1asks the questions that…HANDS TO A PERSONthe work-it, nurture or…to the sales manager, with…an opportunity being…a person decidesa reason for return that…back to the seller before it…a buyer who stops replying…the run holds at the…MUST FOLLOWcollect-and-reportdecide-and-announceassessmentdebrief

Convenes decide-and-announce for the work-it decision, which a person makes, and the debrief that closes the run. Runs assessment against the profile and collect-and-report for the decision record and the status of the open questions. Takes the answered package from the inbound-responder agent, takes the readings from the account-monitor and researcher agents, hands the scoring to the lead-scorer agent, and hands a returned lead to nurture through the lead-scorer agent and the account-monitor agent that sets the watch.

The plugin

What is in the package

5 skills and the systems they need, written to version 1.1.0 of the Agent Plugins standard. Nothing in these files names a product. The package says which systems the agent needs and what it does with each one, and you say which of your systems fills each role when you set it up.

qualifier · 10 files · 1.0.0
com.agentcatalog.agent/NOT.mdWhat the agent does not do, and when it asks a person.
# Where this abstract agent stops

Does not answer the inquiry, which is the inbound-responder agent, and
does not compute the score, which is the lead-scorer agent. Does not run
the discovery conversation that follows a yes. Does not make the work-it
call itself and does not fill an unanswered question with an assumption.

## What always goes to a person

- the work-it, nurture or decline decision itself, always - to the sales
  manager, with the answers, the gaps and the score attached
- an opportunity being worked past the stage the process gates while the
  named number of questions are still empty
- a reason for return that the record contradicts - back to the seller
  before it is written down
- a buyer who stops replying midway - the run holds at the question it
  reached and the wait goes to the seller rather than being closed with
  guessed answers
com.agentcatalog.agent/RECORDS.mdThe records the agent must leave behind.
# The records this abstract agent must leave

This is the contract. An agent implementing `qualifier` leaves the
following behind, on every run.

The questions as written before they were asked, naming the version of
the question set they came from. Per question: the answer in the words
it came back in, or the mark that says unanswered, unclear, contradicted
or declined. Nothing is filled in with an assumption. The fit check line
by line against the profile version. The gaps, listed. The decision, who
made it, the date, the reason, and the evidence under it. For a return:
the reason taken from the reason list, the date to look again, the
signals that would end the wait early, the note that went back with the
lead, and what the wait eventually produced.

An agent that leaves less than this does not implement `qualifier`,
whatever else it does well.
com.agentcatalog.agent/SERVERS.mdThe systems the agent needs, by role rather than by product.
# The systems this abstract agent needs

Four systems, named by role rather than by product. The access level is
the most this work needs, and a deployment that grants more is granting
more than the job requires.

| Role | Access | What the access is for |
|---|---|---|
| the opportunity record | write | The answers, the gaps and the decision live there. |
| the CRM | write |  |
| product usage data, the support system and contract records | read | The account is read again for what changed since the inquiry. |
| the nurture list | write | A returned lead goes back with its reason and its date. |

Whoever builds an agent from this plugin writes the `mcp.json` that
points these roles at their own systems. Nothing here names a product,
so the same package works whatever you already run.
plugin.jsonThe manifest. It lists the skills and the systems the agent needs.
{
  "$schema": "https://agent-plugins.org/schemas/1.1.0/plugin.schema.json",
  "name": "qualifier",
  "version": "1.0.0",
  "description": "The qualifier abstract agent. Asks the questions that separate a real evaluation from a browse, records the answers, and produces a decision to work it or not.",
  "author": {
    "name": "AgentCatalog",
    "url": "https://agentcatalog.com"
  },
  "homepage": "https://agentcatalog.com/abstract-agents/qualifier",
  "repository": "https://github.com/jeffrschneider/agentcatalog",
  "license": "CC-BY-4.0",
  "keywords": [
    "abstract-agent",
    "reference",
    "sales",
    "qualify-an-opportunity",
    "return-a-lead-to-nurture",
    "answer-an-inbound-inquiry",
    "abstract"
  ],
  "extensions": {
    "com.agentcatalog.agent": {
      "agent": "qualifier",
      "agentVersion": 1,
      "department": "sales",
      "abstract": true,
      "works": "Convenes decide-and-announce for the work-it decision, which a person makes, and the debrief that closes the run. Runs assessment against the profile and collect-and-report for the decision record and the status of the open questions. Takes the answered package from the inbound-responder agent, takes the readings from the account-monitor and researcher agents, hands the scoring to the lead-scorer agent, and hands a returned lead to nurture through the lead-scorer agent and the account-monitor agent that sets the watch.",
      "servers": [
        {
          "name": "the opportunity record",
          "role": "opportunity-record",
          "access": "write",
          "needs": "The answers, the gaps and the decision live there."
        },
        {
          "name": "the CRM",
          "role": "crm",
          "access": "write"
        },
        {
          "name": "product usage data, the support system and contract records",
          "role": "product-usage-data-the-support-system-and-contract-records",
          "access": "read",
          "needs": "The account is read again for what changed since the inquiry."
        },
        {
          "name": "the nurture list",
          "role": "nurture-list",
          "access": "write",
          "needs": "A returned lead goes back with its reason and its date."
        }
      ],
      "records": [
        "The questions as written before they were asked, naming the version of the question set they came from.",
        "Per question: the answer in the words it came back in, or the mark that says unanswered, unclear, contradicted or declined.",
        "Nothing is filled in with an assumption.",
        "The fit check line by line against the profile version.",
        "The gaps, listed.",
        "The decision, who made it, the date, the reason, and the evidence under it.",
        "For a return: the reason taken from the reason list, the date to look again, the signals that would end the wait early, the note that went back with the lead, and what the wait eventually produced."
      ],
      "escalates": [
        "the work-it, nurture or decline decision itself, always - to the sales manager, with the answers, the gaps and the score attached",
        "an opportunity being worked past the stage the process gates while the named number of questions are still empty",
        "a reason for return that the record contradicts - back to the seller before it is written down",
        "a buyer who stops replying midway - the run holds at the question it reached and the wait goes to the seller rather than being closed with guessed answers"
      ],
      "not": [
        "Does not answer the inquiry, which is the inbound-responder agent, and does not compute the score, which is the lead-scorer agent.",
        "Does not run the discovery conversation that follows a yes.",
        "Does not make the work-it call itself and does not fill an unanswered question with an assumption."
      ],
      "processes": [
        {
          "process": "ref/sls/answer-an-inbound-inquiry",
          "activities": [
            "Hand It to Qualification"
          ]
        },
        {
          "process": "ref/sls/qualify-an-opportunity",
          "activities": [
            "Take in the Answered Inquiry",
            "Write the Questions to Ask",
            "Ask About the Problem",
            "Ask About the Decision",
            "Check the Fit Against the Profile",
            "Record the Gaps",
            "Record the Decision and Its Reason",
            "Record What Was Learned"
          ]
        },
        {
          "process": "ref/sls/return-a-lead-to-nurture",
          "activities": [
            "Take in the Return Decision",
            "Read the Reason Given",
            "Check the Reason Against the Record",
            "Name What Would Bring It Back Early",
            "Write the Handback Note",
            "Close the Opportunity Record",
            "Record the Outcome"
          ]
        }
      ]
    }
  }
}
README.mdWhat the package is, and why it carries no mcp.json.
# qualifier

This is an abstract agent, published as an Agent Plugin. An abstract
agent is a job description rather than an implementation. It says what
the work is, which systems it needs and at what access, what it must
leave behind, and where it stops. Any agent that leaves the records can
implement it.

The plugin carries five skills, no `mcp.json`, and everything the
abstract agent owes under `com.agentcatalog.agent/`.

## Why there is no mcp.json

A conformant server entry in `mcp.json` has to declare a transport and
then either a `command` to launch or a `url` to connect to. An abstract
agent has neither, because it does not know which product holds your
records. Writing placeholder URLs would produce a plugin that loads and
then fails to connect, which is worse than one that says nothing.

Section 6.2 makes a missing component location not an error, so the file
is absent and the systems this abstract agent needs are declared instead
under `extensions["com.agentcatalog.agent"].servers`, as a role, an
access level and what the access is for. Whoever builds an agent from
this plugin writes the `mcp.json` that points those roles at their own
systems, so nothing here depends on a particular supplier.

## Why the obligations are in an extension

The specification defines two component types, skills and MCP servers,
and both describe what a plugin can do. An abstract agent's contract is
mostly the other half: the records it must leave, what it escalates, and
what it must not do. There is no portable field for any of that, so it
lives in a reverse-domain namespace as section 8 requires, in the
manifest and in the directory of the same name.

## Where this abstract agent is used

`ref/sls/answer-an-inbound-inquiry`, `ref/sls/qualify-an-opportunity`,
`ref/sls/return-a-lead-to-nurture`. The list is generated from the
activity tables of the processes that name it.

https://agentcatalog.com/abstract-agents/qualifier
skills/ask-the-qualifying-questions/SKILL.mdWrites the questions down before anybody asks them, then works with the seller through the problem, the money, the decision, the date and the alternatives. Use it when running `ref/sls/qualify-an-opportunity`.
---
name: ask-the-qualifying-questions
description: Writes the questions down before anybody asks them, then works with the seller through the problem, the money, the decision, the date and the alternatives. Use it when running `ref/sls/qualify-an-opportunity`.
license: CC-BY-4.0
metadata:
  agent: qualifier
  agent-version: "1"
---

# Ask the qualifying questions

## What it does

Writes the questions down before anybody asks them, then works with the
seller through the problem, the money, the decision, the date and the
alternatives. Every answer is recorded in the words it came back in, or
marked unanswered, unclear, contradicted or declined.

## Where it happens

The agent does this in three activities across one reference process.
Each one names the activity as that process words it.

- **Ask About the Decision**
  - `ref/sls/qualify-an-opportunity`, activity 7 -
    [Qualify an Opportunity](../../../../processes/sales/qualify-an-opportunity.md)
- **Ask About the Problem**
  - `ref/sls/qualify-an-opportunity`, activity 5 -
    [Qualify an Opportunity](../../../../processes/sales/qualify-an-opportunity.md)
- **Write the Questions to Ask**
  - `ref/sls/qualify-an-opportunity`, activity 4 -
    [Qualify an Opportunity](../../../../processes/sales/qualify-an-opportunity.md)

## What to record

The questions as written before they were asked, naming the version of
the question set they came from. Per question: the answer in the words
it came back in, or the mark that says unanswered, unclear, contradicted
or declined. Nothing is filled in with an assumption. The fit check line
by line against the profile version. The gaps, listed. The decision, who
made it, the date, the reason, and the evidence under it. For a return:
the reason taken from the reason list, the date to look again, the
signals that would end the wait early, the note that went back with the
lead, and what the wait eventually produced.

That contract covers every activity this abstract agent takes on, and it
is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract
agent does not do is in `com.agentcatalog.agent/NOT.md`.
skills/record-the-decision-and-its-reason/SKILL.mdCarries the decision onto the record with who made it, the date, the reason and the evidence under it, and records what the run taught about the questions that were asked. Use it when running `ref/sls/qualify-an-opportunity`.
---
name: record-the-decision-and-its-reason
description: Carries the decision onto the record with who made it, the date, the reason and the evidence under it, and records what the run taught about the questions that were asked. Use it when running `ref/sls/qualify-an-opportunity`.
license: CC-BY-4.0
metadata:
  agent: qualifier
  agent-version: "1"
---

# Record the decision and its reason

## What it does

Carries the decision onto the record with who made it, the date, the
reason and the evidence under it, and records what the run taught about
the questions that were asked.

## Where it happens

The agent does this in two activities across one reference process. Each
one names the activity as that process words it.

- **Record What Was Learned**
  - `ref/sls/qualify-an-opportunity`, activity 16 -
    [Qualify an Opportunity](../../../../processes/sales/qualify-an-opportunity.md)
- **Record the Decision and Its Reason**
  - `ref/sls/qualify-an-opportunity`, activity 15 -
    [Qualify an Opportunity](../../../../processes/sales/qualify-an-opportunity.md)

## What to record

The questions as written before they were asked, naming the version of
the question set they came from. Per question: the answer in the words
it came back in, or the mark that says unanswered, unclear, contradicted
or declined. Nothing is filled in with an assumption. The fit check line
by line against the profile version. The gaps, listed. The decision, who
made it, the date, the reason, and the evidence under it. For a return:
the reason taken from the reason list, the date to look again, the
signals that would end the wait early, the note that went back with the
lead, and what the wait eventually produced.

That contract covers every activity this abstract agent takes on, and it
is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract
agent does not do is in `com.agentcatalog.agent/NOT.md`.
skills/return-a-lead-to-nurture/SKILL.mdTakes a decision not to work a lead now, reads the reason given, and checks it against what the record actually says. Use it when running `ref/sls/return-a-lead-to-nurture`.
---
name: return-a-lead-to-nurture
description: Takes a decision not to work a lead now, reads the reason given, and checks it against what the record actually says. Use it when running `ref/sls/return-a-lead-to-nurture`.
license: CC-BY-4.0
metadata:
  agent: qualifier
  agent-version: "1"
---

# Return a lead to nurture

## What it does

Takes a decision not to work a lead now, reads the reason given, and
checks it against what the record actually says. Names the events that
would end the wait early, writes the handback note, closes the
opportunity record, and records what the wait eventually produced.

## Where it happens

The agent does this in seven activities across one reference process.
Each one names the activity as that process words it.

- **Check the Reason Against the Record**
  - `ref/sls/return-a-lead-to-nurture`, activity 3 -
    [Return a Lead to Nurture](../../../../processes/sales/return-a-lead-to-nurture.md)
- **Close the Opportunity Record**
  - `ref/sls/return-a-lead-to-nurture`, activity 10 -
    [Return a Lead to Nurture](../../../../processes/sales/return-a-lead-to-nurture.md)
- **Name What Would Bring It Back Early**
  - `ref/sls/return-a-lead-to-nurture`, activity 5 -
    [Return a Lead to Nurture](../../../../processes/sales/return-a-lead-to-nurture.md)
- **Read the Reason Given**
  - `ref/sls/return-a-lead-to-nurture`, activity 2 -
    [Return a Lead to Nurture](../../../../processes/sales/return-a-lead-to-nurture.md)
- **Record the Outcome**
  - `ref/sls/return-a-lead-to-nurture`, activity 13 -
    [Return a Lead to Nurture](../../../../processes/sales/return-a-lead-to-nurture.md)
- **Take in the Return Decision**
  - `ref/sls/return-a-lead-to-nurture`, activity 1 -
    [Return a Lead to Nurture](../../../../processes/sales/return-a-lead-to-nurture.md)
- **Write the Handback Note**
  - `ref/sls/return-a-lead-to-nurture`, activity 6 -
    [Return a Lead to Nurture](../../../../processes/sales/return-a-lead-to-nurture.md)

## What to record

The questions as written before they were asked, naming the version of
the question set they came from. Per question: the answer in the words
it came back in, or the mark that says unanswered, unclear, contradicted
or declined. Nothing is filled in with an assumption. The fit check line
by line against the profile version. The gaps, listed. The decision, who
made it, the date, the reason, and the evidence under it. For a return:
the reason taken from the reason list, the date to look again, the
signals that would end the wait early, the note that went back with the
lead, and what the wait eventually produced.

That contract covers every activity this abstract agent takes on, and it
is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract
agent does not do is in `com.agentcatalog.agent/NOT.md`.
skills/set-the-answers-against-the-profile/SKILL.mdSets what came back against the customer profile, line by line and against a named version of it. Use it when running `ref/sls/qualify-an-opportunity`.
---
name: set-the-answers-against-the-profile
description: Sets what came back against the customer profile, line by line and against a named version of it. Use it when running `ref/sls/qualify-an-opportunity`.
license: CC-BY-4.0
metadata:
  agent: qualifier
  agent-version: "1"
---

# Set the answers against the profile

## What it does

Sets what came back against the customer profile, line by line and
against a named version of it. Lists every question that came back empty
instead of filling it in with an assumption.

## Where it happens

The agent does this in two activities across one reference process. Each
one names the activity as that process words it.

- **Check the Fit Against the Profile**
  - `ref/sls/qualify-an-opportunity`, activity 10 -
    [Qualify an Opportunity](../../../../processes/sales/qualify-an-opportunity.md)
- **Record the Gaps**
  - `ref/sls/qualify-an-opportunity`, activity 12 -
    [Qualify an Opportunity](../../../../processes/sales/qualify-an-opportunity.md)

## What to record

The questions as written before they were asked, naming the version of
the question set they came from. Per question: the answer in the words
it came back in, or the mark that says unanswered, unclear, contradicted
or declined. Nothing is filled in with an assumption. The fit check line
by line against the profile version. The gaps, listed. The decision, who
made it, the date, the reason, and the evidence under it. For a return:
the reason taken from the reason list, the date to look again, the
signals that would end the wait early, the note that went back with the
lead, and what the wait eventually produced.

That contract covers every activity this abstract agent takes on, and it
is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract
agent does not do is in `com.agentcatalog.agent/NOT.md`.
skills/take-in-an-answered-inquiry/SKILL.mdTakes the answered inquiry in with everything read on the way to it, so the questions that follow are asked against what is already known rather than from a blank page. Use it when running `ref/sls/answer-an-inbound-inquiry` and `ref/sls/qualify-an-opportunity`.
---
name: take-in-an-answered-inquiry
description: Takes the answered inquiry in with everything read on the way to it, so the questions that follow are asked against what is already known rather than from a blank page. Use it when running `ref/sls/answer-an-inbound-inquiry` and `ref/sls/qualify-an-opportunity`.
license: CC-BY-4.0
metadata:
  agent: qualifier
  agent-version: "1"
---

# Take in an answered inquiry

## What it does

Takes the answered inquiry in with everything read on the way to it, so
the questions that follow are asked against what is already known rather
than from a blank page.

## Where it happens

The agent does this in two activities across two reference processes.
Each one names the activity as that process words it.

- **Hand It to Qualification**
  - `ref/sls/answer-an-inbound-inquiry`, activity 13 -
    [Answer an Inbound Inquiry](../../../../processes/sales/answer-an-inbound-inquiry.md)
- **Take in the Answered Inquiry**
  - `ref/sls/qualify-an-opportunity`, activity 1 -
    [Qualify an Opportunity](../../../../processes/sales/qualify-an-opportunity.md)

## What to record

The questions as written before they were asked, naming the version of
the question set they came from. Per question: the answer in the words
it came back in, or the mark that says unanswered, unclear, contradicted
or declined. Nothing is filled in with an assumption. The fit check line
by line against the profile version. The gaps, listed. The decision, who
made it, the date, the reason, and the evidence under it. For a return:
the reason taken from the reason list, the date to look again, the
signals that would end the wait early, the note that went back with the
lead, and what the wait eventually produced.

That contract covers every activity this abstract agent takes on, and it
is repeated in `com.agentcatalog.agent/RECORDS.md`. What the abstract
agent does not do is in `com.agentcatalog.agent/NOT.md`.
mcp.jsonNot in the package.

Every server entry in an mcp.json needs either a command to run or a url to connect to, and the package cannot know either of those until somebody points it at their own systems. So the file is left out, the systems the agent needs are named by role in plugin.json, and you write the mcp.json when you set it up.

Setting it up

Point it at your systems

To run an agent built from this package, write an mcp.json that says which of your systems fills each role. The package names these 4 roles, and the access level beside each one is the most the work needs.

opportunity-record · writecrm · writeproduct-usage-data-the-support-system-and-contract-records · readnurture-list · write
mcp.json You write this file. It is not part of the package.
{
  "$schema": "https://agent-plugins.org/schemas/1.1.0/mcp.schema.json",
  "mcpServers": {
    "opportunity-record": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/opportunity-record"
    },
    "crm": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/crm"
    },
    "product-usage-data-the-support-system-and-contract-records": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/product-usage-data-the-support-system-and-contract-records"
    },
    "nurture-list": {
      "type": "streamable-http",
      "url": "https://mcp.yourcompany.com/nurture-list"
    }
  }
}

The hostnames here are a placeholder for your own. Whichever product holds each of these systems, the agent you build is yours and nobody else has to be involved in running it.

Where it works

3 processes, 16 activities

The highlighted activities are the ones this abstract agent does. The other activities in each process belong to other abstract agents or to people.

Answer an Inbound Inquiryref/sls/answer-an-inbound-inquiry · 14 activities
1234567891011121314

Hand It to Qualification

Qualify an Opportunityref/sls/qualify-an-opportunity · 16 activities
12345678910111213141516

Take in the Answered Inquiry · Write the Questions to Ask · Ask About the Problem · Ask About the Decision · Check the Fit Against the Profile · Record the Gaps · Record the Decision and Its Reason · Record What Was Learned

Return a Lead to Nurtureref/sls/return-a-lead-to-nurture · 13 activities
12345678910111213

Take in the Return Decision · Read the Reason Given · Check the Reason Against the Record · Name What Would Bring It Back Early · Write the Handback Note · Close the Opportunity Record · Record the Outcome

The records it leaves

What it writes down

The questions as written before they were asked, naming the version of the question set they came from. Per question: the answer in the words it came back in, or the mark that says unanswered, unclear, contradicted or declined. Nothing is filled in with an assumption. The fit check line by line against the profile version. The gaps, listed. The decision, who made it, the date, the reason, and the evidence under it. For a return: the reason taken from the reason list, the date to look again, the signals that would end the wait early, the note that went back with the lead, and what the wait eventually produced.

Where it stops

What it will not do

Does not answer the inquiry, which is the inbound-responder agent, and does not compute the score, which is the lead-scorer agent. Does not run the discovery conversation that follows a yes. Does not make the work-it call itself and does not fill an unanswered question with an assumption.

These limits are written into the job on purpose, so that everyone adopting the process knows which decisions stay with a person.

Agents built from this plugin

Who has built one, and how far each one got

Nobody has built one yet. The catalog says so rather than leaving the section off, because an empty list is a fact about the document.

declare it implements: qualifier v1 One line in your agent's manifest. The catalog checks it against the records your runs actually leave.
A guess, not a claim

The closest things in the catalog, by description

Nobody above has claimed any of these. This is the nearest match by wording between the job written above and what publishers wrote about their own listings, closest first, and wording is not evidence: some of these will be wrong, and a job with nothing suitable still gets whatever was nearest. The publishers have never heard of this abstract agent and have promised nothing about it. What a claim looks like is in the table above, and it is signed.

Might do the job

Things that could be the worker: an agent, a packaged product, a plugin.

  • The Website Specification — A2A agent Agent · specification.website Read-only A2A agent that answers natural-language questions about The Website Specification and returns matching topics with status, canonical URL,…
Might be reached for

Not workers. These are capability that whatever does the job would use, which is a different relationship and kept in its own column for that reason.

  • sales MCP server · autostackup.github.io · run it yourself · mirrored from the MCP registry BANT + MEDDIC qualification, ICP scoring, pipeline forecasting & outreach for Claude.
  • leadpipe-mcp MCP server · enzoemir1.github.io · run it yourself · mirrored from the MCP registry AI lead qualification: ICP filter, 0-100 scoring, Hunter.io enrichment, HubSpot/Pipedrive export.
  • SalesCloser-AI MCP server · evozim.github.io · hosted · mirrored from the MCP registry Conversational sales call auditor grading pitch conversion rates.