DEALERSHIP ACCELERATOR
Capacity Study
Sign in with your DAOS account
DACapacity Study
Manager OS
Assumptions
MTDLast month Last 7dLast 30d
0 = auto
Holidays / closures
Zoom-measured minutes per Showed call; calls with no Zoom record use the assumed length
Pre-call report: a call this long counts as "actually talked"
Pre-call report: how far before the range to look for the booking
Loading…

How every number is calculated

The Capacity Study, formula by formula. Every input marked "assumptions bar" is editable at the top of the page.

Hours available

Available = working days in range × (day end − day start)

Working days are Monday–Friday inside the selected range, minus any dates entered as days off. The work window defaults to 8:00 AM – 3:30 PM Pacific = 7.5 h/day. Availability assumes full staffing — PTO and sick days are not deducted unless entered as days off.

Structured-call time

Zoom-matched calls: actual Zoom session minutes (capped at 4h)
Unmatched calls — Closers: × 60 min · SDRs: × 30 min (assumed)
Structured-call time = Σ measured + Σ assumed

"Held" means the calendar event's outcome is Showed. No-shows, cancels, reschedules, invalid/spam, and unqualified consume no seat time. When call durations are set to "Zoom actual" (the default), each Showed call is matched by its zoom_meeting_id to the real Zoom session and uses the minutes Zoom recorded — the true length, not the booking. Calls with no Zoom record (phone-bridge joins, meetings run outside the booked link, Zoom lookups that fail) fall back to the assumed length, and every card shows the measured/assumed split so you always know how much of the number is real data. The coverage line at the top of the results shows the overall match rate. Events come from the same calendar data Insights reads, with the same hygiene: host = organizer_email (falling back to closer_id on legacy rows), duplicates collapsed by Google event id, not_counted events removed, and each host only credited for call types their role runs. Unlike Insights, recovery chains are not collapsed here — a rebooked call that ran occupied real time on the day it ran. Assumed lengths are editable in the assumptions bar; switching durations to "Assumed lengths only" ignores Zoom entirely.

Why this can differ from Insights (and when it should)

Insights counts credit: it threads reschedule chains across the whole history (reschedule links → Close lead id → attendee email → dealer name), and a same-type recovery folds into its original — the original is credited Showed in its week, and the recovery call disappears from Insights’ counts. This tool counts time: the call that physically ran, in the week it ran, because Zoom minutes attach to the actual session. Both are correct; they diverge exactly when recoveries exist. Every rep card shows the reconciliation: "Matches Insights credit basis ✓" when the two agree, or an orange line stating Insights’ credited counts and why they differ (chains recovered into this week, or recovery calls collapsed out of it). If a card’s orange line doesn’t explain the whole gap, that’s a real bug — report it.

Close activity time

Dial time = Σ (talk seconds + voicemail seconds) per call
Email credit = manual emails × 5.5 min
SMS credit = manual SMS × 50 sec
Close time = dial time + email credit + SMS credit

Every dial counts — a no-answer with no voicemail is 1 dial and 0 seconds; a voicemail drop is 1 dial plus its voicemail seconds. Manual email = outgoing, sent by a person, with no sequence_subscription_id and no bulk_email_action_id. Manual SMS = outbound, sent by a person, no sequence. Workflow/sequence sends and bulk blasts are excluded; using a template does not make a send automated. Days are bucketed in Pacific time. Both per-message credits are editable.

Meetings

Roleplay = (roleplay weekdays in range) × 60 min  ·  closers Tue, SDRs Thu
One-on-ones = weeks in range × 30 min

Weeks are counted as distinct Monday-anchored weeks that contain at least one working day; you can override the count for partial ranges. Days, lengths, and cadence are all editable.

The tally

Committed = structured calls + Close activity + meetings
Left over = available − committed
% committed = committed ÷ available × 100

One honest caveat: structured time and Close time can overlap in the real day — a rep dialing between demos earns credit for both. So the tally reads as time committed to work product, not a wall-clock reconstruction, and can exceed 100% for a genuinely stacked rep.

Speed to Lead (SDRs, calls only)

Speed to lead = first manual outbound SDR call − lead created

The clock starts when a new lead is created in Close and stops at the first manual outbound call by an SDR. Auto-emails and auto-texts never stop the clock. Leads with any Collaboration Call or Sync Call activity, or a Collab Booked Date, are excluded — those are closer-stage, not fresh leads; leads that booked demos are included. The headline stats show total new leads, how many got a manual SDR call, and the coverage percentage; the per-SDR "% of all leads" column is each rep's called share of the total lead pool. Median leads the table because one outlier lead shouldn't bury an otherwise-fast rep. Leads with no manual call yet are counted separately as uncalled.

Pre-Call Report

Which meetings count = the DAOS calendar (fair basis), joined to Close by Google event id
Window = [meeting booked in Close (date_created) → appointment (starts_at)]
Pre-called = owner made ≥1 outbound call to that lead inside the window
Timing = appointment − first attempt, bucketed:
  <1h not good · 1–3h alright · 3–12h okay · 12–24h perfect · 24–48h acceptable · 48h+ too long
Connect = call duration ≥ threshold (default 30s, editable)
Connected 1st = first attempt connected · Connected multi = a later attempt did
Unconfirmed = pre-called but no attempt ever connected
Reattempts = attempts − 1

The DAOS calendar is the source of truth for which meetings exist and what type they are — Close supplies only the booking timestamp and the call attempts. Each Close meeting record is joined to its calendar event by Google event id; Close syncs one record per connected calendar, so the same demo can appear several times in Close, and this join collapses those duplicates to one meeting (preferring the record owned by the calendar host). Counts use the fair basis — invalid/spam and unqualified excluded, exactly Insights\u2019 valid numbers, so the calendar totals in each reconciliation line match the Rep Scorecard for the same range and reps. Calendar meetings with no Close booking record (Close never synced the event to a lead) still count in the calendar total but can\u2019t be timed — they\u2019re shown separately with a list, so nothing silently disappears. Collabs and LED Reviews are one call type — Close titles vary ("collab" vs "LED Review"), but the calendar type decides, so they\u2019re counted together. Syncs are not pre-call targets. Attribution is the meeting owner: only the owner\u2019s own calls count as their pre-calls. Never reached = pre-called, but no attempt ever hit the connect threshold — they dialed, they just never actually got the person. The 30s connect threshold exists because the org doesn\u2019t log voicemail duration on these calls and most sub-30s "answered" calls are voicemail drops — tune it in the assumptions bar and the report recomputes instantly. Bookings are looked for up to the lookback window before the range start (default 60 days), so a July appointment booked in June still counts.

This report is standalone. Its calls are already inside the Close dial totals above, so it adds nothing to committed time and never changes the utilization percentages.

Who counts as whom

The roster is DAOS profiles: calendar_role decides SDR vs Closer, matched to Close by email address. Promote someone in DAOS and this report follows automatically. Managers and admins appear in no activity table.