← all systems
shippedSwoop TutorsOutboundAug – Dec 2025

Outbound engine

The first outbound engine for a 4-person startup: Clay enrichment, Python cleaning, ICP scoring, HubSpot and Zapier sequencing, and a dashboard that told us who actually converts.

GTM Engineering Intern · sole builder
ClayClayPythonpandasPostgreSQLHubSpotZapierGmailReact
~/systems/swoop-outbound
running
  1. ClayClay tablessource · 10k cos
  2. Clean + dedupepython · pandas
  3. ICP scoringattrs → tier
  4. ClayEnrich contactsclay · waterfall
  5. HubSpot synccrm · lifecycle
  6. A/B sequenceszapier · 100/var
  7. Reply dashboardreact · segment
tool agent gate / human record in flight
10,000+
records cleaned
15%
cold reply rate
40%
warm reply rate
50
calls booked
Problem

Swoop had no outbound motion. Leads lived in spreadsheets, nobody knew which segments replied, and every send was manual. They needed a pipeline that went from raw company data to booked meetings, and data that showed where to focus.

Architecture
  1. 01

    Source

    Built Clay tables of 10,000+ companies across target industries and geographies.

  2. 02

    Clean

    Python (pandas) and SQL deduplicated and normalized the records, then engineered ICP attributes like size band, vertical, and consumer vs. B2B.

  3. 03

    Qualify

    Scored every account against the ICP, which qualified 3,000 accounts into the first outbound pipeline.

  4. 04

    Enrich + sync

    Clay contact enrichment for decision-makers, pushed into HubSpot with lifecycle stages so the team had one source of truth.

  5. 05

    Sequence

    Zapier triggered sequences with sequential A/B tests on subject lines and send timing, 100 sends per variant per week.

  6. 06

    Measure

    A Python + React reply-rate dashboard by segment replaced manual tracking, then I designed the SQL schema and migration to a custom CRM that is still in use.

Design decisions
  • →Sequential A/B tests instead of a big multivariate test. At 100 sends per variant per week, one variable at a time is the only way to get a readable signal.
  • →Cleaned the data before enriching it. Deduping first cut enrichment credits and kept duplicate prospects from getting double-sent.
  • →Built the dashboard around segments, not totals. That's how smaller consumer-industry accounts showed up as the best-converting segment.
Results

15% cold and 40% warm reply rates across 5,000+ prospects, 50 booked calls and 3 qualified demos. The dashboard's segment finding changed who the team targeted, and the CRM I designed is still in use today.

What I'd build next
  • +Add intent signals (hiring, funding, tech installs) as Clay triggers instead of static lists.
  • +Replace rules-based ICP tiers with an LLM research agent that writes a one-line 'why now' per account.
Next system
RiZE Maps: Hotel outbound agent
→