← Back to brief

reference dnc system

memory · reference_dnc_system.md

The rule

No outbound touch (email, sequence enrollment, postcard, HS push, campaign add) of ANY kind to anyone on the DNC list. This is a hard gate, not a soft warning. Violating it is what caused the Froelich incident (2026-04-22) and 3 additional customer leaks found 2026-04-23.

Data source

/Users/josephbowens/Desktop/SkyRun/DNC_active_homeowners.json — canonical union of:
1. Rachel's active-homeowner list (Winter_Park_Active_Homeowners_YYYY-MM-DD.xlsx) — authoritative
2. HubSpot customers — contacts with lifecyclestage=customer, contact_type=Home Owner, or relationship_to_the_property contains "Current Owner"
3. Track active-account owners — supplementary, for owners outside Winter Park

Structure:

The check function

~/Library/Application Support/SkyRun/dnc_check.py — Python callable:

bash
echo '{"email":"...","phone":"+1...","name":"Last First"}' | python3 "/Users/josephbowens/Library/Application Support/SkyRun/dnc_check.py"

Returns: {"hit": true, "reason": "email_match|phone_match|name_fuzzy", "match": "..."}


Or: {"hit": false}


Two-tier check pattern

Every outreach skill must use BOTH tiers:

Tier 1 — Local DNC (instant, required first):

Tier 2 — HS live check (catches owners added since DNC refresh):

Wired into these skills

Nightly rebuild (Section J of nightly-consolidation)

Every night:
1. Check Rachel's file freshness (alert if >45 days stale)
2. Rebuild DNC.json as union of Rachel + HS customers + Track
3. Audit every outbound channel (SmartLead × 3 campaigns, SoT, pending_drafts, pending_postcards) against DNC
4. Check HS for lifecycle mismatches (customer-type contacts with non-customer lifecycle)
5. Any total_leaks > 0 or HS_LIFECYCLE_MISMATCH → morning brief priority #1 + ntfy-urgent push

How to get a refreshed Rachel list

Ask Rachel for a re-export from Track of all active Winter Park homeowners with emails + phones. She has done this before — the canonical format is 27 columns starting with "Unit Name". Monthly cadence is sufficient.

Audit history / incidents

Files