DNC Compliance Automation
One Slack command scrubs call lists across every dialer platform, with an audit trail
PythonFastAPIGoogle Cloud RunFirestoreSlack SDKDocker
Result: DNC scrubbing across the contact center's dialer platforms starts from one Slack command instead of a manual export–scrub–reimport loop per platform, backed by 3,078 tests.
Context
The contact center I work in dials outbound on more than one platform at the same time. Every campaign has to be scrubbed against the Do Not Call registry and internal opt-outs before it dials.
The manual problem
Under the Telephone Consumer Protection Act, a call to a number that should have been removed can cost up to $500 per violation. The manual process was: export the list, upload it to the scrubbing service, wait, download the result, re-import it to the dialer, then start the campaign — repeated for every campaign on every platform, several times a day. It was repetitive, easy to get wrong, and exactly the kind of work that shouldn’t depend on someone remembering a step.
What I built
A Slack-integrated job system running on Google Cloud Run:
- An operator starts a scrub from Slack with a single command; nobody logs into a dashboard or runs a script.
- The job fans out to every configured dialer platform at once. Each platform has its own adapter, so adding a platform means adding one adapter, not touching the core job logic.
- Firestore tracks every job — submitted, running, complete, failed. Jobs are idempotent and resume from their last checkpoint instead of starting over.
- Status updates stream back into the same Slack thread, so the thread becomes the audit trail: what was scrubbed, what came back clean, what failed.
Result
Scrubbing that used to be a multi-step manual loop per platform now starts from one command and reports back on its own. The compliance record lives where the team already works.
Tech notes
Python and FastAPI on Google Cloud Run (containerized, scales to zero between scrub windows), Firestore for job state, the Slack SDK for the interface, and a Firestore emulator for end-to-end tests without touching production state. The suite has 3,078 tests covering error paths and retry scenarios. The code and data are internal to the contact center.