Skip to content

Finalize cold_email_v3_outline.txt — CRM automation hub task#30

Draft
fsu9913-gif wants to merge 1 commit into
mainfrom
cursor/cold-email-v3-outline-2917
Draft

Finalize cold_email_v3_outline.txt — CRM automation hub task#30
fsu9913-gif wants to merge 1 commit into
mainfrom
cursor/cold-email-v3-outline-2917

Conversation

@fsu9913-gif
Copy link
Copy Markdown
Contributor

What

Finalized norcal-toolkit/cold_email_v3_outline.txt — the v3 plan for the cold-email leg of the CRM automation hub. Pure documentation; no code or behavior changes.

Why

The hub task cold_email_v3_outline.txt → Needs review and finalization had no draft on disk. The shipped emailer (02_cold_emailer.py) has several open loops that v2 hand-wired around in daily_workflow.py but never closed in code. This outline turns those gaps into a phased, ship-able plan.

Scope of the outline

  • Goals & non-goals — explicit list of what v3 must do (email enrichment, no sends after reply/bounce/unsub, deliverability, CRM sync, CAN-SPAM footer) and what stays out (no ESP migration, no SMS/LinkedIn touches, no web UI).
  • Architecture — two new scripts (02a_email_enrich.py, 02b_reply_watch.py) plus a crm_sync.py helper that finally closes the loop with 03_crm_tracker.py.
  • Enrichment cascade — website scrape → domain pattern guess → Hunter (budget-capped) → manual queue, with confidence scoring and validation.
  • Deliverability — secondary domain, SPF/DKIM/DMARC, custom tracking domain, warmed sender pool, per-mailbox caps, business-hours-only send window enforced in code.
  • Reply / bounce / OOO / unsub — IMAP poller that classifies and writes back to crm.csv + suppressions.csv, with a Telegram alert (reusing the existing workflows/telegram-webhook.yml) on interested replies.
  • Personalization — one-line opener grounded in a real fact (review snippet → website blurb → fleet hint → fallback), LLM-optional and guardrailed against hallucinated numbers.
  • Compliance — physical address, working 1-click unsubscribe, suppressions list checked before enrichment and before send.
  • Phased rollout A → E, each phase its own PR.
  • Acceptance criteria and open decisions Bryan needs to make before Phase A starts (cold domain name, warmup tool, OpenAI key Y/N, Telegram chat reuse, reply-watcher host).

Testing

  • wc -l norcal-toolkit/cold_email_v3_outline.txt → 387 lines, no code paths touched.
  • No manual testing required for a documentation deliverable. Implementation work for each phase will land in subsequent PRs with their own tests.
Open in Web Open in Cursor 

Adds the v3 outline for norcal-toolkit/02_cold_emailer.py.
Builds on the shipped v1 (3-touch sequence, SMTP, CSV state) and
defines a concrete plan to close the open loops:

  * email enrichment (02a_email_enrich.py) — website scrape →
    domain pattern guess → Hunter (budget-capped) → manual queue
  * reply / bounce / OOO / unsub watcher (02b_reply_watch.py) that
    syncs results back to crm.csv via a new crm_sync helper
  * deliverability discipline: secondary domain, SPF/DKIM/DMARC,
    warmed sender pool, business-hours-only send window
  * one-line personalized opener grounded in a real fact (review
    snippet, website blurb, fleet hint), LLM-optional, with guardrails
  * CAN-SPAM footer + List-Unsubscribe + suppressions.csv
  * 7-day metrics block in daily_workflow.py, auto-pause thresholds
  * phased rollout (A–E) and acceptance criteria
  * open decisions Bryan still needs to make before Phase A

Pure documentation change — no code or behavior is modified.

Co-authored-by: fsu9913-gif <fsu9913-gif@users.noreply.github.com>
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
❌ Deployment failed
View logs
dmc-properties a173ce1 May 13 2026, 02:25 AM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants