Discovery calls are where consulting engagements are won or lost. Here's how I approach them.

The Goal

A discovery call should answer three questions:

  1. Can I actually help this person?
  2. Do I want to work with them?
  3. Can we agree on scope and price?

If any answer is no, you want to find out quickly.

Before the Call

Research

Spend 15 minutes learning about:

  • Their company/product
  • Their technical stack (if public)
  • Recent news or launches
  • Their role and background

Coming prepared shows respect and lets you ask better questions.

Set an Agenda

Send a brief agenda beforehand:

Looking forward to our call. I'd like to cover:

  • Understanding your current situation
  • What you're trying to achieve
  • How I might be able to help
  • Next steps if there's a fit

This sets expectations and keeps the call focused.

The Call Structure

Opening (2 min)

Brief pleasantries, then: "I've reviewed [what you sent]. To make sure I understand, can you walk me through the situation?"

Get them talking early.

Understanding (15-20 min)

Ask questions to understand:

The Problem

  • What's not working?
  • How long has this been an issue?
  • What have you tried?

The Stakes

  • What happens if this doesn't get fixed?
  • Who else is affected?
  • What's the cost of inaction?

The Constraints

  • What's the timeline?
  • Who needs to approve this?
  • Any technical or political constraints?

Listen more than you talk. Take notes.

Qualification

While they're talking, I'm evaluating:

Can I help?

  • Is this in my skill set?
  • Is the scope realistic?
  • Are the expectations reasonable?

Do I want to?

  • Is the work interesting?
  • Does the client seem reasonable?
  • Are there red flags?

Red flags:

  • Vague about budget
  • Wants you to "just start" without scope
  • Bad-mouths previous contractors
  • Unrealistic timeline
  • Can't articulate the problem

Your Turn (10 min)

After you understand their situation:

  1. Summarize what you heard (shows you listened)
  2. Share relevant experience
  3. Outline a potential approach
  4. Be honest about concerns

"Based on what you've described, here's how I'd approach this..."

Don't over-promise. Under-promise and over-deliver.

Scope and Pricing

If there's a fit, discuss:

Scope

  • What's included
  • What's explicitly excluded
  • Dependencies and assumptions

Timeline

  • Realistic delivery estimate
  • Milestones if relevant

Pricing

  • Range or estimate (not final)
  • How you charge (hourly, fixed, retainer)
  • What affects the price

I usually give a range on the call, then follow up with a detailed proposal.

Next Steps (5 min)

Always end with clear next steps:

  • "I'll send a proposal by Friday"
  • "You'll send me access to the codebase"
  • "Let's schedule a follow-up after you talk to your team"

No ambiguity.

After the Call

Send a Summary

Within 24 hours, send a brief email:

Great talking with you. To summarize:

  • You're looking to [problem]
  • Timeline is [X]
  • I'll send a proposal by [date]

Let me know if I missed anything.

This catches misunderstandings early.

Decide Quickly

If you're going to pass, do it fast:

After our call, I don't think I'm the right fit for this project because [reason]. I'd recommend [alternative] instead.

Dragging out a no wastes everyone's time.

Common Mistakes

Talking too much. The client should talk 70% of the time.

Jumping to solutions. Understand the problem fully first.

Not qualifying. Taking projects you shouldn't.

Vague next steps. Always leave with clear action items.

Overselling. Confidence is good. Arrogance loses deals.

The 30-Minute Rule

My discovery calls are 30 minutes, max. This forces:

  • Both parties to be prepared
  • Focus on what matters
  • Quick qualification

If we need more time, we schedule another call—but that rarely happens.

What Success Looks Like

A good discovery call ends with both parties knowing:

  • Whether there's a fit
  • What happens next
  • When it happens

If you're both excited to move forward, you did it right.

React to this post: