Context
A call center needed a platform where a manager could assemble a calling run themselves: upload contacts, pick a script, launch a campaign, and see the results in the dashboard — without middleware or third-party SaaS.
Solution
The dashboard holds campaigns, contacts, calling scripts, and a call log. When a campaign launches, the system dispatches calls to the telephony provider, processes inbound callbacks via VoiceHookController, and records duration, status, and outcome. Billing counts minutes against the project's rate and updates an internal invoice. There are separate dashboards for campaigns and billing.
Stack and architecture
- Backend: Spring Boot, Spring Security, Spring Data MongoDB.
- Controllers:
CallController,CampaignController,ContactController,IncomingCallController,TelephonyController,VoiceHookController,BillingController,InternalInvoiceController,ProjectManagementController,UserController. - Frontend: Next.js, with
dashboard/campaigns/calls/contacts/billing/settings/profilesections. - Deployment: Docker.
Role and outcome
We built the domain model for campaigns and calls, the voice-hook callback, per-minute billing, and the manager dashboard. A manager launches a campaign in a couple of minutes and sees the results without exporting anything.