ABS Pipeline Architecture

two rivers · same delta · different currents

vs
SoS Scrape Pipeline
live API continuous daily harvest · thick pipeline · 7 stages + loops
CT SoS Socrata API
STAGE 1
HARVEST
Fetch new filings from data.ct.gov · filter shells, non-domestic, bad names · classify: fresh (0-14d) / recent (15-89d) / historical (90d+) · milestone detection
sellsat harvest → ct.db
STAGE 2
BACKLOG + SCORE
Persist in backlog.json · NAICS tier · recency bonus · email domain tier · PLLC fast track (base 92) · priority = score × readiness_weight
STAGE 3
ENRICH (7 phases)
1. Filing-service detect · 2. Domain extract · 3. Website check · 4. Phone scrape · 5. Competitor detect · 6. Brave search · 7. Prospeo contact · 8. Equipment mapping · 9. Agent/Principal from SoS · 10. Filing history
Brave + Prospeo
STAGE 4a
RESEARCH
Website scrape · Google Business via Brave · LLM analysis → structured findings · Pushes to Zoho LLMResearch_Note
STAGE 4b
DRAFT
LLM prompt (DeepSeek V3.1) · 7 validation checks: no brands, no placeholders, no fabricated convos · signal tier ★★★ / ★★ / ★ / ☐
STAGE 5
SEQUENCE (N×D Accordion)
N touches × D days · exponential gap curve (~1.5x) · min 7d / max 45d gap · purposes: intro → value → proof → offer → urgency → close · 6 presets: light_45 / standard_60 / deep_90 / extended_120 / urgent_21 / renewal_90
STAGE 6 — GATE
APPROVE + REVIEW
Interactive queue: a=approve / b=burn / p=pause / d=delete / r=regen · reviewed_at must be set · gate must be OPEN · filing-service emails blocked · suppression check
STAGE 7
PUSH TO ZOHO CRM
2-call split · Call 1: all metadata + Sequence + Touch_1-6 · Call 2: Email_Draft_Body2 (send trigger) · Dedup by email → company · Lead_Source = "CT SoS"
ZOHO CRM
Email sent via workflow · replies land in email history · polled back by reply handler
SIDE BRANCHES
LOOP
REPLY HANDLING
Polls Zoho · classifies 5 ways: autoresponder (continue), hard opt-out (burn + suppress), soft opt-out (pause), bounce (flag), engagement (respond)
REGISTRY
SUPPRESSIONS
Email + domain blacklist · checked at 4 gates: harvest, renewals, import, push · auto-populated on opt-out
THROTTLE
SEND THROTTLE
Weekly spread: M25 T25 W20 Th20 F10 · max 15/day · scores sorted descending · renewals unthrottled
INTEL
COMPETITIVE INTEL
Agent displacement rates · principal overlap · address clustering · win rate tracking
EXPORT
OUTSIDE SALES
County-grouped field lists · no digital contact → printable ASCII lists for physical visits
COOLDOWN
COOLING PERIOD
120 days after sequence ends · then eligible for new sequence · state machine: eligible → active → paused → completed → burned
STATE MACHINE
Lead Lifecycle
harvested → scored → enriched → researched → drafted → sequenced → approved → pushed → sent   |→ burned → suppressed   |→ paused → resumed
UCC Lien Pipeline
periodic export quarterly batches · thin pipeline · 2 stages + push
EDA Export (18K rows)
STEP A
FILTER & CURATE
CT only: 11K rows → 1K unique · SMB profile: $5K-$75K/item, <$100K total, professional SICs · Past due: 36+ months since last filing → 55 targets
├── SELLSAT MATCH ──→ 36% matched
FORK
NAME MATCH vs ct.db
19 matched via normalization (strip suffixes, punctuation) · full SoS data available
34 orphans (64%) · no SoS record · created from UCC data only · <OUTREACH ORPHAN> tag in Zoho Description
ARTIFACT
STANDALONE CSV (58 columns)
Single source of truth · no backlog · no state machine · no lifecycle tracking · columns: biz+eq+tm+ct+enr+t1-t6+draft+zoho
SCRIPT 1
enrich_emails.py
Hunter.io domain search (primary) · Brave fallback · picks best by confidence + title · writes ct_email, ct_email_source, ct_email_verified
Hunter.io + Brave
SCRIPT 2
batch_draft.py
LLM (DeepSeek V3.1) · 6-touch × 45 days · email touches 1,2,4,6 · phone calls 3,5 · saves after each lead · --resume support · writes draft_subject, draft_body, t1-t6 columns
Featherless DeepSeek
SCRIPT 3
batch_push.py
2-call split · Call 1: metadata + Sequence trace + Touch_1-6 · Call 2: Email_Draft_Body2 trigger · Dedup by email → company · Lead_Source = "UCC Lien Data" · Orphan tag in Description
ZOHO CRM
Records tagged "UCC Lien Data" · no reply tracking · no suppression check · no send throttle
✗ ✗ ✗ MISSING FROM UCC PIPELINE
MISSING
REPLY HANDLING
No reply polling · no autoresponder detection · no opt-out processing · no engagement response path · replies disappear into Zoho silently
MISSING
SUPPRESSION REGISTRY
No opt-out check before push · no domain blacklist · could re-contact previously burned leads · no compliance layer
MISSING
APPROVAL GATE
No human review before push · no interactive review queue · no burn/pause/delete · draft goes straight to CRM
MISSING
SEND THROTTLE
No weekly spread · no daily cap · no score-based prioritization · pushes all at once
MISSING
RESEARCH STEP
No website scraping · no Google Business enrichment · drafts from UCC + Brave only · less specific content
MISSING
SIGNAL SCORING
No ★★★ / ★★ / ★ tiering · all 55 leads equal · no priority sorting · no readiness weighting
FLAT FILE
State = CSV Row (no lifecycle)
enriched → drafted → pushed   (no pause, no burn, no regen, no review)

Comparison — what each pipeline has that the other doesn't

Dimension SoS Pipeline UCC Pipeline
Data source Live CT SoS API (data.ct.gov)continuous, automated EDA XLSX exportperiodic, manual upload
Trigger signal New business formed → needs first copier Lease expired → equipment unmaintained → displacement window
Outreach posture "We exist, here's who to call"seed-planting, long game "Your equipment financing is expired"urgent, pain-point driven
Storage backlog.json + ct.dbstateful, queryable Standalone CSVstateless, flat file
Contact availability Principal name from SoS filingnamed decision-maker in every lead 64% "Outreach Orphans"no name, no SoS record KEY DIFF
Match rate 100%direct from the registry API 36%name normalization required, 64% unmatchable KEY DIFF
Enrichment depth 10 phases: website, phone, competitor, Prospeo, SoS agent, filing history 1 phase: Brave (Hunter credits exhausted)no website, no competitor detect
Research Website scrape + Google Business + LLM analysis None
Approval gate Interactive review queue (a/b/p/d/r/q) None — push goes direct to CRM
Send throttle Weekly spread + 15/day cap + score priority None — all at once
Reply handling Poll + classify (5-way) + response drafting None — replies go to Zoho silently
Suppression registry Checked at 4 gates + auto-populated on opt-out None
Signal scoring ★★★ / ★★ / ★ / ☐ tiers + readiness weight None — all leads equal
State machine 8 states: harvested → scored → enriched → researched → drafted → sequenced → approved → pushed → sent ± burned/paused 3 states: enriched → drafted → pushed
Pipeline duration Continuous (daily harvest) + 120d cooling period Quarterly batches (per EDA export cycle)
Code footprint ~8,500 lines17 capabilities + CLI + integrations + state ~800 lines3 scripts, no state, no config
Lead_Source in Zoho "CT SoS" (cold) / "Renewal" "UCC Lien Data"
Data source Filter / curation Processing stage LLM / AI CRM Missing capability Side branch Orphan concept Key difference
ABS Pipeline Architecture · built from /root/alwaysbeselling · UCC pipeline: 3 scripts, 800 lines · SoS pipeline: 17 capabilities, ~8,500 lines