TurboDial
Connecting Sales Calls to a Sequencer
SMS and voice automation platform with an App Store iOS app, Twilio integrations, and AI-powered call summaries.
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 automation platform I built 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 call summary feature transcribes and summarizes each sales call automatically, surfacing the key points for the rep immediately after the call ends. Both OpenAI and Gemini integrations are available, and enterprise clients requiring strict data privacy can route through self-hosted open-source LLMs instead. Transcription and summarization jobs run server-side in queues, with updates arriving to the client over WebSocket connections so the interface does not block while waiting for the AI processing to complete.

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.