Jump to the interactive worksheet
An HVAC AI receptionist should begin with one after-hours workflow, not every call. Let it either write one routine booking into the authoritative system, create an acknowledged callback, or deliver the buyer-approved emergency response and stop. Price the full path through review and correction, then divide it by reconciled accepted outcomes rather than answered minutes.
This resource is for the operations leader or technical owner at a mid-size HVAC or field-service company who owns after-hours coverage. The planner in the cost section combines an editable cost model with a route acceptance matrix. Its starting values are illustrative planning assumptions, not DVNC client results, a vendor quote or evidence of a deployed HVAC integration. Version 1, checked September 22, 2026.
Choose one of three outcomes for every eligible call
A safe first release does not ask the model to decide what the business itself has not decided. The owner should write a bounded route for routine bookings, uncertain requests and emergency phrases before a live caller reaches the system.
Routine authoritative booking is the narrow action route. The caller wants a service window covered by the approved policy, gives the required identity and location details, and does not cross an emergency boundary. The agent may offer permitted slots and create one scoped job or visit. The outcome counts only after the returned identity is queried from the system of record and the expected customer, time and status agree.
Capture and acknowledged callback is the route for ambiguity. The caller may have an unfamiliar equipment problem, ask for a service outside the approved catalog, omit a required detail or need a person. The agent collects only the approved packet and transfers ownership to a named queue. A transfer receipt is not a human handoff. Count it only when the receiving person or queue acknowledges the packet.
Emergency refusal and stop is not an expedited booking. When the caller reports an owner-defined emergency phrase, the ordinary intake and scheduling workflow stops. The system delivers the fixed, jurisdiction-appropriate instruction approved by the buyer and records that the boundary was triggered. It does not diagnose the condition, decide the dispatch priority or keep asking routine intake questions.
The matrix in the planner lets the owner inspect each trigger, allowed action and acceptance record. It is a reference contract. Replace its language with the company's actual coverage area, emergency policy, staffing and system permissions before implementation.
Treat gas and carbon-monoxide reports as stop conditions
US public-safety guidance supports a hard boundary, not an AI diagnosis. The Pipeline and Hazardous Materials Safety Administration tells people who suspect a pipeline leak to leave the area on foot immediately, avoid locating the source and call 911 from a safe location. It also warns against operating switches, vehicles and electrical equipment in the leak area. PHMSA: Pipeline Leak Recognition and What to Do.
The US Consumer Product Safety Commission says not to ignore a carbon-monoxide alarm, to get outside immediately and then call 911. Its May 27, 2026 notice also says that someone who smells or hears gas leaking should leave immediately and contact local gas authorities from outside. CPSC: carbon-monoxide and gas-leak guidance.
The operational rule on this page is an inference from those sources: a suspected gas leak, CO alarm or other buyer-defined emergency phrase must exit the ordinary booking path. This resource does not provide a universal emergency script. The business must have its safety and legal owners approve the exact local response, languages, fallback and logging policy.
Do not let a model soften this boundary because the caller sounds uncertain. Test indirect phrases, interruptions, background noise, corrections and attempts to resume booking after the fixed response. The stop rule should survive a tool outage and should not depend on the scheduling integration being available.
A successful API response is not a booking
The scheduler's authoritative state decides whether the action happened. Jobber's public GraphQL documentation provides one representative example of why transport success is insufficient. Queries read data while mutations create, update or delete it. Its guidance says mutation responses should include and check userErrors; a non-empty array means the mutation was rejected. It also documents top-level GraphQL errors that may appear even when the HTTP response is 200. Jobber API queries and mutations.
For an accepted routine booking, retain this evidence:
- The caller's confirmed intent and the exact allowed action proposed.
- The GraphQL version, narrow authorization scope and idempotency or deduplication key.
- Top-level errors and mutation
userErrors, not only the HTTP status. - The returned record identity.
- A fresh query of the authoritative customer, service window and booking status.
- Any correction, cancellation or human takeover linked to the same call and record.
The exact mutation names, scopes and fields must be qualified against the buyer's current schema and test account. DVNC has not performed a Jobber write for this resource. The documentation is evidence for the verification method, not evidence of an integration.
A timeout after a mutation creates an uncertain state. Query the system of record before replaying it. An idempotency key helps, but it does not prove that the provider, the calendar and the customer's view all agree. Keep the call visibly unresolved until the read-back completes or a person owns the exception.
Price the joined workflow, not a voice demo
The planner keeps carrier, speech and model usage, recording, human review and callbacks separate because providers charge in different units. It then joins them into one monthly workflow cost:
Join cost to accepted calls, not answered minutes.
Illustrative assumptions, not HVAC client results or a vendor quote. Replace every input with your own cohort data. Calculations stay in your browser; nothing is saved or sent. Use −/+ for planning steps, or type an exact value.
One approved workflow and coverage window, not every inbound call.
Numbers, platform minimums and other costs that do not vary with usage.
Use billed minutes from the chosen number and call direction.
Enter the current contracted rate; the example is not a quote.
Keep provider-native units upstream, then enter the joined monthly total here.
Use zero when recording is outside the approved workflow.
Add storage or transcription separately in fixed or voice usage cost.
Include sampling, correction and incident follow-up.
Time spent owning ambiguous or out-of-policy requests.
A planning input, not a claimed salary saving.
Bookings read back from the system plus handoffs acknowledged by a named queue.
Measure the peak cohort, not the monthly average.
Calls that passed the full voice, tool, logging and handoff path together.
- Monthly workflow cost
- $576.60
- Cost / reconciled accepted outcome
- $4.81
- Carrier usage
- $5.10
- Recording usage
- $1.50
- Human review + callbacks
- $350.00
- Busy-hour capacity
- Within tested cap · 75%
Accepted means the booking was read back from the authoritative system or a named callback queue acknowledged ownership. A transcript, transfer receipt or successful HTTP response is not enough.
The same call path cannot handle every outcome.
- Trigger
- The request fits the approved service and scheduling policy.
- Allowed action
- Create one scoped job or visit only after the caller confirms the details.
- Count only when
- Check top-level errors and mutation userErrors, retain the returned identity, then query the authoritative customer, time and status.
monthly workflow cost =
fixed telephony and platform cost
+ carrier minutes × contracted carrier rate
+ monthly speech and model usage
+ recorded minutes × recording rate
+ (review hours + callback hours) × loaded human cost
cost per accepted outcome =
monthly workflow cost ÷ reconciled bookings and acknowledged handoffsThe denominator excludes calls that only reached a greeting, produced a transcript, triggered an unowned transfer or left a booking in uncertain state. The numerator retains their cost. When there are no accepted outcomes, unit cost is unavailable rather than zero.
The default worksheet uses 300 eligible calls, 600 carrier minutes, $100 in fixed monthly cost, $120 in joined speech and model usage, 600 recorded minutes, four review hours, six callback hours and a $35 loaded planning rate. The example carrier and recording rates match Twilio's US public page checked September 22, 2026: $0.0085 per inbound local minute, $1.15 per month for a local number and $0.0025 per recorded minute. Rates vary by number, country, feature and contract, so replace them before relying on the result. Twilio US voice pricing.
Under those illustrative assumptions, the total is $576.60 a month. If 120 calls become reconciled bookings or acknowledged handoffs, the model returns about $4.81 per accepted outcome. Those values are arithmetic from the displayed assumptions, not a market benchmark or a prediction of savings.
Speech and model cost should remain a monthly input unless the chosen stack has a stable conversion. OpenAI's GPT-Realtime page, for example, prices audio by tokens rather than minutes. Retained context and turn structure affect usage, so turning a token rate into one universal per-minute figure would manufacture precision. OpenAI GPT-Realtime pricing.
Run sensitivity tests before discussing payback. Raise human callback time, lower accepted outcomes and enter the busy-hour concurrency actually observed in the eligible cohort. A lower average call duration does not help if the hardest hour exceeds the concurrency tested across the complete speech, tool, logging and handoff path.
Busy-hour capacity is part of acceptance
Monthly totals hide the release constraint. A receptionist may handle the monthly average comfortably and still fail during a storm, a cold snap or the first hours after the office closes.
Enter the expected peak concurrent calls and the number qualified end to end. The planner marks the workflow not release-ready when expected demand exceeds the tested cap or no capacity has been qualified. That is intentionally stricter than checking a vendor's headline concurrency allowance. The complete path includes the carrier, speech stack, model, scheduler, logs, callback queue and human takeover.
A capacity test should cover:
- simultaneous routine and uncertain calls;
- one slow tool response while other calls continue;
- an emergency boundary while the scheduler is unavailable;
- spend and concurrency caps that refuse safely;
- dropped calls and reconnects without duplicate bookings;
- a person taking over without asking for already verified facts;
- degradation of latency, recognition and tool success at the tested cap.
Define what happens beyond the cap. The safe fallback may be a staffed service, voicemail with an owned callback SLA or a clear request to call the published emergency route. It should not silently accept work the operation cannot own.
Use this release checklist before live traffic
Treat the following as a go/no-go sequence for one number, one coverage window and one booking path.
- Name both owners. The operations owner defines eligible calls, accepted outcomes, emergency boundaries and staffed handoffs. The systems owner controls telephony, scheduler permissions, logs and release.
- Measure the same cohort. Sample recent after-hours calls from the intended coverage window. Record duration, route, callback effort, scheduling corrections and unowned requests. Preserve missing data as missing.
- Write the route policy. List the permitted booking, required caller fields, offered time windows, out-of-scope services, emergency phrases, fixed responses and the exact safe next step for refusal.
- Minimize tool authority. Give the agent only the scopes needed for the one write and its read-back. Test another customer, another location and a request to alter an existing booking.
- Replay representative calls. Include accents, noise, silence, interruptions, address corrections, unavailable slots, duplicate callers, API timeouts, human requests, gas odors and CO alarms. The buyer sets acceptance thresholds before seeing the results.
- Qualify capacity and cost. Test the complete path at the expected busy-hour concurrency. Set hard usage, spend and call-volume caps. Calculate cost per reconciled accepted outcome, not per answered call.
- Start with a bounded live window. Keep the ordinary phone path available. Sample calls, reconcile every write and review unacknowledged handoffs daily. A safety-boundary miss, unauthorized write or repeated duplicate booking stops the affected automation immediately.
- Expand only after observation. Compare the same cohort and observation window. Separate bookings, callbacks, emergency stops, refusals and failures. Expansion is a new release decision, not a reward for a polished demo.
Know what this first workflow excludes
This resource does not scope emergency diagnosis, safety-critical dispatch decisions, regulated medical calls, autonomous payments, outbound campaigns, a 24/7 human call-center desk or guaranteed bookings. It also does not prove that a particular field-service platform, carrier or model is suitable for the buyer's account.
A standard answering or field-service product may be the right choice when it exposes the route controls, permissions, evidence and human ownership the operation needs. A custom build earns consideration when the company's booking policy crosses systems, requires authority boundaries the product cannot express or needs reconciliation the existing platform cannot provide.
The decision is not “voice AI or no voice AI.” It is whether one bounded after-hours workflow can accept useful calls without obscuring safety, ownership or cost.
Scope one after-hours voice workflow
Bring the call cohort, coverage window, booking system and accountable owner. We will qualify the build boundary, acceptance evidence and safe handoff.








