TurboDial
Connecting Sales Calls to a Sequencer
SMS and voice call automation platform with Twilio workflows, an App Store iOS app, AI call summaries, sentiment analysis, and self-hosted LLM options.
Sales teams running outbound call sequences have a specific operational problem: keeping CRM contacts, call routing, SMS threads, and rep availability synchronized in real time without the tooling falling behind the actual conversation. TurboDial is an SMS and voice call automation platform I worked on at Agency Automate to hold that whole workflow together.
The frontend is an Angular application connected to a Laravel REST API. I built out the dialing workspace where call state, SMS threads, and disposition tracking are all visible simultaneously, handling active campaigns, contact imports, and call configurations across a single view. Real-time call state syncs with Twilio webhooks so the interface reflects what is actually happening in the phone call without the rep needing to refresh or manually update anything.

The companion iOS app, built with Ionic and published to the App Store, gives operators access to the same workflows on mobile. Ionic let me share the Angular codebase logic while targeting the native App Store distribution channel without building a separate native application from scratch.
The AI layer started with call recording summaries: transcripts, key highlights, and follow-up context made available after a call instead of buried in raw recordings. I integrated third-party AI model APIs including OpenAI and Gemini for natural language processing features such as summaries, sentiment analysis, and automated call insights. For clients with stricter privacy requirements, we also set up self-hosted open-source models so AI processing could stay closer to their own infrastructure while reducing latency.

The dense telemetry layout, call lists, SMS threads, status indicators, required the same discipline as any high-information-density interface: clean boundaries, consistent spacing, and a clear visual hierarchy that lets a rep scan the current state without reading everything on the screen.