Outcome-priced · AI front-desk
Six steps · one ticket on the board

AI front-desk call flow, from incoming ring to filled ticket.

The six steps the agent runs on every after-hours ring — from the inbound tone through the two-ring pickup, the address + issue capture, the SMS dispatch out to the on-call tech, the SMS confirmation back to the homeowner, and the filled ticket on the morning board. Holdfast is billed only when that ticket closes — never on call volume, never on a flat retainer for marketing.

How it works

Six steps. Tuned per shop.

The agent is the first ring. SMS is the safety net. The calendar is where the money lands. We integrate alongside the software you already run — never against it.

  1. Incoming ring

    After-hours burst, peak-load overflow, or the second line ringing while the dispatcher is mid-call — the call lands on the shop number exactly as it always has. Holdfast listens for ring one through ring three and never lets the call route to voicemail without acting on it first.

  2. Two-ring AI pickup

    The tuned voice agent answers on the second ring with the shop’s greeting and shop hours, in the shop’s voice. No hold music, no IVR tree, no "press one for service" — the caller hears a person, on the call, before they decide to hang up.

  3. Address + issue capture

    The agent asks the three questions a real dispatcher would ask — service address (or cross-streets), the issue in the caller’s own words, and the urgency window. Hang-ups are not lost: the agent writes the captured fields into the same thread and follows up by SMS, not by guesswork on a callback.

  4. SMS tech dispatch for a window

    A two-hour dispatch window and the captured job notes go to the on-call tech by SMS — not a calendar invite the tech has to open in the office. The tech replies YES or RESCHEDULE from the truck; the agent folds the reply back into the booking state on the same thread.

  5. SMS homeowner confirmation

    The caller gets the same confirmed window, the tech’s name, and the on-my-way text in a single SMS thread — same thread they replied to during capture. TCPA-clean consent is captured at the first reply; one-tap STOP is honoured server-side, in the same minute, with no re-ask on the next call.

  6. Filled ticket on the dispatch board

    The confirmed slot writes to ServiceTitan, Jobber, or Housecall Pro — right next to the techs the contractor already knows. The dispatcher sees the recovery like every other ticket on the morning board: name, address, issue, window, recording attached, no shadow dispatch to teach the office.

Worked transcript

Read the six steps against one burst-pipe call at 22:07.

The six steps above are abstract on purpose — they read like a flow diagram. The transcript below maps each one to a real line from a recovered after-hours call: a burst pipe that crossed the threshold from “annoying” to “water on the slab” while the office was closed. Step 1 is the inbound ring; Step 6 is the closing tech SMS that writes the ticket to ServiceTitan.

Loading trade-aware transcript…

Need the other two transcripts (AC outage on a July evening · tripped main breaker with a warm panel on a Sunday)? They live on the /samples page.

The same six steps that turn a missed ring into a booked ticket — with Holdfast paid only on the outcome, never on call volume.

Four reads cover the rest of “what does this look like next”: the outcome-priced model (small platform retainer + per-booked-job bonus, billed only when a ticket lands), the real transcripts (three after-hours calls walked line-by-line against the same six steps), the lost-job estimate (three inputs → the per-month number the per-booked-job invoice will defend), and the live recovered-calls proof (three tiles from the same shop-level dataset the founder dashboard reads against, refreshing per page load). For the objections those four leave open — AI disclosure, burst-pipe misroute, the field-service software swap, no-show semantics, homeowner-relationship ownership, after-hours coverage, the reschedule that re-books — read the seven answers on /faq.

Also see

Four reads to take next, in this order.

Each one is short, on the same voice, and inherits the same six steps — the order is the order a prospect coming in from a /resources or /birmingham read walks them.

Outcome-priced model

See the pricing model.

A small platform retainer plus a per-booked-job bonus aligned to actual ticket value — billed only when a job lands on the calendar, never on call volume.

Open /pricing

Real transcripts

Read three worked transcripts.

Three after-hours calls walked line-by-line: a burst pipe at 22:07, an AC outage on a July evening, and a tripped main breaker on a Sunday — each with the same six steps mapped beside it.

Open /samples

Lost-job estimate

Run the lost-job estimate.

Three inputs — monthly missed calls, average job value, close rate — turn into a per-month lost-job number the per-booked-job invoice will defend, the same math the audit uses.

Open /calculator

20-minute audit

See your own number on this sheet.

A 20-minute audit takes ten of your recent inbound calls and your last quarter's ticket values and maps the six steps against your shop — no install, no demo deck.

Book the audit

FAQ · contractor questions

Read the seven objections.

The seven answers /how-it-works and /pricing leave open — AI disclosure, burst-pipe misroute, the field-service software swap, no-show semantics, homeowner-relationship ownership, after-hours coverage, the reschedule that re-books — anchored to the same booked-job outcome this page walks through.

Open /faq

Live recovered-calls proof

See the live recovered-calls numbers.

Three live tiles from the same shop-level dataset behind the founder dashboard — total recovered calls this week, the after-hours vs business-hours split, and a per-trade breakdown. Refresh the page; the numbers move.

Open /proof

Next step

See your own number on this sheet.

A 20-minute audit uses ten of your recent inbound calls and your last quarter's ticket values to map the same six steps against your shop — no install, no commitment. Three things and we scope your pilot the same week.

Three things and we scope the pilot the same week

  • 01Ten recent inbound recordings (or a calendar link).
  • 02Last quarter's service-ticket value range.
  • 03Confirmation you run ServiceTitan, Jobber, or Housecall Pro.

Related

The four reads that back this one up.

Same six steps, four directions: pricing shape, real transcripts, lost-job math, the audit that turns your own missed-call recordings into the same number the invoice will defend.

Outcome-priced model

See the pricing model.

A small platform retainer plus a per-booked-job bonus aligned to actual ticket value — billed only when a job lands on the calendar, never on call volume.

Open /pricing

Real transcripts

Read three worked transcripts.

Three after-hours calls walked line-by-line: a burst pipe at 22:07, an AC outage on a July evening, and a tripped main breaker on a Sunday — each with the same six steps mapped beside it.

Open /samples

Lost-job estimate

Run the lost-job estimate.

Three inputs — monthly missed calls, average job value, close rate — turn into a per-month lost-job number the per-booked-job invoice will defend, the same math the audit uses.

Open /calculator

20-minute audit

See your own number on this sheet.

A 20-minute audit takes ten of your recent inbound calls and your last quarter's ticket values and maps the six steps against your shop — no install, no demo deck.

Book the audit

FAQ · contractor questions

Read the seven objections.

The seven answers /how-it-works and /pricing leave open — AI disclosure, burst-pipe misroute, the field-service software swap, no-show semantics, homeowner-relationship ownership, after-hours coverage, the reschedule that re-books — anchored to the same booked-job outcome this page walks through.

Open /faq

Live recovered-calls proof

See the live recovered-calls numbers.

Three live tiles from the same shop-level dataset behind the founder dashboard — total recovered calls this week, the after-hours vs business-hours split, and a per-trade breakdown. Refresh the page; the numbers move.

Open /proof