Case Study · Applied AI Systems · Growth

An autonomous GTM & user-acquisition engine, run by 14 AI agents.

A standalone, always-on growth service that turns raw signup events into scored leads, compliant multi-channel outreach, human-quality replies, and activation — with a central Orchestrator coordinating the whole funnel and an operator dashboard keeping a human in command.

Sector · Two-sided digital marketplaceType · Autonomous multi-agent GTM serviceStack · Python · FastAPI · Celery · Claude
14
AI agents across 6 operational layers
3
Outreach channels — Email, SMS, Voice
25
Admin dashboard control surfaces
3min
SLA to auto-reply to an interested lead
01Executive Summary

The whole growth funnel, running itself

The client is a two-sided services marketplace. Growth depends on one hard loop: a new user signs up, and someone has to score them, reach them on the right channel with the right message, answer their reply, and nudge them to their first real action — fast, at volume, and without breaking email/SMS compliance law. Doing that by hand doesn't scale.

The GTM & User Acquisition service is a separate deployment — its own database, its own compute, its own release train — that consumes events from the core product monolith over webhooks and drives the entire post-signup journey autonomously. Fourteen Claude-powered agents, organized into six layers under a central Orchestrator, own segmentation, scoring, channel choice, copywriting, sending, reply handling, and analytics. A human operator supervises everything through a purpose-built admin console — approving, tuning, and overriding, never hand-cranking.

The core mandate: autonomously turn new user signups into activated marketplace participants — from lead scoring through personalized outreach to activation-milestone tracking — without manual intervention, while staying inside TCPA and CAN-SPAM by construction.
02The Challenge

Why a generic marketing stack wouldn't do

⚖️

Compliance is not optional

SMS falls under TCPA — prior consent, 9PM–8AM quiet hours, STOP keyword, a hard 4-per-week cap, at $500–$1,500 per violation. Email falls under CAN-SPAM. Voice is stricter still. A wrong send is a legal event, not a bounced metric.

🧩

Every lead is different

Different service categories need different segments, scoring, channels, and — critically — different voice. Template blasts convert poorly and read as spam.

🔗

Dependent on a live monolith

The GTM engine stalls if the core product is down. It needed idempotent processing, retries, and circuit breakers so a hiccup upstream never double-sends or drops a lead on the floor.

💸

LLM cost has to be governed

Running fourteen reasoning agents on every event gets expensive fast. Spend had to be tiered by task and capped daily — per agent — with hard budget gates in the client itself.

🤖

Autonomy without a runaway

Agents that send email, SMS, and place phone calls on their own are powerful and dangerous. Every autonomous path needed to be gated, auditable, and reversible — human-approvable by default.

🎛️

Operators need real control

"Trust the AI" isn't a product. The team needed live per-agent metrics, on/off switches, prompt tuning, and copy approval — without a redeploy.

03The Architecture

Fourteen agents, six layers, one Orchestrator

Every agent inherits a common BaseAgent contract — Claude reasoning, structured generation, inter-agent Redis pub/sub, and a full audit log. Models are tiered by cognitive load: Opus for strategy, Sonnet for standard reasoning, Haiku for high-volume personalization — so cost tracks value.

OrchestratorOpus · strategic
Orchestratorcoordinates campaign lifecycle, delegates to every layer
IntelligenceSonnet · reasoning
Segmentationbehavioral segments from eventsLead Scoringmulti-factor prioritizationChannel Selectionpicks email / SMS / voice per leadCampaign Advisorstrategy recommendations
OutreachHaiku · volume
Cold EmailInstantly campaigns + sequencesSMS OutreachTelnyx, TCPA-gatedVoiceRetell AI real-time calls
CreativeHaiku · volume
Copywritingknowledgebase-driven, sub-ICP voiceCreative Generationcampaign assets
ConversionSonnet · reasoning
Signup Conversionsignup→active funnelActivationmilestone nudges
AnalyticsOpus · strategic
Growth Analyticsfunnel metrics + trendsAttributiontouchpoint credit

Agents never carry business logic inside Celery tasks — tasks are thin wrappers that instantiate an agent and call execute(). Work flows across priority queues; a Beat scheduler drives recurring jobs; Redis pub/sub lets agents react to one another's output.

04The Pipeline

From a webhook to an activated user

A single user.created event fans out through the agent pipeline. Every hop is idempotent and logged, so the same event can never double-fire and every decision is traceable after the fact.

Ingest

Webhook

Monolith event received, acked in <200ms, queued async.

Understand

Segment + Score

Behavioral segment + multi-factor lead score computed.

Decide

Channel

Best channel chosen — email, SMS, or voice — per consent + fit.

Create

Copy

Sub-ICP-voiced copy generated, compliance-filtered before it ships.

Send

Outreach

Compliant send via Instantly / Telnyx / Retell.

Convert

Reply + Activate

Reply classified & answered; activation milestones nudged.

Closed-loop replies. When a lead answers and the intent classifier scores the reply as interested with high confidence, the system auto-drafts and auto-sends a threaded response within a 3-minute SLA — capturing momentum with no human in the loop. Ambiguous, pricing, or objection replies fall back to a human-review draft instead. The autonomous path is off-by-default and flag-gated.
05Multi-Channel Outreach

Three channels, each compliant by construction

Live

📧 Email

Cold acquisition through Instantly with managed domain warmup and sequence rotation; lifecycle & marketing mail through AWS SES.

  • CAN-SPAM unsubscribe enforced
  • Up to 26 A/Z subject/body variants per step, winner-tracked
  • Two-way inbox with AI-drafted, thread-aware replies
Live

💬 SMS

Trigger-driven SMS via Telnyx, with Ed25519-verified webhooks and full delivery observability in the dashboard.

  • TCPA consent gate + STOP keyword revocation
  • Quiet-hours-aware scheduling (21:00–08:00 local shifted)
  • Max 4/week cap; every send & status tracked
◐ Feature-flagged

📞 Voice

Real-time, two-way AI voice calls via Retell AI — turn-by-turn qualification and activation nudges as a third channel.

  • AI-disclosure & guardrails locked server-side on every write
  • Stricter voice-consent gate than SMS
  • Operator-managed agents; ships behind a consent-pending flag
06The Differentiator

Copy that sounds like a person, not a template

Generic AI copy is the fastest way to look like spam. The Creative layer is driven by a 20-file copywriting knowledgebase — a curated voice playbook — loaded at startup and injected into every generation. Copy is differentiated per sub-ICP(the lead's service category), so two different segments receive genuinely different openings, angles, and seasonal hooks.

A rotation counter guarantees two consecutive generations for the same segment don't repeat themselves — no two leads in a cohort get the same first line.

A compliance pre-filter stands between the AI and the world. Every generated message runs a regex + Haiku-critic gate before it can reach a human queue or a send. Banned vocabulary and word-count violations retry, then fall back; corporate-structure or legal violations escalate with zero retries. On failure the system escalates the original output — it never silently swaps in a static template and pretends the AI succeeded.

Escalated copy no longer piles up for a human, either — an auto-retry engine re-runs render → compliance → approve when a template becomes available, recovering variants automatically instead of stranding them in a review queue.

07Human in Command

Agent Studio — tune the fleet without a deploy

Autonomy only ships when a human can steer it. The admin console evolved from a static roster into a live control surface, then into a full runtime tuning studio — all backed by a per-agent override store, so changes take effect across web, worker, and beat within seconds and never require a redeploy.

📊

Live metrics & kill switches

Per-agent success rate, token spend, latency, and run counts straight from the audit log — plus enable/disable toggles that flip an agent off across every process in seconds.

✍️

Prompt & parameter tuning

Edit an agent's system prompt, switch its model tier (Opus/Sonnet/Haiku), adjust temperature and cadence — at runtime, per agent.

👍

Approval-gated feedback loop

Operators rate runs 👍/👎. Ratings become proposedfew-shot examples that only enter an agent's runtime behavior after a human approves them — augment-not-replace, always revertible.

🧪

Evaluation harness

A structured eval layer scores agent behavior against reference cases, so tuning changes are measured rather than guessed — closing the train/tune/verify loop.

Hard invariant across the whole studio: compliance guardrails can only ever tighten, feedback is never auto-injected without approval, and every promotion is audited and reversible. The operator can make the system smarter — they cannot accidentally make it non-compliant.
08Engineering Rigor

The hard part was making autonomy safe

A system that sends legally-regulated messages on its own has to be defended at every seam. These are patterns the build institutionalized — many hard-won from real production near-misses.

No silent fallbacks

When AI output fails a check, the system escalates the original — it never substitutes a static template and hides the failure. A single early lapse hid four bugs; the rule is now enforced by construction and by test.

🔁 Idempotent by design

Every webhook and every send de-dupes on a stable id. Postgres partial unique indexes enforce single-default and single-primary invariants at the database layer, not just in code.

🧮 Budget-gated LLM calls

A daily token cap (default 5M) is enforced per agent inside the Claude client itself — no reasoning path can bypass the budget gate, and cost is tiered Opus→Sonnet→Haiku by task.

🐘 Postgres-truth testing

SQLite masks real Postgres behavior — partial-index conflicts, GROUP-BY expressions, string-function differences. Critical paths are smoke-tested against live Postgres, not just the fast in-memory suite.

🔐 Verified webhooks

Telnyx (Ed25519) and Instantly webhooks are signature-verified before any state changes. Delivery events are mirrored into the DB and surfaced in the dashboard so nothing lives only in a vendor console.

🚩 Everything ships behind a flag

Auto-send, auto-opt-out, SMS dispatch, and voice outreach all default off and turn on per-flag — so a new autonomous path is proven in the dark before it ever touches a real lead.

Python 3.12FastAPICelery + BeatSQLAlchemy 2.0 asyncasyncpg / PostgreSQLRedis pub/subAlembic · 54 migrationsClaude — Opus/Sonnet/HaikuInstantlyTelnyxAWS SESRetell AIReact 18 + Vite + TSTanStack Querystructlog + SentryAWS ECS · GitHub Actions → ECR
09Delivery

Shipped in disciplined milestones

v1.0 · Phases 1–15

The autonomous funnel

Orchestrator + all six layers, webhook ingestion, lead scoring, segmentation, channel selection, Instantly cold email with sequence variants, Telnyx SMS with TCPA enforcement and observability, the knowledgebase-driven copy engine with its compliance filter, and the two-way inbox with human-gated AI draft replies.

v2.0 · Phases 16–23
Shipped 2026-06-03

Conversational AI voice

A third outreach channel. Re-architected mid-milestone from a self-built media pipeline to Retell AI, which owns the real-time speech loop, with AI-disclosure and guardrails locked server-side and operator-managed voice agents. Ships behind a consent-pending flag.

Post-v2.0 · Phases 25–29

Fast auto-reply + Agent Studio

The 3-minute auto-send loop for interested replies, then the Agent Studio arc: live metrics and toggles, runtime prompt/parameter tuning, an approval-gated feedback loop, and an evaluation harness.

In flight

Lifecycle email via AWS SES

Extending owned-audience lifecycle and marketing mail on SES alongside the Instantly cold-email channel — the next stage of the activation story.

10Where It Landed

A production system, not a prototype

14 agents

coordinating the full post-signup funnel autonomously under one Orchestrator, tiered across Opus, Sonnet, and Haiku.

3 channels

email, SMS, and voice — each compliant with TCPA / CAN-SPAM by construction, not by afterthought.

3-minute SLA

from an interested reply to an auto-sent, thread-aware response — momentum captured with no human in the loop.

Zero-deploy tuning

prompts, model tiers, kill switches, and approved examples take effect fleet-wide in seconds.

39 tables · 54 migrations

a durable, versioned data model with a full per-agent audit trail behind every decision.

25 surfaces

of operator control — leads, campaigns, inbox, sequences, voice, copy review, analytics, and the Agent Studio.

The strategic outcome: the client's growth loop no longer depends on head-count. Signups flow in, the agent fleet does the scoring, messaging, replying, and nudging, and the team's job shifts from operating the funnel to supervising and improving it — reviewing, tuning, and approving from a single console while the system runs itself.

Idea in your head? Let’s
bring it to life.

Got a project? A wild idea? Or just want to say hey?
We're here for all of it — reach out anytime.

I’m looking for a help with:

I’m hoping to stay around of (in USD):