A Voice-AI Phone Agent Wired Into a Real Business
An IT-services company ran on manual call handling and a spreadsheet catalog. I deployed a bidirectional voice-AI phone agent connected to a self-hosted CRM, on their own infrastructure.
Status
Client DeliveryDomain
AI AutomationHeadline result
Voice agent + CRM + catalog sync deployed to production on the client's VPS
Demonstrates
Representative stack
Telephony
- VoIP.ms trunk
- FreeSWITCH
AI layer
- Azure OpenAI Realtime (bidirectional voice)
Business systems
- Twenty CRM (self-hosted)
- SharePoint to Square catalog sync
- Windmill automations
Situation
A Lower Mainland BC IT-services company with a non-technical owner. Calls were handled manually or missed. There was no CRM. The product catalog lived in a SharePoint spreadsheet that someone re-keyed into Square by hand. The web presence was weak enough to cost them inbound work.
Problem
Owner-led service businesses lose revenue in the gaps: the call that rings out, the lead that never gets logged, the catalog that drifts out of sync, the hours spent on re-keying. None of these justify a hire individually. Together they cap the business. The owner needed leverage, not headcount.
Approach
Build the automation backbone on infrastructure the client owns, then teach them to run it. A bidirectional voice-AI phone agent answers the line: VoIP.ms trunking into FreeSWITCH, bridged to Azure OpenAI’s Realtime API for live conversation, wired into a self-hosted Twenty CRM so every call becomes a record, not a memory. The spreadsheet problem was solved at the source: a sync service that pushes the SharePoint catalog into Square automatically. The site was rebuilt with SEO content alongside.
Architecture and key decisions
- Self-hosted on the client’s VPS, not my cloud. The client owns the system, the data, and the off-switch. No platform rent to me, by design; the engagement model is build, instrument, hand over.
- FreeSWITCH over a CPaaS abstraction. Full control of call flow and barge-in behavior, at the cost of harder plumbing, the right trade for a phone line that IS the business’s front door.
- CRM as the system of record from day one. The voice agent’s job is not to chat; it is to produce structured records a human can act on.
- Fix the catalog at the source. Syncing SharePoint to Square removed the re-keying loop instead of speeding it up.
- Handoff documentation as a deliverable. The owner maintains this without me.
What shipped
A production voice-AI phone agent on the client’s own VPS, a self-hosted Twenty CRM, SharePoint-to-Square catalog synchronization, Windmill-based automations, a rebuilt website with SEO content, and handoff documentation.
Outcome
The system is deployed and operating. Calls-handled and leads-captured metrics accumulate in the CRM the client now owns; I report measured outcomes, not extrapolations, and those numbers are being collected now.
What this demonstrates
The exact shape of work I do for owner-led and mid-market businesses: find the manual loops that cap the business, build the automation on infrastructure the client owns, instrument it so results are measurable, and teach the team to run it without me.
The playbooks behind this work