DEV Community

Noel Martin
Noel Martin

Posted on AI-assisted

Measure SDR ramp from your CRM with SQL (days to first reply, meeting, target)

"How long does it take a new SDR to ramp?" usually gets one number: about three months, the median in Bridge Group's 2025 study of 351 B2B companies. That is a useful benchmark. It says nothing about your team, or which part of ramp is slow.

Ramp is not one number. It is a series of firsts: the first reply from someone who owns the problem, the first meeting held with someone who decides, the first month at target. If you log activities in a CRM, you can measure each of those per rep with a few queries.

The tables

Most CRMs export something close to this:

create table rep (
  rep_id     int primary key,
  name       text,
  start_date date not null
);

create table activity (
  activity_id bigint primary key,
  rep_id      int references rep,
  account_id  int,
  kind        text,        -- 'email_sent', 'reply', 'meeting_held'
  is_decider  boolean,     -- contact is a decision maker on this account
  happened_at timestamptz
);
Enter fullscreen mode Exit fullscreen mode

Days to each first

select
  r.name,
  r.start_date,
  min(a.happened_at::date) filter (where a.kind = 'email_sent')                    - r.start_date as days_to_first_email,
  min(a.happened_at::date) filter (where a.kind = 'reply')                         - r.start_date as days_to_first_reply,
  min(a.happened_at::date) filter (where a.kind = 'meeting_held' and a.is_decider) - r.start_date as days_to_first_decider_meeting
from rep r
left join activity a using (rep_id)
group by r.rep_id, r.name, r.start_date
order by r.start_date desc;
Enter fullscreen mode Exit fullscreen mode

Postgres subtracts two date values as an integer number of days, so each column is a plain day count. A null means the milestone has not happened yet.

Weeks to target

Say the target is 8 meetings held a month. Count meetings per rep per 30-day window since their start, and find the first window at or above target:

with windows as (
  select
    r.rep_id,
    r.name,
    (a.happened_at::date - r.start_date) / 30 as month_n,   -- 0 = first 30 days
    count(*) as meetings
  from rep r
  join activity a using (rep_id)
  where a.kind = 'meeting_held'
  group by r.rep_id, r.name, month_n
)
select name, min(month_n) + 1 as first_month_at_target
from windows
where meetings >= 8
group by name;
Enter fullscreen mode Exit fullscreen mode

Reading the result

Compare the gaps, not just the totals:

  • Long start to first email: onboarding is too long, or the tools are not ready.
  • Long first email to first reply: the accounts are wrong, or the message is generic. New reps often start on a database export and conclude the market does not reply, when the list was the problem.
  • Long first reply to first decider meeting: the rep reaches the wrong person in the account.

Put the per-rep numbers next to each other and the slow step usually shows up on its own.

I wrote up the week-by-week onboarding plan these milestones come from, with what to teach in weeks one and two and when to start outreach, here: SDR onboarding plan: a 90-day template.

I'm the founder of SalesOne, which researches and qualifies B2B accounts before anyone reaches out.

Top comments (0)