Know who’s safe to contactbefore you wake your database.
Every “AI reactivation” tool blasts your dormant list and optimizes for volume. The expensive part isn’t the message — it’s the contacts you weren’t allowed to text, at up to $1,500 each under the TCPA.
This runs first. It scores every dormant contact CONTACT, REPERMISSION FIRST, or SUPPRESS, and gates the whole list GO / FIX / HOLD — from each contact’s own consent and risk fields, not a guess.
The cheapest pipeline you own is the easiest to torch.
Dormant lists carry the stalest consent in your CRM — and the AI send-engines on the market point at the whole list and start messaging. That’s backwards. TCPA statutory damages run $500 per message, up to $1,500 for willful violations, uncapped and under strict liability. A single 1,000-contact campaign sent to the wrong people can reach six or seven figures.
And consent doesn’t age gracefully: a number gets reassigned to someone new, a contact replied STOP two years ago, an old opt-in was implied rather than written. None of it shows when you point a send-tool at a list — all of it is a violation waiting to happen.
Per-message TCPA statutory damages — $500 standard, up to $1,500 for willful/knowing, uncapped and strict-liability. The expensive part of reactivation isn't the send; it's the contacts you weren't cleared to reach.
A dormant list is, by definition, the oldest consent you hold. Reassigned numbers, prior opt-outs, and implied-not-written permission accumulate in exactly the segment everyone is most eager to blast.
Every send-engine optimizes for volume and starts messaging. None of them ask 'should you send at all?' first. That question — who NOT to contact — is the whole gap this fills.
Score a sample dormant list right here.
This is the same logic that ships in the Python tool and the workbook — running in your browser on a 15-row sample. Tap any contact for the reason; toggle the risk chips to see a verdict flip. Nothing is sent and nothing is stored.
40% contact-safe with 73% documented consent — cleared to send the CONTACT segment. Exclude the 4 suppressed; route the 5 to re-permission.
Documented-consent rate 73% · tap a row for why · toggle the chips to test a verdict
Verdicts are computed from each contact’s own fields — no baked-in lift estimate. A hard stop (opt-out, reassigned number, hard bounce, DNC) always wins. This reduces risk; it is not legal advice.
The tool actually runs. Here’s real output.
This is the included reactivation_readiness.py run against the 15-row sample list — not a screenshot of a promise. The gate clears (GO), but the “good” list still hides four hard suppressions and five contacts that need re-permission. It named every one.
$ python3 reactivation_readiness.py seed_contacts.csv --as-of=2026-06-17
================================================================
DATABASE REACTIVATION READINESS — LIST GATE: GO
================================================================
• 40% contact-safe with 73% documented consent — cleared to send the
CONTACT segment. Exclude the 4 suppressed and route the 5 to re-permission.
Evaluated 15 contacts:
CONTACT 6 (40%)
REPERMISSION_FIRST 5 (33%)
SUPPRESS 4 (27%)
documented consent 73%
Per-contact verdicts:
row 2 C-1002 sms REPERMISSION_FIRST
↳ Express consent is 53 mo old (> 24 mo floor) — re-confirm before sending.
row 4 C-1004 sms SUPPRESS [HARD]
↳ Prior opt-out on record (STOP/unsubscribe) — re-contact is prohibited.
row 5 C-1005 sms SUPPRESS [HARD]
↳ Phone number flagged reassigned — consent does not follow the number.
row 6 C-1006 email SUPPRESS [HARD]
↳ Email hard-bounced — address is dead; sending damages sender reputation.
row 7 C-1007 voice REPERMISSION_FIRST
↳ No documented consent for this channel — re-permission before any send.
row 10 C-1010 sms SUPPRESS [HARD]
↳ Matches Do-Not-Contact / DNC list — hard suppress.
row 1 C-1001 sms CONTACT
↳ Documented, fresh, express-written consent for this channel — safe to contact.
(…9 more rows; full report prints all 15)
$ echo $?
0Reads a CSV exported from your CRM, evaluates as of today by default (the example pins --as-of so it reproduces the workbook), and prints a per-contact verdict plus the list gate. --json mode for tooling. The tool, the workbook, and the demo above share one logic and are verified to agree.
The honesty spine: missing proof is never “safe.”
Verdicts are deterministic and come only from each contact’s own fields — there is no baked-in lift or conversion multiplier anywhere in the logic. Three rules hold the line:
Hard stops win, always
A prior opt-out, a DNC match, a reassigned number (SMS/voice), or a hard bounce (email) forces SUPPRESS — evaluated before consent and never downgraded to a warning, no matter how strong the rest of the record looks.
Unproven ≠ safe
Missing or unverifiable data is treated as 'unproven', never as 'safe'. No consent record, an undated opt-in, or implied-not-written consent routes to REPERMISSION FIRST — you re-earn permission rather than assume it.
The gate isn't an average
A list can be majority contact-safe and still HOLD: documented consent under 50%, or suppression over 35%, fails the gate. 'Looks contactable' and 'can be proven contactable' are different things — only the second defends you.
The 24-month consent-freshness floor is a deliberate conservative default, not a fixed legal standard — it’s tunable in the config, and the included compliance reference documents the reasoning. This reduces legal and deliverability risk; it is not legal advice. Confirm the obligations for your industry and states with qualified counsel.
It’s the gate, not the sender — and that’s the point.
The whole reactivation category sells the send. This sells the “should you send at all.” It doesn’t compete with your GHL send-tools — it hands them a clean, defensible segment to work.
- ·Point at the whole dormant list and start messaging
- ·Optimize for volume and reply rate
- ·Assume the list is safe to contact
- ·The penalty for being wrong is per-message
- ·Scores every contact and gates the list before any send
- ·Decides who NOT to contact, by name
- ·Treats unproven consent as unproven, never safe
- ·Hands a clean CONTACT segment to your send-tools
Run your dormant export through the Engine. Every contact and the whole list get a verdict. You do nothing until the gate clears.
Send a single compliant opt-in to the REPERMISSION segment. Re-opt-ins become CONTACT on the next run.
Hand the clean CONTACT segment to your GHL send-tools. This System is the gate, not the sender.
Fold new opt-outs and bounces back into your data and re-gate. The suppression list compounds, so each wave is safer.
Clear about the lane. No inflated promises.
- A zero-dependency, keyless reactivation_readiness.py — CONTACT / REPERMISSION FIRST / SUPPRESS per contact, plus the GO / FIX / HOLD list gate, with JSON mode and a tunable --as-of date.
- An interactive workbook (Start Here → Dashboard → Readiness Calculator) whose live formulas reproduce the tool exactly.
- Two playbooks: the reactivation runbook (gate → repair → send → learn) and the consent & compliance reference behind every verdict.
- A config.json of policy thresholds shared by the tool, workbook, and demo, plus a 15-row sample list that exercises every verdict path.
- Not a send-tool — it gates the list; it doesn't message anyone. Hand the CONTACT segment to your GHL send-tools.
- No baked-in lift — there is no conversion or 'expected recovery' multiplier anywhere in the verdict logic.
- No invented safety — missing or unverifiable consent is flagged as unproven, never assumed safe.
- Not legal advice — it reduces TCPA/CTIA/CAN-SPAM and deliverability risk; it doesn't eliminate it. Confirm your obligations with counsel.
- No SaaS, no monthly fee, no telemetry — your contact data never leaves your environment.
Anyone sitting on a dormant list they mean to “wake up.”
Agencies running reactivation
If you run database-reactivation campaigns for clients, the gate is your liability shield — you send only what you can defend, and you can show the client why a contact was held.
SMBs with an old lead list
Years of leads, quotes, and past customers sit in the CRM. The Engine turns that pile into a clean CONTACT segment and a re-permission list, without betting your sender reputation on a guess.
GHL operators & send-tool users
You already have the send-tools. This is the missing step in front of them — gate the list, then activate the clean segment inside GoHighLevel.
GHL AI Activation Kit
Once the list is gated, activate the clean CONTACT segment inside GoHighLevel — the build that does the sending the Engine deliberately doesn't.
AI Chat & SMS Concierge (GHL)
Conversational two-way reactivation on the safe list — consent-aware SMS with opt-out handling, working only the segment the gate cleared.
No-Show Reduction & Reactivation Kit (GHL)
Appointment recovery and win-back for the leads you re-engage — the same short, compliant cadence, applied after the gate says GO.
The questions operators actually ask before they hit send.
It reads a CRM export of your dormant leads and returns one of three verdicts for every contact — CONTACT (safe to send), REPERMISSION FIRST (re-consent before sending), or SUPPRESS (hard stop) — plus a single GO / FIX / HOLD gate for the whole list. It runs before any outreach, so you send only to the contacts you can prove you're allowed to reach.
Those tools are send-engines: they message everyone and optimize for volume. This System is the gate that runs first. Dormant lists carry the stalest consent you own, and the penalty for getting it wrong is per-message. The Engine decides who NOT to contact, hands a clean segment to your send-tools, and refuses to treat a missing consent record as 'safe'.
The gate is not an average of the verdicts. A list can be 60% contact-safe and still HOLD if the documented-consent rate is under 50% or the suppression rate is over 35% — because 'looks contactable' and 'can be proven contactable' are different things, and only the second protects you in a complaint.
Four signals, evaluated before anything else and never downgraded to a warning: a prior opt-out (STOP / unsubscribe), a Do-Not-Contact match, a reassigned phone number on an SMS or voice channel, or a hard-bounced email address. Any one of these forces SUPPRESS regardless of how strong the rest of the record looks.
No. It reduces legal and deliverability risk; it does not eliminate it. TCPA, CTIA, CAN-SPAM, and state privacy laws change and vary by industry. The Engine encodes conservative defaults and flags what it cannot verify, but you should confirm the freshness window and DNC obligations that apply to your business with qualified counsel.
A zero-dependency, keyless Python verdict tool, an interactive workbook (Start Here → Dashboard → Readiness Calculator) whose live formulas reproduce the tool exactly, two playbooks (the reactivation runbook and the consent/compliance reference), a config file of policy thresholds, and a 15-row sample dormant list. You don't need to be technical — the tool runs on a CSV exported from your CRM with no install or API key, and in Claude Code or Cowork the assistant runs it for you and explains the output. Lifetime access with 12 months of updates, 30-day refund.
Stop blasting. Start gating.
Reactivate the database without betting your sender reputation or your legal exposure on a list you never checked. Run the gate, repair the re-permission segment, and send only to the contacts you can prove you’re allowed to reach. Thirty-day refund either way.
Reduces legal & deliverability risk; not legal advice. Confirm your obligations with qualified counsel.
Sold by RedHub AI LLC · Secured by Stripe · redhub.ai