Engineering teardown · honest numbers
What you'd build to replicate this.
Yes — you could build this with Claude. Here's every component inside the $10,000 AI Marketing System, with senior-contractor hours and monthly running cost. No padding. We built it; we know what it cost.
Components
33
Senior-dev hours
~837
Replication cost
$105K
At $125/hr senior-contractor rate. Plus ~$158/mo in running infrastructure. Plus the 6–12 months of iteration to figure out which parts actually move the needle.
Foundations
The plumbing nobody sees but everything depends on
Multi-tenant auth + slug routing
Cookie-session auth for owners + admin, per-tenant cookies (CLIENT_PORTAL_COOKIE), slug-aware middleware that gates /clients/[slug]/* + /api/admin/*, plus admin-impersonate-as-client shortcut.
Trap
Cookie-name conflicts and missing slug-scoped queries leak data between tenants — hardest bug to catch in QA.
Per-tenant Postgres schema
client_owners, client_leads, client_lead_messages, client_email_campaigns, client_email_sends, client_tasks, client_budget_items, client_subscriptions, system_costs (with client_slug), recurring_costs (with client_slug). 10+ tables, 15+ indexes, 5+ migrations evolving the schema as patterns emerge.
Trap
Adding client_slug to system_costs after the fact requires backfilling NULL rows + re-checking every cost-logger call site.
Deploy infra · Vercel + Supabase + cron
Vercel Edge + Postgres connection pooling, vercel.json cron schedule (daily digest, every-5-min campaign tick, weekly recurring-cost charge), env-var management across preview + prod.
Trap
Vercel cron quietly stops on stuck deploys — needs a heartbeat row to detect silent failures.
Domain + SSL automation
Per-client domain mapping (yourbiz.com → /clients/yourbiz/*) via middleware host header inspection; cert auto-provisioning.
Lead capture
Where prospects become leads
Public inquire endpoint with audience detection
POST /api/clients/inquire/[code] receives form data, runs detectAudience() that maps free-text intent + landing-page slug to one of 6 segments per client, persists lead, fires SMS alert to owner, queues day-0 email.
Trap
Audience detection regex misses ~15% of intents — needs LLM fallback that costs ~$0.001/lead.
Six audience-specific landing pages
Per-segment copy, hero, social proof, form. Each tagged so capture lands in the right funnel automatically. Real product references (not generic copy).
Trap
Copy that converts is 80% of the work — generic templates pull <1% conversion vs. 6-12% for audience-tuned pages.
Interactive lead magnet (configurator quiz)
Client-side state machine; live SVG that re-renders as the user toggles options; final personalized recommendation; capture form auto-routes to the matching audience funnel.
Trap
Live SVG that updates on every toggle (vs. just at the end) is what 3-5×s the conversion rate — and is the hardest piece to ship.
Lead pipeline UI · audience badges + timeline
Filter by audience, click any lead to see full message timeline (inbound + outbound, color-coded by direction), promote to customer, mark DNC/bounced.
Funnels & messaging
What runs after the form is filled
Email campaign engine
Compose with merge tags, audience-segment filter, schedule for future date, draft/queued/running/sent state machine, idempotent step advancement.
Trap
Idempotency on cron retries is the silent bug factory — without it, a single re-run double-sends every campaign.
Scheduled cron tick · every 5 min
Picks up campaigns whose scheduled_at has passed, fans out to client_email_sends, calls SendGrid, advances state. Built to survive partial failures.
SendGrid event webhook
Receives delivered/open/click/bounce/spam events, maps each to a client_email_sends row, advances send.status forward only, bumps campaign aggregates (open_count, click_count).
Trap
Webhook signature verification is in SendGrid docs but rarely implemented; without it, anyone can spoof opens.
Multi-step, 4-channel audience funnels
Each audience has its own day-by-day drip schedule (Day 0 capture, Day 2, Day 5, Day 14, Day 30) using ALL FOUR channels — email, SMS, voicemail, AI postcard — interleaved by audience preference. Step-skip logic if the lead replies or buys.
Trap
Mixing channels in one funnel multiplies the bug surface — a SMS step that fires before the email arrives looks robotic. The cron has to know which channel ships first per audience.
SMS follow-ups + missed-call text-back
Twilio integration: outbound SMS as funnel touch, missed-call detection via Twilio Studio webhook, auto-reply within 60 seconds.
Voicemail drops
Ringless voicemail vendor integration (Slybroadcast / Drop Cowboy), queueing system, per-audience voicemail script library.
AI postcards via Lob
Physical-mail funnel step. Lob print-and-mail API integration, AI-generated front artwork (tuned per lead's context — tractor model, hunting state, kid's age), personalized back copy, address-validation pipeline, deliverability tracking. Adds ~$1/lead but lifts response 3-5× over email-only sequences.
Trap
Lob's address verification rejects ~8% of inbound addresses — needs a fallback that queues the failure for owner review instead of silently dropping the postcard.
AI layer
Where the system gets smarter without you touching it
AI inbound responder · intent classification
On every inbound reply: classify into 6 intent classes (interested / not-now / objection-price / objection-timing / question / unsubscribe), draft a response in the owner's voice, log to admin queue for one-tap approve/edit/send.
Trap
Voice-matching the owner takes 50+ training examples; generic LLM output tanks reply rates by ~40%.
Hyperloop A/B engine · Wilson CI
Statistical confidence intervals on subject lines + hooks, auto-promote winners once CI lower bound exceeds the runner-up's upper bound. Per-audience winner tracking.
Trap
Most A/B 'winners' aren't statistically significant — without Wilson-CI gating you optimize for noise.
Site audit engine
Crawl a competitor URL, run hero + structure + speed + mobile + copy analysis through Claude, render an audit page with findings + recommended fixes + score.
Cost logger with attribution
Every Claude/SendGrid/Twilio/Places API call logs row to system_costs with client_slug for per-tenant billing splits. Threaded through 30+ caller sites.
Trap
Forgetting client_slug on one cost call silently drops it into the 'house' bucket, costing you margin you can't recover.
Sales operations
If you have a team or partners
Cold-call workspace
Auto-pulls next prospect from queue, displays color-coded script + tips + click-to-dial + click-to-text + one-tap outcome buttons (booked / VM / not interested / DNC) with per-call notes.
Audience-branched script library
Six fully-written CallScripts (intro / qualify / pitch / CTA / voicemail) + branched objection handlers per audience, with template-variable substitution.
Trap
The objections matter more than the openers — generic 'too expensive' replies leave 30% of close potential on the table.
Partner program · apply + approve + track + payout
Public landing pitch, apply form, admin approval queue, partner workspace login, partner_referrals table, manual-payout dashboard with status tracking.
Lead pool guardrails
Filter rules: exclude paid/in-progress/deployed/bounced/unsubscribed/DNC, exclude prospects called by ANY partner in last 30 days, prefer audited prospects, randomize to avoid collisions.
Analytics & control
How the owner watches the system breathe
Real-time activity feed
Joins client_leads + client_lead_messages + client_email_sends + system_costs into one slug-scoped, time-sorted event stream. Polls every 6s in the portal. Pause/resume + 5 summary counters.
Owner portal · 10 tabs
Overview / Leads / Activity / To-Do / Budget / Campaigns / Funnels / Map / Insights / Account. One login. Mobile-responsive. Single source of truth.
Spending dashboard with per-tenant filter
Daily chart, road-to-revenue-goal gauge, recurring + variable cost split, per-client filter, ad-spend logger.
Weekly + monthly digest auto-generation
Cron-rendered Monday digest: leads captured, replies received, campaigns sent, top-performing audience, biggest cost line. Emailed to owner.
Microsoft Clarity heatmaps
Wired into every client site for free session-recording + click/scroll heatmaps. Drop-off insights flow back into the optimization loop.
County-level lead scout map
US county GeoJSON overlay (3000+ features), click any county to scout audience-tagged businesses via Google Places, fly-to-bounds zoom, universal status colors (blue=in-progress, green=completed, red ✕=no results) persisted in localStorage, MLS/USL/MLS-NEXT data layers.
Trap
Loading 3000-feature GeoJSON without bounding-box filtering tanks mobile performance — needs progressive loading.
Ads, SEO, brand
The traffic that feeds the funnel
Google Ads + Meta Ads · self-learning structure
Conversion-event wiring (lead capture, configurator complete, audit request), audience-based campaign architecture, weekly creative rotation, Wilson-CI gating on winners.
Trap
Most 'self-learning' campaigns fail because the conversion-event signal is dirty — needs server-side event firing to dedupe.
Long-term SEO build
Site architecture, content cluster planning, schema markup, internal linking strategy, monthly content cadence, GSC + GA4 wiring.
Custom website
Conversion-tracked, fast (Lighthouse 90+), mobile-first, on-brand, hooked into the rest of the system.
Logo revision + brand polish
Refresh that matches the system's tone — not Fiverr-generic, but not over-engineered.
All in
What it would actually cost you to build
Senior-dev hours
837
~21 full-time weeks
Build cost
$104,625
@ $125/hr
Running cost
$158/mo
infrastructure + APIs
Build cost vs. BlueJays
| Build it yourself (senior contractor) | $104,625 |
| + 6–12 months of iteration to find what works | + $20–50K |
| + Owner's time managing the build | + months |
| BlueJays AI Marketing System | $10,000 |
Hour estimates are honest — what a senior contractor would actually charge to ship each piece, ground-up, today. They do NOT include the 6–12 months of A/B testing, copy iteration, and funnel tuning that turn a working system into one that converts.
What makes this hard to replicate
Not the code. The code is buildable. Here's the actual moat.
The traps in the table above
Every component has a 'trap' — a gotcha we hit and fixed. You'll hit them too. We hit them on someone else's clock.
The 6 audience-specific scripts and funnels
Generic copy converts at 1%. Audience-tuned copy converts at 6-12%. The work to find what each audience responds to is months of iteration — and we've already done it for verticals that match yours.
The voice-match training for the AI responder
A generic GPT reply gets unsubscribed. A voice-matched reply gets a meeting booked. Training data is 50+ examples of you, plus the prompt engineering to keep it on-brand.
The conversion-event wiring across ads + site + email
Server-side event tracking, deduped, cookie-resilient. Most agencies fake this with last-click. We don't.
The integration debt
Vercel + Supabase + SendGrid + Twilio + Google Ads + Meta + Stripe + Claude. Every API has its own quirks. Every quirk we already know.
The discipline to not add features that don't move the metric
Most replicas keep adding tabs and dashboards no owner uses. Knowing what to leave out is the part Claude can't do for you yet.
Or just buy the system
$10,000 ($300 off pay-in-full · 3-pay also available) · live in 30 days · you own every piece · cancel monthly support and the system keeps running.
Get a free audit →