Skip to content
Voice agents · In build2026

Sarah, an AI employee that answers the phone

Scoping, architecting and building a voice agent that qualifies and books leads for home-services contractors, owned end to end.

Client
Roster
Year
2026
Role
Product owner and engineer
Stack
Workers · D1 · KV · Twilio · Vapi
Status
In build
16
TABLES
Multi-tenant schema, one database for every contractor
5–28×
PER-CALL COST
Real voice cost against the first estimate, found in the model before any code
3
OAUTH FLOWS
Jobber, Google and Meta connected from the first release

01 · Discover

Requirements and scope

The first release was cut into two modules a contractor can switch on separately.

  • Module A, Reviews: post-sale review collection, AI-drafted SEO review replies, review-to-social content, automated referral asks
  • Module B, Leads: instant SMS outreach, AI voice call lead qualification and booking

Two approvals with long review times, Google Business Profile API allow-listing and Meta app review, were started on day one so they would not block launch.

02 · Architect

System design and cost

Everything runs on Cloudflare Workers with D1 for tenants, leads and reviews and KV for sessions, behind a 16-table multi-tenant schema. Calls come in through Twilio, the conversation runs on Vapi, and qualified leads are booked straight into Jobber.

ChannelsCorequalifybookfollow-upreviewsPhone callTwilioVoice agentVapiSMS outreachTwilioAPICloudflare WorkersTenants and leadsD1 · 16 tablesSessionsKVJobberOAuthGoogle and MetaOAuth
Fig. 2 · Lead in by phone, qualified by the voice agent, booked into Jobber.
The cheapest bug to fix was the pricing one, because it was found in a spreadsheet, not in production.

Modelling real per-call voice costs before writing code moved the estimate from five to ten cents a call to roughly fifty cents to $1.40 all in. Module pricing and call limits were reworked before the build started.

03 · Build

Implementation

A deployable Worker repo with the Twilio and Vapi integrations and the Jobber, Google and Meta OAuth flows, with the D1 database and KV namespace already provisioned.

04 · Launch

Not yet, on purpose

Launch waits on the platform approvals and a pilot with real contractors.

05–06 · Maintain and evolve

Roadmap and change log

Every change goes through one list: what it costs, what it touches, which release it lands in.

  1. V3Months 7 to 12
    Planned

    Local SEO copilot and reputation intelligence

    • Local SEO copilot
    • Competitor tracking
    • Voice reviews
    • Deep reputation intelligence
  2. V2Months 4 to 6
    Planned

    Complaint interceptor and gallery

    • Complaint and sentiment interceptor
    • Before and after gallery generator
  3. V1MVP
    Added

    Module B · Leads

    • Instant SMS outreach
    • AI voice call lead qualification and booking
  4. V1MVP
    Added

    Module A · Reviews

    • Post-sale review collection
    • AI-drafted SEO review replies
    • Review-to-social content
    • Automated referral asks
  5. 0.2Architecture
    Changed

    Voice cost model corrected

    • All-in voice calls modelled at about $0.50 to $1.40+ per call, not $0.05 to $0.10
    • Module pricing and call limits revisited before build
  6. 0.1Discovery
    Decided

    Stack and long-lead risks

    • Cloudflare Workers, D1 and KV with a multi-tenant schema
    • Google Business Profile API allow-listing and Meta app review started immediately
Next case study

Baton: one orchestrator for Claude Code, Codex and API models