A 12-Question B2B Discovery Call Framework + Scorecard
The twelve questions I ask on every B2B discovery call, what a bad answer to each one sounds like, and the weighted scorecard I use to decide go or no-go before I hang up.
Table of contents
A B2B discovery call framework is a fixed set of questions plus a scoring rule that tells you whether to write a proposal. Mine is twelve questions in four blocks — problem, money, decision, fit — scored against eight weighted criteria out of 18 points. At 70% or above I send a proposal. Below 50% I decline the same day. All of it is below: the questions, what I listen for, what a bad answer sounds like, the follow-up, and the scorecard.
Twelve is not arbitrary. Gong Labs analysed over 519,000 recorded B2B sales calls and found call success peaks at roughly 11 to 14 targeted questions, then falls back to average above that (Gong Labs). Twelve sits in the middle and fits a 45-minute call without becoming an interrogation.
The 12 questions, and what each one is actually testing
A question is not there to gather information. It is there to make the prospect say something that is cheap to say if true and hard to say if not. The follow-up is where the framework earns its keep: in Huang et al. (Journal of Personality and Social Psychology, 2017) it was follow-up questions specifically that raised how much a partner liked the asker, because a follow-up proves you were listening (APS summary).
Block 1 — the problem (Q1 to Q3)
Q1. What made you book this call this week, rather than three months ago? Listening for: an event. A missed quarter, a person who left, a contract renewing. Bad answer: "We have been meaning to look into this for a while." That is a wish, not a trigger. Follow-up: "What changed?" If nothing changed, nothing will change after the proposal.
Q2. If this is still broken in twelve months, what happens? Listening for: a consequence with a name attached — someone loses a budget, a target, a job. Bad answer: "We would just carry on as we are." That is the honest answer to a problem worth zero. Follow-up: "Who feels that most?" You have just found your real buyer.
Q3. What have you already tried, and why did it stop working? Listening for: a specific failed attempt. Agency, hire, tool, internal project. Bad answer: "Nothing yet, you are the first person we have spoken to." Occasionally true; usually it means the problem has never been prioritised. Follow-up: "What would you do differently?" Their answer is half your scope.
Block 2 — the money (Q4 to Q6)
Q4. What is this costing you a month right now? Listening for: a number, however rough. Any number means someone has quantified this internally. Bad answer: "It is hard to put a figure on it." Fair enough — then ask for a range. A refusal to even guess is the signal. Follow-up: "Walk me through how you got to that."
Q5. Is there money allocated to this, or would it need to be found? Listening for: "allocated", or "I can move it from X." Bad answer: "We would have to make a case." Not fatal, but it adds a stakeholder you have not met. Follow-up: "Who signs off on money that has to be found?"
Q6. What have you paid for something like this before? Listening for: a prior invoice. Anyone who has bought before will buy again. Bad answer: "We have always done this in-house." Expect a price conversation anchored on salary, not outcome. Follow-up: "What did you get for it?"
Block 3 — the decision (Q7 to Q9)
Q7. Besides you, who has to say yes? Listening for: names and roles, offered without hesitation. Bad answer: "Just me", from someone three levels down. Follow-up: "Can they join the next call?" That answer tells you more than Q7 did.
Q8. What would make them say no? Listening for: a real objection, stated plainly. Bad answer: "I cannot see why they would." That means they have not asked yet. Follow-up: "Has a project like this been rejected here before?"
Q9. What is your deadline, and what happens on that date? Listening for: an external forcing event — a launch, a board meeting, a renewal. Bad answer: "As soon as possible." That is an internal preference, not a deadline. Follow-up: "What is driving that date?"
Block 4 — the fit (Q10 to Q12)
Q10. What does this look like if it goes well? Listening for: a measurable end state you could actually be held to. Bad answer: a vibe. "More leads." "Better brand presence." Follow-up: "How would you know?" Write down whatever they say — that is your success metric, in their words.
Q11. What would make you fire me in month two? Listening for: whatever burned them last time. Slow replies, junior staff, surprise invoices. Bad answer: a laugh and a deflection. Push once, politely. Follow-up: "Has that happened to you before?"
Q12. If we do nothing after this call, what is your plan? Listening for: a credible alternative. It names what you are really competing with, which is usually not another consultant. Bad answer: "I do not know." Often means the project is not funded. Follow-up: "What would that cost you?"
None of the twelve is "tell me about your business." I read that off their website beforehand. Asking it burns goodwill I need for Q4 and Q7.
The scoring sheet
I fill this in within ten minutes of hanging up, before I talk myself into liking anybody. The weights are tuned to a solo practice, where the scarce resource is my own weeks, not leads.
| # | Criterion | Question | Weight | Scores 1 when |
|---|---|---|---|---|
| 1 | Pain named | Q2 | 3 | They named a consequence and a person who owns it |
| 2 | Money attached | Q4 | 3 | Any monthly or annual figure was volunteered |
| 3 | Budget exists | Q5 | 3 | Allocated, or movable this quarter without a business case |
| 4 | I can do it | Q10 | 3 | I have shipped this exact outcome before, not an adjacent one |
| 5 | Decider on the call | Q7 | 2 | The person who signs was in the room, or will join next time |
| 6 | Deadline is forced | Q9 | 2 | An external event sets the date |
| 7 | Tried and failed before | Q3 | 1 | A prior attempt exists and they can say why it failed |
| 8 | No free work asked | Q11, Q12 | 1 | No spec work, audit or sample deliverable requested pre-contract |
Maximum 18 points. 13 and above (70%): send the proposal. 9 to 12 (50 to 69%): one more call, targeting the heaviest unscored line. Below 9: decline today.
The three-point weights sit on pain, money, budget and capability. A prospect can be delightful, urgent and senior and still be worth zero if I have not done the work before. That is the failure mode the weights exist to catch.
Score it in code
Stdlib Python, no dependencies. The asserts are the test — the last one checks that a rich, urgent, decided prospect whose problem I cannot solve does not clear the bar on money alone.
# Discovery call scorer. Run: python score.py
CRITERIA = {
# key: (weight, label)
"pain_named": (3, "Prospect named a consequence, not a wish"),
"money_attached": (3, "A number is attached to the problem"),
"budget_exists": (3, "Budget exists or can be moved this quarter"),
"i_can_do_it": (3, "I have shipped this exact thing before"),
"decider_on_call": (2, "The person who signs was on the call"),
"timeline_forced": (2, "An external event forces a date"),
"tried_before": (1, "They tried something and can say why it failed"),
"no_free_work": (1, "No unpaid pitch or spec work requested"),
}
GO, MAYBE = 0.70, 0.50 # fraction of max weight
def score(answers):
"""answers: dict of criterion -> True/False. -> (points, max, ratio, verdict)"""
missing = set(CRITERIA) - set(answers)
if missing:
raise KeyError(f"unscored criteria: {sorted(missing)}")
top = sum(w for w, _ in CRITERIA.values())
pts = sum(CRITERIA[k][0] for k, v in answers.items() if v)
r = pts / top
verdict = ("GO - send proposal" if r >= GO else
"HOLD - one more call to fix the gaps" if r >= MAYBE else
"NO - decline today, politely, in writing")
return pts, top, round(r, 2), verdict
def gaps(answers):
"""Heaviest unmet criteria first - that is your follow-up list."""
unmet = [(w, lbl) for k, (w, lbl) in CRITERIA.items() if not answers[k]]
return [lbl for _, lbl in sorted(unmet, reverse=True)]
if __name__ == "__main__":
good = dict.fromkeys(CRITERIA, True)
good["timeline_forced"] = False
print(score(good)) # (16, 18, 0.89, 'GO - send proposal')
tyre_kicker = dict.fromkeys(CRITERIA, False)
tyre_kicker["pain_named"] = True
tyre_kicker["i_can_do_it"] = True
print(score(tyre_kicker)) # (6, 18, 0.33, 'NO - decline today...')
print(gaps(tyre_kicker)[:3])
assert score(good)[3].startswith("GO")
assert score(tyre_kicker)[3].startswith("NO")
# Rich, urgent, decided - but I cannot actually do the work.
# Must not clear the bar on money alone.
weak_fit = dict.fromkeys(CRITERIA, True)
weak_fit["i_can_do_it"] = False
weak_fit["pain_named"] = False
assert not score(weak_fit)[3].startswith("GO")
print("all checks passed")
The useful part is gaps(): on a HOLD it names the heaviest thing you failed to establish. Book call two to score that one line, not to build the relationship.
Disqualify fast: why saying no early is the profitable move
If you have twelve selling weeks in a quarter and a project takes four, one bad-fit client costs a third of the quarter. There is no one else to run the delivery.
Assume for the sake of a worked example that you close 1 proposal in 4 and each proposal costs half a day to write. Ten proposals is five days of writing for two clients. Score those same ten calls first, write only the four that pass, and you spend two days for the same two clients. Those figures are an illustration, not measured data — but plug in your own close rate and the direction holds.
What stops people is sunk cost. You spent 45 minutes on the call, so writing the proposal feels like recovering them. It is not — it is spending another half day, which is the sunk cost fallacy doing what it always does. The scorecard exists so a number decides, ten minutes after the call, before the story sets.
Three rules I follow
- —Decline in writing, same day. One paragraph: what I heard, why I am not the right fit, one alternative. Some of the people I have declined this way came back later with a better-fitting project.
- —Never counter a low score with a discount. A discount fixes price. It does not fix an absent budget or an absent decider.
- —A HOLD gets exactly one more call. If the heaviest gap is still open after it, that is a NO.
A low score is often just an early-stage score. The fix then is not to push, it is to move the person onto a slower path — which is what a commitment ladder is for. And if you are short of calls to score at all, that is a pipeline problem, not a qualification problem: I covered the input side in LinkedIn lead generation without the spam.
What I got wrong
The first version had ten criteria, all weighted equally, and it was useless. Everything landed between 50% and 70%, because equal weights score a delightful conversation with no budget the same as an awkward one with a signed-off number. Unequal weights are the entire mechanism. If you copy the table, change the weights to match what kills your projects — but keep them unequal.
I also used to ask Q4, what is this costing you, at the end of the call, where it sounds like a prelude to pricing. Asked third from the top, inside the problem block, the same words sound like diagnosis. Sequence is not cosmetic — it is the same reason order and framing change buying behaviour everywhere else.
The third thing I got wrong was this page. The previous version was 302 words describing the idea of a discovery call instead of shipping one. Over the 85 days to 3 September 2026 it took 63 impressions at average position 53.5 and zero clicks. Site-wide in that window: 4,553 impressions, 22 clicks, 0.48% clickthrough. The posts here at positions 2.8 to 15.5 are build logs and worked arithmetic; the ones at 46 to 81 are confident generalities. Same author, same domain, same quarter.
Pew Research Center analysed 68,879 Google searches by 900 US adults in March 2025: users clicked a result 8% of the time when an AI summary was present, against 15% when it was not, and clicked a source cited inside the summary on 1% of visits (Pew Research Center, 2025). A page describing a framework gets summarised away. A page carrying the table and the code has to be handed over roughly intact.
FAQ
What is a discovery call framework? A fixed sequence of questions plus a scoring rule that turns the call into a go or no-go decision. The questions are the visible half; the threshold is the half that changes what you do next. Without one you have a question list, not a framework.
How many questions should you ask on a B2B discovery call? Gong Labs found call success peaking at roughly 11 to 14 targeted questions across more than 519,000 recorded B2B calls. Twelve is a safe target. What matters more than the count is spreading them through the call rather than front-loading them like a checklist.
How long should a B2B discovery call be? Mine run 45 minutes: 5 to set the agenda, 30 on the questions, 5 to play back what I heard, 5 on next steps. Twelve questions with real follow-ups will not fit in 30, and past an hour people stop volunteering answers to Q4 and Q7.
How do you disqualify a prospect politely? Same day, in writing, one paragraph: what you heard, the specific reason it is not a fit, one alternative — another provider, a cheaper tool, a smaller first step. Naming the reason makes it land as a judgement, not a brush-off.
Are you running discovery calls without a scoring rule? Twelve questions and a weighted go/no-go sheet will tell you in ten minutes what three follow-up emails will not. See my services or get in touch.
Get the Marketing Quant Python Kit
Fifteen runnable Python models for promo EV, Monte Carlo payout budgets, points liability, variable reward schedules and campaign kill switches. NumPy and the standard library, nothing else.
Browse all free guides →Want to implement this with guidance?
Santosh helps founders turn insights like this into real systems.
External Resources
Further Reading & Tools
Forrester B2B Marketing
Enterprise marketing research on buyer journey, content effectiveness, and channel ROI
Gartner Marketing Research
CMO spending surveys, content ROI research, and marketing tech stack guidance
LinkedIn Marketing Solutions
B2B marketing benchmarks and buyer journey research
Demand Gen Report
B2B buyer behavior and demand generation strategy research