Case study 08 / 11
AI voice and customer service
LiveUniversal CRM Connector for an AI Calling Agent
Call Agent AI builds AI agents that handle business phone calls, and every new customer used a different CRM. Each one needed its own lengthy integration. I designed a universal connector that handles several CRMs through one shared approach, then delivered a full Jobber integration end to end, so the AI agent now works directly with the business's own customer records.
AI
AI calling agent
System
Universal CRM connector
Output
HubSpot
Output
Zoho
Output
Jobber
Output
More CRMs
On this page
The challenge
Call Agent AI builds AI agents that answer and make phone calls for businesses. To be truly useful, the agent has to work with the customer records a business already keeps: who the caller is, their history, and what should happen next.
The problem was that every business uses a different CRM. Each one (HubSpot, Zoho and others) needed its own integration, written from scratch and running to hundreds of lines of code. Every new CRM meant more work, more code to maintain and a longer wait before a new customer could go live.
What I delivered
- A universal CRM connector. One shared approach to connecting CRMs, so adding a new one takes a small amount of CRM-specific setup instead of a whole new integration. It's built to support several types of CRM, including HubSpot, Zoho and Jobber.
- A complete Jobber integration. Jobber is a popular CRM for home-service and field-service businesses. I designed the architecture, built it and delivered it end to end, so the AI calling agent now works directly with a business's Jobber data. Just by talking with the caller, the agent can do the work a receptionist would: find or create the contact, offer available time slots and book the meeting, log the call and its notes, and handle invoices.
- Documentation for the team, so the engineering team can add and extend CRM integrations using the same pattern.
How it works
Most of what a CRM integration does is the same everywhere: sign in securely, find a contact, create or update a record, and keep the data in step. The universal connector handles all of that once, in a shared core. Each CRM then only needs a small, specific layer that explains how its data is shaped.
For the business, that means the AI agent behaves the same way whichever CRM they use. For Call Agent AI, it means a new CRM is a small, contained piece of work rather than a new project.
Key decisions
- Build the pattern, not just the integration. Writing a Jobber integration on its own would have solved one customer's problem. Building it on a universal connector solves the next ten.
- Keep the AI agent CRM-agnostic. The calling agent talks to the connector, not to each CRM directly, so it doesn't need to change when a new CRM is added.
- Deliver end to end. I owned the Jobber work from architecture to a working connection with the live agent, not just a prototype.
Built for trust
Businesses are trusting the connector with their customer records, so it only accesses the data the agent needs for the call, signs in through each CRM's own OAuth flow, so no CRM passwords are ever shared or stored, and keeps each business's connection separate.
The results
- A new CRM no longer means a new integration project written from scratch.
- Call Agent AI's AI agent can now work with Jobber, opening the product up to home-service and field-service businesses.
- The engineering team has one clear, documented pattern for every future CRM.
Under the hoodShow technical detailsHide technical details
- Sign-in: each business connects its CRM through OAuth, so the connector holds a revocable access grant rather than a password.
- Shared core, thin adapters: sign-in, contact lookup, record creation and updates, and data sync live in one shared core. Each CRM adds only an adapter that maps its data to the agent's common model.
- Jobber actions: contacts, available time slots and bookings, call logs and notes, and invoices, all exposed to the calling agent as actions it can take during a live call.
- The platform it plugs into: a TypeScript backend on Node.js and NestJS, with raw WebSockets for live call audio, MongoDB and PostgreSQL for data, Redis for caching and scheduled jobs. The agent speaks through real-time voice models (OpenAI Realtime and Gemini Live) with Deepgram for speech, over Twilio and Telnyx phone lines.
- Other integrations on the same platform: HubSpot, Zoho CRM, Cal.com for bookings, and SMS, WhatsApp and email messaging.
- Cloud: containers on AWS ECS Fargate behind a load balancer, with secrets in AWS Secrets Manager, infrastructure written in Terraform and deployments through GitHub Actions.
Related work
- CS2 Technologies productLive
GWS Connect 24: Adding AI to a Live B2B Marketplace
AI added to a live wholesale marketplace: a 24/7 AI sales agent, deals sent to the CRM in one click with their activity shown back, and AI that drafts personalised outreach for a person to approve.
B2B wholesale commerce
- CS2 Technologies productIn production
AgentlyLeads: An AI-Native CRM You Run from ChatGPT and Claude
A CRM that teams operate straight from the AI assistant they already use. The AI prepares emails and updates, and a person approves anything that is sent, deleted or charged.
Sales and CRM
- An AI phone agent company serving small businessesLive
AI Lead Discovery on Reddit, With a Person Approving Every Reply
An AI system that reads 56 Reddit communities for small business owners with real problems, drafts a helpful reply in the founder's voice, and sends it to Slack for a person to approve.
AI voice and customer service · NDA