A contractor answering service with AI picks up while you are on a roof. It books estimate visits, quotes only your fixed prices, logs messages in your job system and sends urgent jobs to on-call staff. A caller who smells gas hears one line first, telling them to leave the building and call 911 or the gas company from outside.
Key Takeaways
- A gas smell gets one fixed line before any question.
- Anything priced on site becomes a booked estimate visit, never a phone quote.
- If the on-call person misses the transfer, the caller stays with the agent.
This post is part of our guide to AI receptionists, where a receptionist is judged by its handover to a person. Below, we cover the calls a general contractor or remodeler misses on site, and how to set up each one in Dograh, the open-source AI voice agent platform we build.
The calls you miss on a job site
A contractor on a roof or in a crawl space cannot answer the phone, and the calls keep coming. A homeowner wants a price on a kitchen remodel. A past client has a question about Thursday's start date. A supplier needs to confirm a drop at the site, and a storm has just opened a leak over someone's bedroom.
Those callers do not wait long. In Jobber's home-service trends report, a survey of 1,050 US home-service business owners, 28% said their customers expect an immediate reply and another 28% expect one within the hour. Jobber sells software to these businesses, and the figures are owners describing their own customers. A voicemail checked at 6 p.m. misses both groups.
An AI answering service takes each of those calls while you work. Every call ends in one of five places: a safety line, a fixed price, a booked estimate visit, a message for the office, or a transfer to whoever is on call. The sections below take them in the order you should build them, starting with the call that can hurt someone.
A gas smell gets one fixed line first
Remodelers open walls near gas lines and move gas appliances, so a contractor's phone hears gas calls too. Federal pipeline safety guidance tells people not to use a phone or flip a switch near a suspected leak, to leave the area and to call 911 from somewhere well away from it.
So the agent asks nothing first. It does not ask for the address or try to judge how strong the smell is. It plays one line, "If you smell gas, leave the building now and call 911 or your gas company from outside," and the call ends there. A Webhook node then sends the caller's number and the outcome to your system, so the on-call person can follow up.
Exact words only hold in fixed text, because inside a step the language model writes its own sentences. Put a short version of the line in the Greeting Text, right after your company name, so a caller who never mentions gas still hears it. Allow Greeting Interruption is on by default, so switch it off on the Start Call node and the whole warning plays. Then repeat the line as Transition Speech on a gas smell pathway.
The model still decides when that pathway applies, so test it with the words callers really use, such as "something smells like rotten eggs in the basement". AI voice agents for plumbing companies covers flooding and water near electrics, and AI voice agents for electrical contractors covers sparks and burning smells.
Estimate requests and the site visit
Most calls to a general contractor are estimate requests, and most of those cannot be priced on the phone. The agent reads only the fixed prices you publish, such as a trip charge or a set price for a small repair, from a price list you upload to the Knowledge Base as a PDF, DOCX, DOC, TXT or JSON file of up to 5 MB.
Everything else becomes a booked estimate visit. A kitchen remodel, a roof replacement or a basement finish depends on what you find on site, so the agent writes down the scope in the caller's words and books a time to look. It asks what the caller wants done, the address, whether they own the property and the best number to reach them. Tell it in the prompt never to guess a price range, even when the caller pushes.

The booking runs through an HTTP API tool that reads open estimate slots from your job system or calendar and books the one the caller picks. Give the tool a short start message, such as "Let me check the calendar," and a delayed message in case the lookup runs long. Add a Preset Parameter named workflow_run_id, so your job system can spot a repeated request from the same call and ignore the duplicate.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
Messages written to your job system
Every call should end as a record in the system you run the business from, where the whole office can see it. After the call, a Webhook node sends what the agent gathered, such as name, number, address, job type, urgency and outcome, to your job system's API or to an automation tool like n8n in front of it.
The webhook works with Jobber, ServiceTitan, Housecall Pro or any other job system through that system's own API, so it posts wherever your system accepts new requests. If that API has a bad minute, the Webhook node retries temporary failures by itself, up to 5 attempts.
Each field is the agent's record of what the caller said, so send the recording and transcript links with it as the exact version. A remodeling lead often turns on a detail mentioned in passing, like a wall the caller wants gone, and the office can play that part back before the site visit.
Urgent jobs and the on-call person
Some calls are not about safety yet still cannot wait until morning, such as a tarp blown off an open roof in a storm or a client with no water after a bathroom tear-out. You write that list, and the agent follows it instead of judging urgency on its own.
For those calls the agent writes the address and the problem to your system first, because no summary travels with a transfer by default. Then Transfer Call dials the on-call person on Twilio, Telnyx, Plivo, Cloudonix or Asterisk ARI. The caller hears hold music while it rings and is connected only once someone answers. Rotas change every week, so a dynamic resolver can ask your own server for tonight's number at the moment of transfer.
If nobody answers within 30 seconds, the default, the transfer comes back to the agent as failed and the caller stays on the line with it. The agent then takes a callback request, writes it to your system through an HTTP API tool and can page a backup the same way. Transfers only run over a real phone call, so test this path from a phone before the first storm.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
Where to start
Start with the hours you miss most, usually mid-morning on site and the evenings. Build and test the gas pathway first, then estimate booking, then the on-call transfer. A pre-recorded clip in the owner's own voice can carry the greeting, with text-to-speech in a cloned version of that voice for everything else, so regular clients hear someone they know.
The agent can run on your own servers or in the managed cloud. Self-hosted Dograh has no per-minute platform fee, but servers, model keys and phone minutes still cost money. Dograh Cloud charges a 1¢-a-minute platform fee.
Once calls are live, each call's trace shows which pathway fired, so you can confirm that every gas call got the fixed line. Built-in QA can score a sample of calls each week and flag any that should have reached the on-call person. Our tutorial on how to build an AI receptionist walks through the setup screen by screen.
Glossary
- Estimate visit
- A booked trip to see a job before pricing it. The agent books one for any work that depends on what is found on site, instead of giving a price range on the phone.
- Transition Speech
- Fixed text or a recorded clip that plays word for word when the agent moves along a pathway. A safety line like the gas warning belongs here, because the language model cannot reword it.
- Dynamic resolver
- A Transfer Call setting that asks your own server for the destination at the moment of transfer. One agent can then ring whoever is on call tonight without anyone editing it each week.
- Webhook node
- The step that sends a call's gathered details to another system after the call ends. It retries temporary failures on its own, up to 5 attempts, so a short outage does not lose a job.

