The Call Runner turns a desk into a branching cold-call script — gatekeeper, permission opener, problem-first pitch, a float or calibration fork, diagnose and advise, objection handling and honest exits — then runs it on a prospect with the right names, numbers and next step filled in, and writes the outcome back to the record when you hang up.

Pilot note. The Call Runner is currently switched on for the Kolvera team only while the methodology settles. It will roll out to plans once the pilot closes; nothing here costs you credits until it is on for your workspace.

Three surfaces

Frameworks/call-frameworks/. Choose a desk to suggest a framework name, roles and buyer types. Review, test and publish. New frameworks include search and MPC call flows. Generation is optional; older authored scripts keep their own editor.
Runner — the Call Runner button on a prospect’s page and in the desk’s prospect drawer, beside Call. Opens the latest published framework for that prospect’s desk with every value pre-filled.
Write-back — the exit you land on logs the call, moves the prospect’s stage, sets the dated next action and appends a call note (verbatim objections included). The softphone call, if one is live, is linked to the same log.

During a call, open Prospect details to review the same record and activity history available on your desk, including calls, email, SMS, LinkedIn and meetings. Close the drawer to return to your script and call notes. Use Schedule callback beside it to choose a time and save a reminder without leaving the call. Through MCP, schedule_call_callback takes the contact ID, a date/time with timezone offset and an optional note; it sends no calendar invitation. Script keyboard shortcuts pause while either panel is open.

The drawer includes company notes, hiring signals, pipeline status and campaign history. Use Load older activity to keep reading without leaving the call. MCP provides the same context through get_contact_activity, with a cursor for older pages.

An explicit request for no further contact uses stop_contact_outreach. The runner waits for that restriction to save before confirming removal. This stops future managed outreach, ends active campaign enrolments and cancels queued sends and callbacks. Already handed-off provider actions cannot be recalled. Ordinary bad timing or no current hiring need remains a separate call outcome.

Set up in the browser or through MCP

Choose your desk and select Build from desk. The framework name, roles and buyer types come from the desk. Open a role or person type only when you want to adjust it. Review your commercial terms, then use Test run before publishing. Changes save automatically. Generation is optional.

Through MCP, use create_call_framework with the desk ID, then get_call_framework(include_setup=True). set_call_framework_setup edits roles, buyer types, terms and custom values. Omitted fields stay unchanged; lists replace their section and token values merge. Preview with get_call_runner_context without logging a call or spending credits. Its conversation section returns the same shortcuts as the browser. Pass a shortcut’s target as node_id and its resume_node_id to keep your place; follow the returned resume target without that argument to continue.

Included scripts use shared flows. For small script changes, use update_call_framework_node or update_call_framework_response with only the changed fields. Shared scripts still require explicit override_shared_script=True; the server builds the authored copy without a full-graph payload. To replace the whole graph, use update_call_framework_graph with override_shared_script=True and a complete graph. This creates an authored script that keeps your wording instead of inheriting future shared-script changes. Edits without this explicit choice are rejected rather than silently ignored.

What a framework is made of

A framework is a graph of nodes. Each node has a line you say, coaching chips, and the responses you might hear — every response routes to the next node. Kinds, in the order a call usually runs:

Gate — the receptionist. State your name and agency plainly and ask for the hiring contact by name; if asked what it concerns, name the role. Get a time rather than a voicemail.
Opener — five scripted beats in order: name and agency, one signal about them, own the cold call, ask for thirty seconds, the hang-up clause. Variants for a stale ad and for a warm contact; a refusal ends the call cleanly, while genuine timing gets one callback offer — there is no menu of reasons to pick from and no second ask.
Pitch — the buyer’s problem first, never the agency. The take-away probe (“if it’s working I’d leave it alone — one question”) is a pitch node.
Fork — motion A names a real candidate on your bench (name → proof → availability → price → one question); motion B is a calibration call that names nobody.
Diagnose / Advise — the must-ask questions, the candidate-call flip, and the honest “you may not be ready” line.
Objection — agree, incentivise, test-drive. Every objection has a recovery path back into the call and a refusal path to an exit.
Exit — booked, email sent, callback, nurture, dead, voicemail, no answer. Each carries the outcome, stage, next action and the referral ask.

How generation works

Preview sources and the credit cost before starting. By default, generation uses the selected desk, its linked business context and documents, and calls linked to its prospects or companies. Workspace-wide sources require an explicit opt-in; review their relevance before continuing.

Generation preserves existing setup and authored wording by default. Replacement is an explicit option through MCP. If someone edits the framework during generation, the run stops, refunds its charge and keeps those edits. Results stay draft until you review and publish.

MCP offers the same free preview through preview_call_framework_generation, including selected and excluded sources, call-relevance warnings, a company-size summary and fields that will be preserved or replaced.

Generation shows whether it is queued, running or complete, with its current stage and elapsed time. You can close and reopen the window to check progress. MCP exposes the same details through get_call_framework_status; a repeated start reuses the active run.

For briefing bookings, use preview_call_booking to review the recipient, calendar, timezone and available times. Only call confirm_call_booking with confirmed=True after the user approves the invitation. Repeated confirmation reuses the existing booking; check its returned calendar status.

Credits and refunds

5 credits per generation — charged when the run starts.
Refunded — if the framework cannot be built (the model fails, returns nothing usable, or the draft is still invalid after repair), and if the run is interrupted before it finishes. Interrupted runs are swept every five minutes; the draft shows why.
Kept — only when a draft is saved that you can publish, or that needs at most your own edits.
Cached — generating again within seven days with the same desk, documents and calls returns the previous result at no charge. Regenerate in the builder always runs fresh.

Builder, step by step

  1. Create. Name the framework and pick the desk. The desk decides which prospects use it and what the research reads.
  2. Generate. Review sources and cost, then follow the current stage. The builder shows the draft when ready, or explains why generation stopped.
  3. Read the validator. Errors block publishing; warnings do not. Click any issue to jump to its node.
  4. Edit. Drag nodes on the canvas, drop a new node from the palette, connect responses to targets. The node panel edits the line, chips, responses (label, intent, match hints, target) and, on exits, the outcome, stage, next action and referral ask.
  5. Entry rules. Which opener a call starts on: by persona, motion, ad age, headcount or whether the bench has a float. The first matching rule wins; the default is the fallback. Only forks carry a node-level motion condition.
  6. Upgrade. A draft written before the current skeleton shows an Upgrade to bd_v1 button: it adds the missing nodes from the reference script, wires them in and leaves your wording untouched.
  7. Test run on a prospect without publishing, then Publish. Each publish is a new version; the runner always opens the latest published version for the prospect’s desk, and editing the draft never changes what callers see until you publish again.

Validator codes

unreachable / dead_end / bad_target / no_terminal — nothing routes here / no responses / a response points at a node that does not exist / no path from here reaches an exit.
no_recovery — an objection with no way back into the call.
missing_node / missing_kind / missing_objection — the skeleton requires it and the graph does not have it.
no_referral — an exit without the referral ask.
bad_entry / bad_node_entry — an entry rule or node condition using a key the runner does not know.
bad_exit / bad_token / bad_kind / bad_intent / bad_chip / bad_skeleton — a value outside the vocabulary.
banned_claim — the counter-offer failure statistic. It is not sourced; it does not go in a script.
over_cap — more than 200 nodes, 12 responses on a node, or 512 KB.
Warnings — no_chips, no_hints, single_response, chip_placement (an opener without a tone or silence chip, a fee node without a never chip), too_many_chips.

Running a call

Follow up on real activity

Shared candidate, Search and Fractional TA openers use recent prospect activity before a job ad: email, LinkedIn messages and connection requests, SMS and calls. The runner shows the selected source and age. A connection request is never described as an accepted connection; a call attempt is never described as a conversation. Relevant recent ads and approved company signals support the reason for calling.

Sell embedded / fractional TA

Choose this call type for ongoing recruitment capacity. It qualifies hiring over the next 12 months, current ownership and annual volume, then explores agency, internal TA and fractional costs, role credit bands and your actual terms. The next step is a 20-minute hiring-map session. Missing terms prompt you to confirm them; the script does not invent prices or rollover rules.

Candidate-led calls remain available in the same selector. If they ask something else includes the phone-number question, with a direct answer when you have verified the source, or an offer to check it. Requests for no further contact end the conversation; complete the contact restrictions separately.

Win a search without a candidate bench

On a universal framework, choose Win a search from the visible Call type selector. Your existing candidate-led and MPC calls remain available. This browser remembers the search choice for that framework; choose another call type to switch back.

The search conversation uses four problems: A finding the right experience, B knowing who can deliver, C getting the right person to say yes, and D finding time to run the search. Ask the short question, then select what fits their answer. Press A, B, C or D when the problem choices are on screen, or click a choice. Each path gives you one follow-up at a time.

If they have already named a problem, use They already mentioned a hiring problem to skip the menu. Keep their own words in your call notes and reflect them before suggesting the next step.

Keep notes while talking. If they ask something else offers direct service and fee answers, a short reply when they grant only five seconds, and help with existing support, proof, email requests and timing. Back to conversation returns to the interrupted question. A meeting or refusal is not treated as a hiring problem. The aim is an agreed hiring-manager briefing. At the briefing stage, select Choose a meeting time. Pick an available slot, review the recipient, calendar and timezone, then explicitly create the meeting and send the invite. Logging the call remains a separate action. Use only genuine examples and agreed commercial terms.

Open the runner from the prospect. The strip across the top shows what the call is being run as, and where each value came from:

Contact and persona — the prospect’s name and title; the persona is matched from the title against the framework’s persona patterns.
Company and stage — headcount on the company record picks the stage band. No headcount on file? A slider lets you set it on the call and the read updates live.
Live ad — the company’s longest-running open job ad and its age, which drives the stale-ad opener and the internal-TA flip.
Seat and motion — the persona’s seat and default motion, or the framework’s first.
Float — the bench candidate linked to this desk (favourites first). No float and motion A demotes to B automatically — the runner never asks you to name someone you do not have, and warns on any line that would.

Every one of those is a picker. Change the persona and the seat and motion follow; change any of them and the call restarts from the right opener. The ACV field is optional and lands in the call note.

Navigate — the line to say, its chips (tone, silence, curiosity, urgency, never), and the responses you might hear. Press 1–9 or click. Back and Restart do what they say.
Brief — the whole framework on one page for a read-through before the call.
On-call mode — the line at reading size, everything else out of the way.
Intel panel — the stage band’s verdict, funding read, the org chart at this headcount (seats you place, their next hire, what does not exist yet), talking points, the peer comparison and the seat benchmarks with their sources.
Must-asks — on diagnose and advise nodes, the seat’s questions as a checklist that survives the whole call.
Missing — a pill lists any value the record could not supply; the line shows the placeholder rather than a guess.
Exit — the referral ask (“Who else in your space is dealing with this?”), a notes box for verbatim objections, and Log call.

The rules the generator keeps

Permission, not small talk — no “did I catch you at a bad time”. Own the cold call, ask for thirty seconds, stop at the question mark.
Problem first — the pitch names the buyer’s pain before anything about you.
No float, no fake float — a candidate is named only when one is on the bench. Otherwise it is a calibration call.
Honest urgency — urgency chips quote sourced facts and the float’s availability, nothing invented. The counter-offer statistic is banned outright.
Never discount — fee objections are answered on shortlist quality and the guarantee, not price.
Fee, then pause — a fee question gets a direct answer in the terms that apply, then silence. It is treated as a buying signal, not a cue to defend the whole industry.
Exclusivity is a defined service, not a demand — the framework offers the engagement that fits the search (a non-exclusive introduction or a scoped, priority-effort engagement) rather than asking for commitment before value is shown.
The flip — if a hiring conversation turns out to be a candidate conversation (or the reverse), the runner asks before changing the purpose and only continues with agreement.
A rude hang-up ends cleanly — no argument, no follow-up card or gift. Rudeness is recorded as a fact, not treated as a reason to try harder.
Referral only after a useful call — the ask is skipped after a refusal, a rushed exit or a request not to be contacted.

Coming next

Adaptive mode: with the softphone transcribing, the runner will hear the buyer’s response and move to the matching node itself — the same event the buttons send today. The objection bank will also rewrite itself from your logged calls once there are twenty.

Related

The dialler places the call the runner scripts. Frameworks are built per desk, and generation costs are listed under credits.