Trades agent system
Answer the paid lead in under 60 seconds
An Angi, Thumbtack, or web-form lead is called or texted within a minute, qualified, and booked. Every booked job is logged with its cost so the Monday report can compare sources.
- Difficulty
- Difficulty 3 of 5 in the research brief.
- Setup time
- Estimate, not from the brief: a weekend, longer if the only lead path is an email you have to parse.
The pain
Paid leads are shared, you pay even when the lead is bad, and the shop that answers first gets the conversation. The brief's fix is speed, plus a cost-per-booked-job number so you can pause a source that does not pay.
Electricians and contractors on Reddit describe Angi and Thumbtack leads going to 3–6 contractors, charges for bad leads, and a race to the lowest price. That is qualitative, not a conversion rate.
Reddit, r/electricians, r/Contractor, and a Thumbtack thread
Source type · Forum posts, anecdotal
Lead email or webhook arrives
Parse name, phone, trade, and source
Within 60 seconds, Grok Voice calls or an SMS goes out
Qualified and in the service area?
Branch
Yes
Book the slot and log the lead cost against that booked job.
No
Log it as not booked, with the reason, so the source still has a cost.
Weekly report compares cost per booked job by source and can recommend a pause
Trigger
A lead email or a lead webhook from Angi, Thumbtack, or the site form.
Data sources
- The lead email or webhook: name, phone, job description, and source
- What you paid for that lead, so cost per booked job can be calculated
- Open slots for the booking
- A sheet or Airtable that stores source, cost, and whether it booked
Voice layer
Recommended first option: Grok Voice by xAI, model grok-voice-3.0 (alias grok-voice-latest). Retell and Vapi stay as alternatives.
Published xAI price for grok-voice-3.0: $0.08 per minute of audio ($4.80 per hour), plus $0.004 per text input. A text input is a conversation.item.create, except function_call_output items and audio items. response.create is not billed as a text input.
At $0.08 a minute, 200 minutes of calls is 200 × $0.08 = $16 of speech. Each billed text input adds $0.004, so a handful of text items on those calls is cents, not another per-minute rate. An hour of audio is $4.80 before text inputs. Retell and Vapi remain alternatives and are priced by those vendors.
Latency. xAI's own claim is sub-second speech-to-speech latency. That is a vendor claim. This site has not measured it.
- 10 concurrent sessions per team, from the speech-to-speech rate limits.
- 120-minute maximum session.
Function calling is built in, including custom functions, so a tool in the session can book into ServiceTitan directly. You still implement that function against the ServiceTitan API. ServiceTitan's own limits stay in force: Zapier registration is required, and ServiceTitan says that integration is not officially supported.
Twilio setup
A. Elastic SIP trunk. In Twilio, set the origination URI to sip:{number}@sip.voice.x.ai;transport=tls and assign the shop number. Register that number with xAI as origin byo_trunk and a webhook, and store the signing secret (xAI returns it once). On the signed realtime.call.incoming webhook, verify webhook-id, webhook-timestamp, and webhook-signature, then read data.call_id. Connect to wss://api.x.ai/v1/realtime?call_id={call_id} with your API key, send session.update, then response.create. Transfers go to POST /v1/realtime/calls/{id}/refer. Turn on call transfer on the Twilio trunk if you transfer mid-call.
B. Twilio Media Streams. Your server passes μ-law (PCMU, 8 kHz) audio straight through to wss://api.x.ai/v1/realtime, with no PCM conversion. The xAI phone cookbook shows this path and says the examples are not production-ready without extra hardening.
Build it
- 1
Get the lead into the workflow the moment it arrives
Prefer a webhook. The brief says Thumbtack has a partner API and that this was not confirmed, and that the fallback is to parse the lead email. Angi delivery is email or a CRM integration.
- 2
Contact them in under 60 seconds
Call with Grok Voice, or send an SMS. Retell or Vapi can place the call instead. Qualify the trade, the address, and whether they are still looking. Shared leads go to more than one shop, so the first useful reply matters.
Branch. In the service area and ready to book: offer two slots and book. Wrong trade, out of area, or already hired: log the reason and do not keep texting.
- 3
Store cost per booked job by source
Every lead writes a row: source, what you paid, booked or not. The weekly model reads that sheet. A sample line in the brief is "Angi: $412 per booked job vs GBP: $38." Those dollars are an illustration of the report format, not a measured benchmark.
- 4
Let the weekly note recommend a pause
The model compares sources and can recommend pausing spend. A person decides. The agent does not turn the ads off by itself.
Tools and rough monthly cost
A Grok Voice minute is $0.08 ($4.80 per hour) plus $0.004 per text input, from xAI's pricing page. One hundred qualifying minutes is 100 × $0.08 = $8 of speech, before text inputs. SMS-only is cheaper and still meets the 60-second bar. Retell and Vapi are alternatives priced by those vendors. Lead fees are your existing ad spend, not a new tool.
| Tool | Job | Rough monthly |
|---|---|---|
| Thumbtack, Angi, or the web form | The lead | What you already pay per lead. Thumbtack's partner API was not confirmed. Email parsing is the fallback.Unverified |
| Grok Voice (or Retell/Vapi) | Recommended voice call inside 60 seconds. Model grok-voice-3.0 (alias grok-voice-latest). Retell and Vapi remain alternatives. Twilio SMS is the cheaper path that still meets the clock. | xAI published price: $0.08 per minute ($4.80 per hour) plus $0.004 per text input. A one-minute qualifying call is $0.08 of speech before text inputs. Retell, Vapi, and Twilio SMS are priced by those vendors.xAI pricing |
| n8n or Make | Parse, start the 60-second contact, write the sheet | Often the low tens of dollars. Unverified public list-price estimate, October 2026. Not a figure from the research brief. Check the vendor.Unverified |
| Google Sheets or Airtable | Cost per booked job by source | The free or low-tier plan is enough for one shop. Unverified public list-price estimate, October 2026. Not a figure from the research brief. Check the vendor.Unverified |
| LLM API | Parse messy emails and write the weekly note | Usually a few dollars a month. Unverified public list-price estimate, October 2026. Not a figure from the research brief. Check the vendor.Unverified |
Expected ROI
The brief does not publish a cost-per-booked-job benchmark. The $412 and $38 figures in the sample weekly report are illustrative. The outcome to measure is your own cost per booked job by source, and whether you pause a source that loses.
Caveats
- Thumbtack's partner API is marked unverified in the software table. Build the email parser first so a missing API does not block the 60-second response.Unverified
- Do not cite $412 or $38 as industry numbers. They are an example sentence inside the brief's workflow.
- Reddit threads are the evidence that leads are shared and that bad leads are still billed. They are not a sample you can generalize to a percentage.
Example prompt
Change the names, fees, and slots before you run it. It does not add facts that were not in the brief.
A shared lead just arrived. Contact them as the shop, within the facts you were given. Say which company you are and the job they asked about. Ask if they still need it, and ask for the address if it is missing. Offer two appointment slots only if you were given those slots. If they already hired someone, or the trade is wrong, thank them and stop. Return a one-line log: source, booked or not, and the reason if not. Do not quote a price you were not given. Do not mention other contractors.