Verification pending. This write-up describes what was built and how it works. It contains no performance figures, and it will be updated with measured results once they are verified.
Challenge
Certified Leadz sells by phone to sales-led businesses. Before this engine, each day started with building a list: searching, copying, checking numbers, deciding who calls whom. Lists went stale and the same companies came up twice.
Existing workflow
A local research app handled sourcing, evidence and call cards for a single operator. It worked for one person but had no multi-user access control and wasn’t meant to run anywhere but a laptop.
What we built
- A nightly job that searches rotating cities and categories within a hard nightly and monthly spend cap, then deduplicates, enriches and scores each business with written, versioned rules.
- A compliance gate — do-not-call data, internal suppressions and quiet hours by time zone — that every record must pass before it can enter a queue.
- A daily queue and brief per rep, exported in the format our dialer expects.
- A browser softphone where each seat can have one active call, and each lead can be in one active call, enforced in the database.
- Dispositions by keyboard shortcut, with do-not-call suppression applied immediately, and callback rules that decide who is called next.
Architecture
A scheduled worker and a small web service share one Postgres database. The rules that protect people — one active call per lead, immediate suppression — are database constraints, so they hold even when two reps act at the same moment.
Human involvement
Every call is placed by a person. There is no predictive dialing, no AI voice and no voicemail drop. Recording is off. The ideal customer profile is approved by the owner.
Result
The engine is running for our own outbound calling. We will publish calling and conversion numbers once they have been measured over a meaningful period; until then, this case study documents the build, not the outcome.
Lessons learned
- A category is not a customer. A large batch of contractor-license records looked like pipeline and wasn’t — a license doesn’t show a company runs a sales team. The profile now requires evidence of the selling motion.
- Rotate the queue. The first version surfaced the same companies repeatedly.
- Stalled jobs go to “ambiguous.” Anything interrupted mid-run is held for review, never pushed back into a queue where it could be called twice.
- Cap spend in code. Data costs are bounded per night and per month by the job itself, not by someone remembering to check.