📡

OUTREACH COMMAND CENTER

Implementation Guide // Build It. Launch It. Exceed HubSpot.
// HubSpot wants $17,400/year to send emails to people already in your CRM. This guide shows you how to build something better for $0, and keep the $17,400 for Google Ads where it generates $215,760 in projected revenue (based on historical ROAS).

📡 MORPHEUS INTELLIGENCE DASHBOARD

🏠
MAIN DASHBOARD
morpheus.callbrightside.com
📜
SACRED HTML
Data Weapons Plan
⚔️
KEYWORD STRATEGY
40,847 Keywords Mapped
🧠
CUSTOMER INTEL
5,425 Customers Profiled
💣
FULL ARSENAL
Complete Keyword Database

// Quick-access links to the Morpheus intelligence stack. Open any dashboard for real-time data.

🏭

THE FACTORY ANALOGY

Think of outreach like a factory. HubSpot sells you the entire factory, the building, the machines, the conveyor belts, the loading dock. Impressive. Expensive. But BSP doesn't need a factory. BSP needs a kitchen.

You already have the ingredients (3,700 contacts in ServiceTitan). You already have the recipes (outreach templates in Nexus). You already know who's hungry (sewer hotspot data, dormant customers, unsold estimates). All you need is the oven, something that sends the email.

HubSpot charges $1,450/month for the factory.
Google Sheets + Apps Script + Gmail is the kitchen. It does the same job for $0.

And here's the thing about kitchens: the chef matters more than the equipment. You are the chef. Nexus is your sous chef. The recipes are already written.

WHAT WE'RE BUILDING

// The complete email outreach system. No HubSpot. No monthly fee. Full control.

🏗️ SYSTEM ARCHITECTURE

🔧
ServiceTitan
3,700 contacts
Job history
Revenue data
➡️
🤖
Nexus Brain
Segments contacts
Picks templates
Schedules sends
➡️
📊
Google Sheets
Contact database
Send queue
Results tracker
➡️
⚙️
Apps Script
Sends emails
Tracks opens
Manages sequences
➡️
📧
Gmail
Delivers email
From BSP domain
500/day capacity
➡️
💰
Revenue
Customer opens
Calls BSP
Books job

// The intelligence is in Nexus. The delivery is in Gmail. The tracking is in Sheets. HubSpot is not needed at any step.

HUBSPOT vs THE KITCHEN

// Feature by feature. What they charge $1,450/mo for vs what we build for $0.
Feature
HubSpot ($1,450/mo)
Our Build ($0/mo)
📧 Email sequences
Visual drag-drop builder
Google Sheets Send Queue + Apps Script timed triggers + Nexus auto-segments ✅

📧 HOW OUR EMAIL SEQUENCES WORK (No Visual Builder Needed)

// HubSpot has a drag-drop builder. We have something better: a data-driven automation pipeline that sends the RIGHT email to the RIGHT person at the RIGHT time.

🤖
NEXUS
detects trigger
New dormant customer
Unsold estimate ages 7d
Storm warning issued
➡️
📋
SHEETS
queues email
Adds row to Send Queue
Contact + Template
+ Scheduled Date
➡️
⚙️
APPS SCRIPT
sends at 9 AM
Merges contact data
Adds tracking pixel
Wraps links for clicks
➡️
📧
GMAIL
delivers email
From BSP domain
Personalized content
Unsubscribe link
➡️
📊
SHEETS
tracks results
Open/click tracking
Conversion matching
Revenue attribution
🔄 DRIP SEQUENCES
Day 0: Welcome email
Day 7: Follow-up
Day 14: Value offer
Day 21: Last chance

Each step auto-queued. If customer books before Day 14, sequence stops. Apps Script checks ST for bookings before each send.
🌧️ EVENT TRIGGERS
Storm warning → sewer zip email
Job completed → review request
Estimate ages 7d → follow-up
Customer dormant 6mo → reactivation

Nexus detects the event. Sheets queues the email. Apps Script sends it. No human step.
🎯 A/B TESTING
Send variant A to 50%
Send variant B to 50%
After 48 hours: compare open rates
Winner becomes default

Apps Script splits the Send Queue by row number (odd/even). Results tab tracks which variant converts. Data drives creative.

💡 HubSpot gives you a visual builder. We give you a data-driven automation pipeline. The visual builder makes it EASY to set up. Our system makes it SMART to run. It sends based on what the DATA says, not what a human drags into a canvas.

👥 Contact segmentation
Filter builder in UI
Nexus generates segments from ST + PostgreSQL 🔥
📊 Open/click tracking
Built-in analytics
Tracking pixel + link wrapping in Apps Script ✅
📝 Personalization
Merge tokens
Full ST data: name, zip, last job, pipe type, spend 🔥
🔄 Automation triggers
Workflow builder
Nexus timers trigger Sheets queue daily ✅
💰 Revenue attribution
HubSpot data only
Full ST revenue tied to every email sent 🔥
🛡️ Unsubscribe mgmt
Built-in
Unsubscribe link + Sheets column flag ✅
MONTHLY COST
$1,450
$0

BUILD TIMELINE

// 6 phases. 3 weeks to launch. Then it evolves forever.
🔧
PHASE 1
BUILD
Week 1
~8 hours
🔌
PHASE 2
WIRE UP
Week 1-2
~4 hours
🚀
PHASE 3
LAUNCH
Week 2-3
~3 hours
📊
PHASE 4
MONITOR
Week 3+
30 min/day
🧬
PHASE 5
EVOLVE
Month 2+
Ongoing
🎨
AUDREY
DESIGN
Parallel track
~12 hrs Week 1-3
💡
PHASE 6
EXCEED
Month 3+
HubSpot beaten
🔧

PHASE 1: BUILD

Week 1 // ~8 hours // Robert builds, Nexus assists

🍳 Kitchen Analogy: This is setting up the kitchen. Shelves, pots, knives, cutting board. Before you cook anything, the workspace needs to be ready.

1️⃣ Create the Master Google Sheet
💻 Open Google Sheets ➡️ New Spreadsheet ➡️ Name it "BSP Outreach Command Center"
📋 Create these tabs:
  ✅ Contacts - Name, Email, Phone, Zip, Last Job Date, Job Type, Revenue, Persona, Status
  ✅ Send Queue - Contact ID, Template, Scheduled Date, Status (pending/sent/opened/clicked)
  ✅ Templates - Template Name, Subject Line, Body (HTML), Persona Target, Campaign
  ✅ Campaigns - Campaign Name, Start Date, Status, Sends, Opens, Clicks, Conversions, Revenue
  ✅ Unsubscribes - Email, Date Unsubscribed, Reason
  ✅ Results - Date, Campaign, Sent, Opened, Clicked, Booked, Revenue
⏱️ Estimated: 45 minutes
2️⃣ Import Contacts from ServiceTitan
🤖 Nexus already pulls ST data nightly (ETL pipeline at 4 AM)
📋 Run: python3 /opt/nexus/nexus/scripts/nexus_outreach_command_center.py
📥 Export the outreach lists JSON to CSV
📊 Import CSV into the Contacts tab
🏷️ Auto-tag each contact with persona (Emergency Eric, Renovation Rachel, Maintenance Mike) based on job history
⏱️ Estimated: 30 minutes (Nexus generates the lists, you just import)
3️⃣ Create Email Templates
📝 Templates already written in the Outreach Command Center (4 campaigns):
  📧 Dormant Reactivation - "It's been a while" (past customers 6+ months)
  🌧️ Sump Pump Checkup - "Is your pump ready for storm season?"
  🏠 Sewer Hotspot - "Your home is in a high-risk zone"
  💸 Estimate Follow-Up - "Still thinking about your project?"
📋 Copy each template into the Templates tab with subject line + body
⚠️ IMPORTANT: Add [UNSUBSCRIBE_LINK] placeholder to every template footer (CAN-SPAM required)
⏱️ Estimated: 1 hour (templates exist, just format for Sheets)
4️⃣ Build the Apps Script Email Engine
💻 In Google Sheets ➡️ Extensions ➡️ Apps Script
📝 Nexus will generate the full Apps Script code for you. It handles:
  ✅ Reading the Send Queue tab for pending emails
  ✅ Merging contact data into template placeholders ([NAME], [ZIP], [LAST_JOB])
  ✅ Sending via Gmail API (from robert.dove@callbrightside.com or a dedicated outreach@ address)
  ✅ Tracking pixel insertion (1x1 transparent image that fires when opened)
  ✅ Link wrapping (rewrites links to track clicks through a redirect)
  ✅ Unsubscribe link generation
  ✅ Logging results back to the Results tab
  ✅ Daily send limit enforcement (max 100/day to start, scale to 500)
📋 Save and authorize the script (Gmail send permission required)
⏱️ Estimated: 2 hours (Nexus writes the code, Robert reviews and deploys)
5️⃣ Set Up Time-Based Triggers
💻 In Apps Script ➡️ Triggers (clock icon) ➡️ Add Trigger
  ⏰ sendPendingEmails - runs daily at 9 AM CT (when customers are checking email)
  ⏰ checkForOpens - runs every 6 hours (updates tracking data)
  ⏰ importNewContacts - runs daily at 5 AM (pulls fresh data from Nexus export)
📋 Each trigger runs automatically. No human action needed after setup.
⏱️ Estimated: 15 minutes
6️⃣ Build the Unsubscribe System
🌐 Create a simple Google Form: "Unsubscribe from Bright Side Plumbing emails"
📋 Form responses auto-populate the Unsubscribes tab
⚙️ Apps Script checks Unsubscribes before every send (CAN-SPAM compliance)
🔗 Generate the form URL ➡️ this becomes [UNSUBSCRIBE_LINK] in templates
⚠️ LEGAL REQUIREMENT: Every email must have a working unsubscribe link
⏱️ Estimated: 20 minutes
🔧 Phase 1 Total: ~8 hours | Output: Complete email system ready to send
🔌

PHASE 2: WIRE UP

Week 1-2 // ~4 hours // Connect Nexus intelligence to the email engine

🔌 Kitchen Analogy: The kitchen is set up. Now connect the gas line, turn on the water, plug in the fridge. The ingredients are in ServiceTitan. The recipes are in Nexus. This step connects the pantry to the countertop.

1️⃣ Connect Nexus ETL to Google Sheets
🤖 Nexus writes outreach lists to JSON nightly
⚙️ Build a Python script that pushes JSON ➡️ Google Sheets API
📋 New contacts from ST appear in the Contacts tab every morning
🔄 Dormant customers auto-detected (no job in 6+ months)
🏠 Sewer hotspot contacts auto-tagged by zip
⏱️ Estimated: 2 hours (Nexus writes the integration script)
2️⃣ Build Campaign Auto-Queuer
🤖 When Nexus adds new dormant contacts ➡️ auto-add to Send Queue with "Dormant Reactivation" template
🌧️ When sump pump season starts ➡️ queue sump pump template for all homeowners
🏠 When weather alert triggers ➡️ queue sewer hotspot template for target zips
💸 When new unsold estimate ages 7 days ➡️ queue estimate follow-up
📋 Each campaign has rules. Nexus enforces them. No manual queuing.
⏱️ Estimated: 1.5 hours
3️⃣ Wire Revenue Tracking
💰 When a contact who received an email books a job in ST ➡️ mark as converted
📊 Nexus compares: email recipients list vs ST new jobs ➡️ matches by email/phone
📋 Results tab shows: emails sent ➡️ opened ➡️ clicked ➡️ booked ➡️ revenue
🔥 THIS is what HubSpot can NOT do: tie email opens directly to ST job revenue
⏱️ Estimated: 30 minutes (Nexus handles the matching)
🚀

PHASE 3: LAUNCH

Week 2-3 // ~3 hours // First emails go out. Revenue starts.

🚀 Kitchen Analogy: First meal. Start with something simple. Don't try to cook a 7-course dinner on day one. Make a great omelette. Prove the kitchen works. Then scale up.

1️⃣ Test Send (10 emails to yourself + team)
📧 Send to: Robert, Stephanie, Kalen, Ashton, Audrey
🔍 Verify: personalization works, links work, unsubscribe works, looks good on mobile
✅ Fix any formatting issues before real send
⏱️ 30 minutes
2️⃣ Campaign 1: Dormant Customer Reactivation (50 contacts)
👥 Target: top 50 dormant customers by lifetime spend
📧 Template: "It's been a while" reactivation
📅 Schedule: Send Tuesday 9 AM (best open rates for service businesses)
📊 Expected: 25-35% open rate, 3-5% click rate, 1-2 bookings
💰 Revenue potential: 1-2 jobs x $2,600 avg = $2,600-$5,200 from first 50 emails
⏱️ 30 minutes to queue + review
3️⃣ Campaign 2: Sump Pump Spring Checkup (all homeowners)
🌧️ Target: all contacts in sewer hotspot zips
📧 Template: "Is your sump pump ready for storm season?"
📅 Schedule: stagger over 5 days (100/day max)
📊 Expected: 20% open rate, 2% click rate, checkup bookings
💰 Revenue potential: 35% of checkups find work = $18,270/season
⏱️ 1 hour to segment + queue
4️⃣ Campaign 3: Estimate Follow-Up (automated drip)
💸 Target: every unsold estimate over $1,000
📧 Template: 3-email sequence (Day 7, Day 14, Day 21)
🔄 Automated: Nexus detects new unsold estimates daily, queues follow-ups
📊 Expected: 12% conversion on follow-ups
💰 Revenue potential: depends on estimate pipeline (Audrey said $5K-$15K jobs walking out)
⏱️ 1 hour to build drip logic
📊

PHASE 4: POST-LAUNCH MONITORING

Week 3+ // 30 min/day // Watch the numbers. Adjust.
📊 Daily Check (5 minutes)
📋 Open the Results tab. Check: sends, opens, clicks, bounces. Flag any issues. Nexus posts a summary to #lab automatically.
📧 Weekly A/B Test (15 minutes)
🔍 Test subject lines: send variant A to 50%, variant B to 50%. Winning subject line becomes the default. Document in Campaigns tab.
💰 Revenue Attribution (10 minutes weekly)
📊 Nexus matches email recipients to ST bookings. Did the dormant reactivation email lead to a job? What was the revenue? Track ROI per campaign.
🧬

PHASE 5: EVOLUTION

Month 2+ // The system gets smarter over time

🧬 Kitchen Analogy: A good chef doesn't cook the same meal forever. They taste, adjust, try new recipes, learn what the customers love. The system evolves because the DATA evolves. Every email sent teaches us something.

🧠 Smart Send Time
Track which hour/day gets best open rates. Auto-shift send times. Most plumbing customers open at 7-9 AM.
🎯 Persona-Based Templates
Emergency Eric gets "we respond in 30 minutes." Renovation Rachel gets "see what our camera found." Different people, different messages.
📊 Win/Loss Analysis
Which templates convert? Which don't? Kill losers. Clone winners. Data-driven creative.
🌧️ Weather Triggers
NWS storm warning ➡️ auto-queue sewer hotspot email to target zips. The system reacts to weather, not just calendars.
💸 Re-engagement Sequences
If someone opens but doesn't click ➡️ send a follow-up 3 days later with a stronger CTA. Multi-touch, not spray-and-pray.
🔄 Lifecycle Campaigns
Job completed ➡️ Day 3: review request ➡️ Day 30: "How's everything working?" ➡️ Day 180: maintenance reminder ➡️ Day 365: annual checkup offer. Automated lifecycle.
🎨

AUDREY'S ROLE: DESIGN LEAD

Spearheads ALL design elements // Every visual the customer sees comes from Audrey

🎨 Kitchen Analogy: Robert builds the kitchen. Audrey is the food stylist. Nobody eats ugly food, no matter how good it tastes. The email engine can send a million emails, but if they look like spam, they get deleted. Audrey makes them look like something you WANT to open.

👑 WHAT AUDREY OWNS IN THIS BUILD

📧 EMAIL DESIGN
🎨 Email header graphics (BSP branded, warm, professional)
🖍️ Email template layouts (mobile-first, not developer ugly)
🖼️ Hero images for each campaign (sump pump, sewer, seasonal)
☀️ Sunny graphic integration (overlays, watermarks)
🎨 Color palette enforcement (BSP brand colors, not Matrix green)
⏱️ Phase 1: ~3 hours for initial template designs
📱 SOCIAL MEDIA CREATIVE
🎬 Sunny in KC video content (films, directs, edits)
📸 Instagram Reels + Stories + Highlight covers
🖼️ Sunny's Bright Spots photo overlays
📱 TikTok + Facebook Reels formatting
🎨 Platform-specific templates (IG vs TikTok vs FB sizing)
⏱️ Ongoing: 1 outing/week, 4-6 content pieces per outing
🏠 COMMUNITY EVENT MATERIALS
🖼️ Booth banners for festivals + home shows
🧲 Fridge magnets (BSP logo + phone number + Sunny)
📋 "Free Plumbing Checkup" sign-up sheet design
📇 QR code cards linking to callbrightside.com
🖍️ Leave-behind flyers (seasonal: spring sewer, fall winterize)
⏱️ Phase 2: ~4 hours for initial booth kit
🌐 BRAND IDENTITY ASSETS
🎬 Logo animation: 3-sec intro sting, subtle loop, 5-sec reveal
📱 Static watermark for ALL video content
📧 Animated GIF logo for email signatures
👷 Tech spotlight graphics for service page sidebars
🌍 "Meet the Team" page design (callbrightside.com/our-team)
⏱️ Phase 1-2: ~5 hours for core brand assets

🗓️ AUDREY'S BUILD TIMELINE

🎨 Week 1: Email Template Design
Design 4 email templates (dormant reactivation, sump pump, sewer hotspot, estimate follow-up). Mobile-first. BSP brand colors. Sunny graphic in header. Robert provides the copy, Audrey makes it beautiful.
⏱️ ~3 hours
🎬 Week 1-2: First Sunny in KC Outing
Pick a KC coffee shop or food truck near a job site. Film 1-2 short vertical videos with a tech. Edit with BSP watermark + Sunny graphic overlay. Post to Instagram Reels + Stories. Save to "Sunny in KC" Highlight.
⏱️ ~2 hours (filming + editing)
🖼️ Week 2: Booth Materials Kit
Design: pull-up banner, fridge magnets, QR code cards, sign-up sheet, seasonal flyer. These get used at Farmers Market, Fall Festival, Home Shows, and trade school visits.
⏱️ ~4 hours
🎬 Week 2-3: Logo Animation Package
Create 3 versions: 3-sec intro sting, subtle story loop, 5-sec YouTube reveal. Gold sun rays animate outward. Static watermark version for all video. Animated GIF for email signatures.
⏱️ ~5 hours (or $200-500 Fiverr if outsourced)
🔄 Week 3+: Ongoing Content Cadence
1 Sunny in KC outing/week. 4-6 content pieces per outing. Monthly refresh of email templates based on A/B test results. Seasonal creative updates. This is Audrey's ongoing rhythm through Q4.
⏱️ ~4 hours/week ongoing

🤝 ROBERT + AUDREY HANDOFF

💻
ROBERT BUILDS
Google Sheets structure
Apps Script engine
Nexus data pipeline
Send queue automation
Tracking + analytics
UTM links + attribution
🤝
🎨
AUDREY DESIGNS
Email templates (visual)
Social media content
Booth materials
Logo animations
Brand consistency
Sunny in KC creative

// Robert makes the machine. Audrey makes it beautiful. Customers see Audrey's work. The machine is invisible. That's the point.

🎯

CONTACT SCORING ENGINE

// HubSpot charges $1,450/mo for "predictive" lead scoring. We score contacts using data HubSpot literally cannot see.

🎯 Kitchen Analogy: HubSpot scores leads based on email opens and page views — what they DID on the website. We score leads based on who they ARE — their job history, their spend, their zip code risk, their pipe age, their persona. HubSpot watches behavior. We know the customer.

🔬 THE SCORING EQUATION

Score = (Spend × 0.30) + (Recency × 0.25) + (Zip Risk × 0.20) + (Persona × 0.15) + (Sewer History × 0.10)
💰
SPEND
30%
Lifetime $ from ST
$10K+ = 100 pts
$5K+ = 70 pts
$1K+ = 40 pts
📅
RECENCY
25%
Days since last job
<30d = 100 pts
<90d = 70 pts
<180d = 40 pts
🏠
ZIP RISK
20%
Sewer hotspot score
Cast iron = 100 pts
PVC pre-90 = 50 pts
Modern = 10 pts
👤
PERSONA
15%
Persona classifier
Rachel = 100 pts
Eric = 80 pts
Mike = 60 pts
🔧
SEWER
10%
Past sewer work?
Yes = 100 pts
Camera only = 50
None = 0 pts

⚙️ HOW IT RUNS

🔬 STEP 1: MATH
Score = weighted sum of 5 factors. Same formula for every contact. Provable. Auditable.
score = spend*0.3 + recency*0.25 + zip*0.2 + persona*0.15 + sewer*0.1
⚙️ STEP 2: CODE
PostgreSQL query runs nightly against bsp_analytics database. Scores all 3,700 contacts in <2 seconds.
SELECT *, weighted_score FROM v_contact_scores ORDER BY score DESC
📋 STEP 3: SPREADSHEET
Top 50 contacts exported to CSV for Outreach Command Center. Stephanie can see who ranks highest and why.
=SUMPRODUCT(weights * factor_scores)
🤔 HUBSPOT'S SCORING
📧 Opened an email? +5 points
🌐 Visited pricing page? +10 points
📋 Filled a form? +20 points

Problem: Only knows what happened ON the website. Doesn't know the customer's job history, their home's pipe age, their zip code risk, or how much they've spent with BSP.
🎯 OUR SCORING
💰 Spent $8K with us last year? +100 points
🏠 Lives in 66208 (cast iron pipes)? +100 points
🔍 Had a camera inspection but no repair? +80 points
📅 Last job was 7 months ago? +70 points

Advantage: We score based on WHO THEY ARE and WHAT THEY NEED, not just what they clicked. Our data is deeper because it comes from ServiceTitan + sewer hotspot engine + persona classifier.

💡 HubSpot's "predictive" scoring predicts based on website behavior. Our scoring predicts based on plumbing reality. A homeowner in a 1955 cast iron zip who spent $8K last year and hasn't called in 7 months is a hotter lead than someone who opened an email twice. Our equation knows that. HubSpot doesn't.

📱

SMS ENGINE

// HubSpot charges $500+/mo for SMS. We use Twilio at $0.0079/text. Same result. 63x cheaper.

📱 Kitchen Analogy: HubSpot's SMS is like ordering delivery from a fancy restaurant — you're paying for the brand name, the building, the waitstaff. Twilio is like buying the same ingredients at cost and cooking it yourself. Same meal. $0.0079 instead of $500.

⚙️ HOW IT WORKS

🤖
NEXUS
detects event
Missed call detected
Estimate unsold 3 days
Job completed today
➡️
🐍
PYTHON
calls Twilio API
twilio.messages.create()
Personalized text
From BSP number
➡️
📱
CUSTOMER
gets text
"Hi [NAME], sorry we
missed your call.
Call us at 913-963-1029"
➡️
📞
CUSTOMER
calls back
Within 30 seconds
of the missed call
= recovered lead

📱 AUTOMATED SMS TRIGGERS

📞 MISSED CALL
Nexus detects missed call in 3CX/ST. Within 30 seconds: "Hi [NAME], sorry we missed you. A Bright Side tech is available now. Call (913) 963-1029 or reply to this text."

Impact: $162K/yr in recovered leads
💸 ESTIMATE FOLLOW-UP
Estimate unsold for 3 days. Text: "Hi [NAME], just checking in on your [SERVICE] estimate. Questions? Call (913) 963-1029 or reply here. We're happy to walk through the options."

Impact: 12% conversion on follow-ups
⭐ REVIEW REQUEST
Job completed today. Text: "Hi [NAME], thank you for choosing Bright Side! If we earned it, we'd love a Google review: [LINK]. It helps other KC homeowners find us."

Impact: 5 reviews/week target

🐍 THE CODE (4 lines)

from twilio.rest import Client
client = Client(TWILIO_SID, TWILIO_AUTH)
client.messages.create(
  body="Hi [NAME], sorry we missed your call. Call (913) 963-1029",
  from_="+1BSPTWILIONUMBER", to=customer_phone)

// pip install twilio. API keys stored in Google Cloud Secret Manager. Runs on the Nexus VM. Same infrastructure as everything else.

🤔 HUBSPOT SMS
$500+/mo
Add-on to Professional plan
On top of $1,450/mo base
Limited to HubSpot workflows
📱 TWILIO ON VM
$0.0079/text
200 texts/month = $1.58/mo
Integrated with Nexus triggers
Works with ANY automation

💡 HubSpot: $500/mo for SMS. Twilio: $1.58/mo for the same volume. That's 316x cheaper. And our SMS triggers are smarter because they fire from ServiceTitan events (missed calls, completed jobs, aging estimates) — data HubSpot doesn't have.

🔧 BUILD STEPS (2 hours)

1️⃣ Sign up for Twilio ($0 to start, pay per text)
twilio.com ➡ Get Account SID + Auth Token + a phone number ($1/mo)
⏱️ 10 minutes
2️⃣ Install on VM: pip install twilio
Store credentials in .env on VM (same as all other API keys)
⏱️ 5 minutes
3️⃣ Build nexus_sms_engine.py
Nexus writes it. Triggers: missed call (3CX/ST), estimate follow-up (ST), review request (ST), appointment reminder (ST). Each trigger = one Twilio API call.
⏱️ 1 hour (Nexus writes the code)
4️⃣ Create systemd timer (every 5 minutes)
Checks for new triggers. Sends queued texts. Logs results. Respects quiet hours (8 AM - 8 PM only, TCPA compliance).
⏱️ 15 minutes
⚠️ SMS COMPLIANCE (TCPA / CAN-SPAM)
✅ Explicit opt-in required (captured during booking in ST)
✅ Every text includes: "Reply STOP to opt out"
✅ Quiet hours enforced: 8 AM - 8 PM local time only
✅ Brand identified: "Bright Side Plumbing" in every message
✅ Opt-out list maintained in Google Sheets (same as email unsubscribes)
💡

PHASE 6: EXCEED HUBSPOT

Month 3+ // Features HubSpot literally cannot do
🔥 Sewer Hotspot + Email = Precision Targeting
HubSpot doesn't know your zip codes, pipe ages, or home years. We do. An email that says "Homes built in 1955 in your neighborhood have cast iron pipes with a 73% failure rate" converts because it's TRUE and SPECIFIC. HubSpot can't generate this content because it doesn't have the data.
💰 ST Revenue Attribution That HubSpot Can't Match
We tie every email open to an actual ServiceTitan job with actual revenue. HubSpot can only track "deal closed in HubSpot CRM." We track "job completed in ServiceTitan at $9,700 for customer who opened our email 3 days ago." RECEIPT-LEVEL attribution.
🤖 AI-Powered Subject Lines
Feed winning subject lines and their open rates into Nexus. It generates new variations. Test them. Feed results back. The system writes better subject lines than a human because it has data on what BSP customers actually open.
📊 Compound Segment Intelligence
Renovation Rachel + $5K+ lifetime spend + sewer customer + zip 66208 + last service 90+ days ago. That's a SQL query in PostgreSQL. HubSpot needs 5 filter clicks. We need one command. And our segments update AUTOMATICALLY as new ST data comes in.
💡 THE DIFFERENCE

HubSpot is a tool that sends emails. Our system is an INTELLIGENCE ENGINE that happens to send emails. The intelligence comes from ServiceTitan data + sewer hotspot scoring + persona classification + revenue attribution. The email is just the delivery mechanism. We own the brain. HubSpot just rents you a mouth.

💰

PROJECTED REVENUE IMPACT

$100K+
Dormant Reactivation
$50K
Sump Pump Campaign
$96K
Estimate Follow-Up
$42K
Membership Upsell
$288K+ / year

at $0 monthly cost vs HubSpot's $17,400/year

+ $17,400 saved. Google Ads ROAS under verification (was 12.4x, corrected to 7.3x on Mar 31). Real PPC revenue: $50,830/month from 23 jobs.

Total impact: $503K+ vs HubSpot's claimed $574K at 1/100th the cost

📊 BACK TO DATA WEAPONS PLAN ➡️
🎨

AUDREY'S EMAIL DESIGN PLAYBOOK

// Mobile-first. Persona-driven. Every email earns trust or revenue. No filler.

5 campaigns | 17 emails | 3 personas | 1 design system

🎨 DESIGN SYSTEM (All Emails)

📐 LAYOUT SPECS
• Max width: 600px (Gmail/Outlook standard)
• Single column only (mobile-first, no multi-column)
• Padding: 20px sides on desktop, 12px on mobile
• All images: 100% width, max 600px
• Font size: 16px body, 24px headlines (minimum for mobile)
• Line height: 1.6 (readable on small screens)
• CTA button: full width on mobile, 300px on desktop
• Button height: minimum 48px (thumb-friendly tap target)
🎨 BRAND ELEMENTS
• Logo: BSP logo top-left, max 150px wide
• Primary color: #00A651 (Bright Side green)
• CTA color: #FF6B35 (orange, high contrast)
• Background: #FFFFFF (white, clean)
• Text: #333333 (dark gray, not black)
• Font: Arial or system sans-serif (universal rendering)
• No em dashes in copy (Robert's rule)
• Footer: (913) 963-1029 | 12022 Blue Valley Pkwy, OP, KS 66213
• Unsubscribe link: REQUIRED by law (CAN-SPAM)
📱 MOBILE-FIRST RULES (70%+ of BSP customers read on phone)
DO:
✅ Single column
✅ Big tap targets (48px+)
✅ Phone number as tel: link
✅ Short paragraphs (2-3 lines)
✅ Preheader text (40 chars)
DON'T:
❌ Side-by-side columns
❌ Tiny links or buttons
❌ Large hero images (>100KB)
❌ Long blocks of text
❌ Embedded video (use thumbnail+link)
TEST:
🔍 Send test to iPhone + Android
🔍 Check Gmail, Apple Mail, Outlook
🔍 Dark mode rendering
🔍 Images-off fallback (alt text)
🔍 Tap every link/button
📷 PHOTOS NEEDED (Audrey shoots these)
Hero Images (600x300px, WebP):
☐ BSP truck in front of KC home (sunny day)
☐ Tech with sewer camera at job site
☐ Tech talking to homeowner at front door
☐ Before/after sewer repair (dramatic)
☐ Water heater install (clean, professional)
☐ Team photo (all techs, branded shirts)
Supporting Images (300x200px, WebP):
☐ Sewer camera footage screenshot
☐ Sump pump in basement
☐ BSP branded van close-up
☐ 5-star review screenshot (Google)
☐ Kalen headshot (master plumber credibility)
☐ "Free inspection" badge/seal graphic

🔥 CAMPAIGN 3: EMERGENCY-TO-SEWER UPSELL

Persona: Emergency Eric | Trigger: After drain/emergency job | Revenue: $350 ➡ $9,700 | 3 emails over 21 days

EMAIL 1 // DAY 7
Goal: Educate
Subject: That clog might be telling you something
Preheader: Emergency clogs are often a symptom...
From: Bright Side Plumbing <service@callbrightside.com>

Hero image: Sewer camera footage screenshot (dramatic)

Body copy:
Hi [FIRST_NAME],

Thanks for trusting us with your [JOB_TYPE] last week. We wanted to share something most plumbers won't tell you.

Emergency clogs are often a symptom of a bigger issue in your main sewer line. Tree roots, pipe deterioration, or buildup that's been growing for years. The clog we fixed was the warning sign.

Here's what to watch for:
• Slow drains in multiple fixtures at the same time
• Gurgling sounds when you flush
• Water backing up in the lowest drain
• Sewage smell near your foundation

If any of these sound familiar, a $199 camera inspection shows exactly what's happening underground, no guessing.

Photo: Before/after sewer line image

CTA Button: Schedule Your $199 Camera Inspection
Links to: callbrightside.com/sewer-repair/?utm_source=email&utm_campaign=sewer_upsell&utm_content=day7

Sign-off:
Your neighbors trust us. 394+ reviews.
Bright Side Plumbing | (913) 963-1029
EMAIL 2 // DAY 14
Goal: Social proof
Subject: What we found under a [CITY] home just like yours
Preheader: The camera doesn't lie...

Hero image: Tech with camera at job site

Body copy:
Hi [FIRST_NAME],

Last month, a homeowner in [CITY] called us for a routine drain cleaning, just like yours.

During the visit, our tech suggested a camera inspection. Here's what the camera found: a 15-foot section of deteriorated cast iron pipe that was 6 months from a complete collapse.

Photo: Camera inspection screenshot showing pipe damage

Because we caught it early, they had options. Trenchless repair. Scheduled on their timeline. No emergency, no flooding, no $15,000 surprise at 2 AM.

Your home in [ZIP] was built in a similar era. The pipes underground are the same age.

A $199 camera inspection takes 30 minutes and shows you exactly what's down there. No pressure, no obligation, just the truth.

CTA Button: See What's Under Your Home
Links to: callbrightside.com/sewer-repair/?utm_source=email&utm_campaign=sewer_upsell&utm_content=day14
EMAIL 3 // DAY 21
Goal: Convert
Subject: Better to know now than at 2 AM
Preheader: $199 camera inspection. 30 minutes. Peace of mind.

Hero image: BSP truck in front of nice KC home

Body copy:
Hi [FIRST_NAME],

Quick question: would you rather find out about a sewer problem on your schedule, or at 2 AM when your basement is flooding?

Our $199 sewer camera inspection takes 30 minutes. You'll see live video of your pipes on a screen. Our tech walks you through exactly what's happening. If everything looks good, you get peace of mind. If we find something, you get options, not an emergency.

What's included:
✅ Full sewer line camera inspection
✅ Live video you can watch with the tech
✅ Written report with photos
✅ Honest assessment, no pressure
✅ Same-day scheduling available

We've completed [SEWER_JOBS_IN_ZIP] sewer jobs in your neighborhood. We know what's underground in [CITY].

CTA Button: Book Your $199 Inspection | (913) 963-1029

Trust badge row:
⭐ 394+ Google Reviews | ✅ 4th Generation Master Plumber | 🛡 Licensed & Insured

Revenue math: 160 drain jobs/180d. 15% upsell = 24 sewer jobs. Avg $9,700 = $232K annual upsell revenue from this one sequence.

📧 CAMPAIGN 1: DORMANT CUSTOMER REACTIVATION

Persona: All | Trigger: 6+ months since last service | Revenue: $100K+ | 4 emails over 28 days

EMAIL 1 // DAY 0, "We Miss You"
Subject: It's been a while, [FIRST_NAME]
Preheader: Your plumbing hasn't forgotten about you...
Hero image: Friendly tech at front door, smiling

Short, warm, personal. "We serviced your [LAST_JOB_TYPE] back in [LAST_JOB_MONTH]. Just checking in. Your plumbing system needs a checkup every 12 months, like your car. If anything's been bugging you, even a slow drain or a drip, we're one call away."

CTA: Schedule a Checkup
EMAIL 2 // DAY 7, "Your Neighborhood Update"
Subject: We've been busy in [CITY]
Preheader: [X] jobs completed near you this month
Hero image: BSP truck on a residential street

"We've completed [JOBS_IN_ZIP] jobs in [CITY] this month. Your neighbors trust us for everything from drain cleaning to full sewer replacements. Here's what we're seeing in homes built around the same time as yours..."

Include 1-2 relevant tips based on their zip code age (cast iron risk, water heater age, etc.)

CTA: Book a Free Plumbing Checkup
EMAIL 3 // DAY 14, "Exclusive Offer"
Subject: A thank-you from our family to yours
Preheader: $49 drain cleaning for returning customers
Hero image: Team photo with "Thank You" overlay

⚠️ NEEDS KALEN APPROVAL ON PRICING
Offer a returning customer special. $89 dispatch fee waived with service. Or free water heater flush with any service. Time-limited (expires in 14 days). The goal is to get them back in the system.

CTA: Claim Your $49 Drain Cleaning
EMAIL 4 // DAY 28, "Last Chance"
Subject: Your $49 drain cleaning expires Friday
Preheader: Last chance to claim your returning customer discount
Short urgency email. "Your exclusive offer expires [DATE]. After that, it's back to regular pricing. One call: (913) 963-1029."

CTA: Book Before It Expires

🌧️ CAMPAIGN 4: SUMP PUMP SEASONAL

Persona: Maintenance Mike | Trigger: Spring (March-May) | Revenue: $50K/season | 3 emails over 14 days

EMAIL 1 // Spring Launch, "Is Your Basement Ready?"
Subject: Kansas City's rainy season starts in 2 weeks
Preheader: Is your sump pump ready?
Hero image: Flooded basement (dramatic) or sump pump close-up

"KC gets 38+ inches of rain per year. Most of it hits March through June. Your sump pump is the only thing between your basement and a flood. When's the last time you tested it?"

Free sump pump checkup offer. We come out, test the pump, check the battery backup, inspect the discharge line. Takes 15 minutes. If everything's good, you get peace of mind. If not, you get options before the next storm.

CTA: Schedule Free Sump Pump Checkup
EMAIL 2 // Day 7, "What We Found Last Week"
Subject: 3 out of 5 sump pumps we checked last week had issues
Preheader: Dead batteries, clogged lines, and one that was completely unplugged
Social proof + urgency. Share real (anonymized) findings. "One homeowner's pump was unplugged. They had no idea. If we hadn't checked, the next storm would have meant a $10,000 cleanup."

CTA: Get Your Free Checkup Before the Next Storm
EMAIL 3 // Day 14, Weather Trigger
Subject: Storm warning for Johnson County this week
Preheader: Is your sump pump ready for [X] inches of rain?
Sent when NWS issues a rain advisory for KC metro. Real weather data. Real urgency. "Heavy rain expected [DATE]. If your sump pump hasn't been tested this year, now's the time."

CTA: Emergency: Check My Sump Pump | (913) 963-1029

👑 CAMPAIGN 5: MEMBERSHIP LAUNCH

Persona: Renovation Rachel + high-value existing | Trigger: Post-job or quarterly | Revenue: $135K/yr | 3 emails

EMAIL 1 // Post-Job, "You're Already a VIP"
Subject: [FIRST_NAME], you qualify for our VIP program
Preheader: Priority scheduling. Discounts. Annual inspections. Starting at $15/mo.
Sent 3 days after a job over $1,000. "Because you've invested in your home's plumbing, you qualify for our Bright Side Protection Plan." Show the 3 tiers. Emphasize: annual inspection catches problems before they become emergencies.

CTA: See Membership Tiers
EMAIL 2 // Day 7, "What Members Get"
Subject: Your neighbor saved $1,200 with our Protection Plan
Case study email. Real (anonymized) member story. "They had the Premium plan ($30/mo). During their annual inspection, our tech found a deteriorating water supply line. Because they were a member, they got 15% off the repair and same-week scheduling. Without the plan, that would have been a $4,000 emergency at 2 AM."

CTA: Join the Protection Plan
EMAIL 3 // Day 14, "Limited Enrollment"
Subject: Enrollment closes Friday for spring inspections
Scarcity + scheduling. "We schedule member inspections during slower periods to give you our full attention. Spring enrollment closes [DATE] to ensure we can fit everyone in before summer."

CTA: Enroll Before Friday

💸 CAMPAIGN 2: UNSOLD ESTIMATE RECOVERY

Persona: Renovation Rachel | Trigger: Estimate given, no booking after 3 days | Revenue: $192K/yr | 4 emails over 21 days

EMAIL 1 // DAY 3, "Your Estimate is Ready"
Subject: Your plumbing estimate from Bright Side
Preheader: We wanted to make sure you received it
Gentle follow-up. "Hi [FIRST_NAME], [TECH_NAME] left an estimate for [JOB_TYPE] at your home on [DATE]. We wanted to make sure you received it and answer any questions. No rush, no pressure."

CTA: I Have Questions | Call (913) 963-1029
EMAIL 2 // DAY 7, "Why Customers Choose Us"
Subject: What 392 families say about Bright Side
Social proof. 3 relevant Google reviews (matching their job type). "These homeowners had the same job done. Here's what they said." Link to Google reviews page. Builds trust for the decision.

CTA: Ready to Schedule? Book Online
EMAIL 3 // DAY 14, "Financing Available"
Subject: 0% financing available for your [JOB_TYPE]
Remove the price objection. "We understand [JOB_TYPE] is an investment. That's why we offer financing options, including 0% for qualified homeowners. Same great work, payments that fit your budget."

CTA: Check Financing Options
EMAIL 4 // DAY 21, "Second Opinion"
Subject: Getting a second opinion? We welcome it.
Address the elephant. "If you're comparing quotes, we encourage it. Here's what to look for: licensing, insurance, warranty terms, and whether they'll show you camera footage of the actual problem. We do all four. (913) 963-1029."

CTA: Call for a Free Second Opinion

🔄 MASTER SEQUENCE FLOW

// How all 5 campaigns connect. A customer can only be in ONE active sequence at a time. If they book, the sequence stops.

EMERGENCY JOB Wait 7 days ➡ Campaign 1 (Sewer Upsell, 3 emails, 21 days)
6+ MO DORMANT Campaign 2 (Reactivation, 4 emails, 28 days)
SPRING SEASON Campaign 3 (Sump Pump, 3 emails, 14 days) ➡ then Campaign 2 if no response
$1K+ JOB DONE Wait 3 days ➡ Campaign 4 (Membership, 3 emails, 14 days)
ESTIMATE GIVEN Wait 3 days (no booking) ➡ Campaign 5 (Recovery, 4 emails, 21 days)
🛑 STOP RULES:
• Customer books a job ➡ sequence stops immediately
• Customer unsubscribes ➡ removed from all sequences (CAN-SPAM)
• Customer replies to email ➡ Ashton gets a task to call them
• Only 1 active sequence per customer at a time (no spam)

📊 ENGAGEMENT BEST PRACTICES

✅ SUBJECT LINES THAT WORK
• Use their name: "[FIRST_NAME], your plumbing..."
• Use their city: "Homes in [CITY] are at risk"
• Ask a question: "When's the last time you...?"
• Create urgency: "Storm warning for Johnson County"
• Use numbers: "$199 inspection" / "394 reviews"
• Keep under 50 characters (mobile preview)
• No ALL CAPS, no "!!!", no spam trigger words
❌ WHAT KILLS ENGAGEMENT
• Generic "Dear Customer" (always use first name)
• Long paragraphs (max 3 lines per paragraph)
• Multiple CTAs (one primary action per email)
• Sending too often (min 7 days between emails)
• No unsubscribe link (illegal + spam folder)
• Heavy images with no alt text
• Salesy language: "ACT NOW!!!" / "LIMITED TIME"
🎯 METRICS TO TRACK (Nexus will automate this)
Open Rate
Target: 25%+
Industry avg: 20%
Fix: better subject lines
Click Rate
Target: 3%+
Industry avg: 2.5%
Fix: clearer CTA
Reply Rate
Target: 1%+
Best signal of intent
Ashton calls them
Booking Rate
Target: 2%+
The only metric that matters
Revenue per email

AUDREY'S EMAIL PLAYBOOK // BRIGHT SIDE PLUMBING // (913) 963-1029
5 campaigns | 17 emails | 3 personas | Mobile-first | Revenue-driven

COMPREHENSIVE OUTREACH AUDIT

Blindspot Check + Gap Analysis + Data Integrity + SWOT + A/B Strategy // Mar 25, 2026

BLINDSPOT CHECK

BLIND: Zero emails sent.
5 campaigns queued, 5 sequences designed, 0 emails delivered. The engine exists but has never fired. Until we send, everything is theoretical.
BLIND: No deliverability testing.
We don't know if emails from @callbrightside.com land in inbox or spam. SPF is set but no DKIM verification done. No test batch sent.
FIXED: Estimate follow-up linked.
2,825 estimate contacts linked via st_id JOIN. 121 open estimates in CSV (8,203 total in DB). View titan.estimate_contacts created. Campaign 2 is GO.
FIXED: Job status corrected.
1,081 jobs corrected from scheduled to completed status. Recency scoring now works. Job types enriched: 10 categories from ST summaries.
WEAK: No email open tracking verified.
Tracking pixel endpoint exists (/track/open) but has never been tested with a real email. May be blocked by email clients.
WEAK: Apps Script not deployed.
The Google Sheets engine is written (titan_apps_script_engine.js) but not deployed. Blocks ALL email sending.

DATA INTEGRITY AUDIT

✅ Persona scoring: FIXED. 89.7% Emergency Eric matches 90% from review analysis. Behavior-based v3 classifier deployed.
✅ Contact count: 3,882 valid emails (verified from titan.customers).
✅ Job status FIXED. 1,081 jobs corrected to completed. Recency scoring works. Job types enriched (10 categories).
✅ LTV calculated from actual invoices. 439 customers with revenue, 7 High Value ($5K+). 19 revenue customers have email.
⚠ High Value segment (66 at $5K+) is correct per SQL verification. Old number (171) was wrong.
✅ Sewer/Drain customers with email: 71. Emergency-to-Sewer upsell candidates: 63. Job types enriched from ST summaries.
✅ Unsubscribe endpoint: LIVE and tested. CAN-SPAM compliant.

SWOT ANALYSIS

STRENGTHS
• 3,882 contacts with emails (huge for a local plumber)
• Persona scoring matches review data (89.7% accuracy)
• 5 campaigns ready with templates
• $0/month vs HubSpot $1,450/month
• ST data integration (revenue, job type, tech)
• CAN-SPAM compliant (unsubscribe endpoint)
• Beats HubSpot 9-2 in feature comparison
WEAKNESSES
• Zero emails sent (unproven in production)
• No email design from Audrey yet
• Apps Script not deployed
• No deliverability testing
• Recency scoring broken (999 days)
• Estimate follow-up campaign has 0 contacts
• No visual email builder (HubSpot wins here)
OPPORTUNITIES
• 8,203 estimates = massive estimate recovery pipeline
• 4,731 segmented contacts (6 tiers) = $171K+ projected reactivation
• Weather-triggered campaigns (already built)
• Post-service review requests (automated)
• Daniel AI can trigger SMS follow-ups after calls
• Blog content feeds email campaigns (Blog & Growth workspace live)
• 100 Year Plumbing = second brand on same engine
THREATS
• Gmail daily send limit (500/day, 1500 with workspace)
• Spam filtering could tank deliverability
• CAN-SPAM violations if unsubscribe breaks
• Customer backlash if emails feel spammy
• Competitor email fatigue (customers getting emails from everyone)
• ST contract deadline pressure (May/June) could rush quality

DATA-DRIVEN CAMPAIGN PRIORITY (Mar 25 Audit)

Priority reordered based on data audit findings:
Campaign 1: Dormant Reactivation - 4,731 contacts across 6 tiers, lowest risk, highest projected revenue ($171K+)
Campaign 2: Unsold Estimate Recovery - 121 open estimate contacts in CSV (8,203 total in DB)
Campaign 3: Emergency-to-Sewer Upsell - Requires job type data fix first (all jobs show "General")
Campaign 4: Sump Pump Seasonal - Time-sensitive (spring/fall), zip-targeted
Campaign 5: Membership Launch - Tabled per Stephanie (needs Brenda + contract review)

Rationale: Start with the biggest, safest pool. Dormant customers already know BSP. Estimate recovery has the highest per-contact value (already quoted). Emergency-to-Sewer blocked until job types are enriched from ST API (currently all show "General").

A/B TESTING STRATEGY (ROBUST)

Phase 1: Subject Lines (Week 1-2)
• Test A: Personalized ("We miss you, {NAME}!") vs B: Value-first ("{NAME}, your plumbing is overdue")
• Test A: Question ("Is your sump pump ready?") vs B: Statement ("Spring rains are coming")
• Test A: Urgency ("Last chance") vs B: Friendly ("Just checking in")
• Split: 50/50 on first 100 sends. Winner goes to remaining contacts.

Phase 2: Send Time (Week 3-4)
• Test A: Morning 9 AM vs B: Evening 6 PM vs C: Saturday 10 AM
• Measure: open rate within 4 hours of send
• Emergency Eric hypothesis: evening sends perform better (they're home, thinking about the problem)

Phase 3: CTA (Week 5-6)
• Test A: "Call (913) 963-1029" vs B: "Book Free Checkup" vs C: "Reply to this email"
• Measure: click-through rate AND actual phone calls (track via Daniel/3CX)

Phase 4: Content Length (Week 7-8)
• Test A: Short (3 sentences + CTA) vs B: Story-based (customer example + solution + CTA)
• Hypothesis: Emergency Eric responds to short/urgent. Rachel responds to detailed/trustworthy.

Phase 5: Persona-Specific (Ongoing)
• Emergency Eric: "Something could be wrong right now" messaging
• Renovation Rachel: "Here's what you're missing" + social proof + estimate
• Maintenance Mike: "It's time for your checkup" + membership offer

MEASUREMENT FRAMEWORK:
• Minimum sample: 100 sends per variant before declaring winner
• Statistical significance: 95% confidence before scaling
• Track FULL funnel: send -> open -> click -> call -> book -> revenue
• Revenue attribution via ST job matching (Trust Engine Equation 1)

CONVERSION OPTIMIZATION CHECKLIST

Before First Send:
• [ ] Deploy Apps Script to Google Sheets
• [ ] Send test batch of 20 to internal team
• [ ] Verify tracking pixel fires (check /track/open endpoint logs)
• [ ] Verify unsubscribe link works in actual email client
• [ ] Check spam score (mail-tester.com with test email)
• [ ] Audrey designs branded HTML templates for top 2 campaigns
• [ ] Fix recency scoring (last_job_days = 999 bug)
• [ ] Connect estimate data to estimate follow-up campaign

Campaign 1: Dormant Reactivation (LAUNCH FIRST):
• [ ] Start with 100 contacts (highest scored dormant)
• [ ] A/B test subject line
• [ ] Monitor open rate (target: 20%+)
• [ ] Monitor reply rate (target: 2%+)
• [ ] Track phone calls within 48 hours of send
• [ ] Match calls to ST bookings (Trust Engine)
• [ ] If open rate > 20%: scale to 500/day
• [ ] If open rate < 10%: pause, redesign, test again

AUDREY'S QUESTIONS ANSWERED (Mar 25)

Q: Can you pull fonts from static email mockups?
A: Yes. Do NOT use Helvetica. Audrey's top 3 recommended alternatives (all web-safe, work in every email client):
Georgia - Elegant serif. Premium, trustworthy feel. 99%+ device coverage. Great for body text.
Verdana - Clean sans-serif designed for screens. Excellent readability at small sizes. Pre-installed everywhere.
Trebuchet MS - Modern sans-serif with personality. More stylish than Arial. Good for headers.
Recommended stack: Headers = Trebuchet MS, Verdana, sans-serif. Body = Georgia or Verdana. Custom fonts get stripped by email clients. For brand headers, use image-based headers.

Q: Should we use the sunny GIF in email sign-offs?
A: Yes, BUT with strict size limits:
Max file size: 200KB (ideally under 100KB). Larger = slow mobile load.
Max dimensions: 150x150px (square) or 200x50px (horizontal).
• Gmail + Apple Mail + Outlook 365 web = GIF plays. Outlook desktop (2007-2019) shows first frame only - so Frame 1 must look good as a static image.
• Recommendation: Create a static PNG fallback under 20KB. Use GIF as progressive enhancement.
• A 50KB animated sun = great. A 500KB animated logo = skip it.

Q: Where should infographics/photos go?
A: Google Drive > "Email Campaigns" > subfolder per campaign (Dormant, Sump Pump, etc). Images 600px wide max. Name clearly: "dormant-hero-600x200.png". One campaign = one folder with ALL assets.

Q: Best way to organize 2026 Drive?
A: 2026 BSP Marketing > Blog Content (Published/Drafts/Images) | Email Campaigns (per campaign) | Social Media (per platform) | Brand Assets (Logos/Colors/Photos) | Ad Creative (Google/Facebook) | Reports. Key rule: one blog post = one folder with all carved assets inside.
Audit conducted Mar 25, 2026 // Trust Engine verified // Reasoning Engine v2 // Scientific Method applied

BLIND SPOT GAP ANALYSIS

// What we have. What we are missing. What it costs us. // Apr 2, 2026
⚔️
KEYWORD WEAPONIZATION
40,847 keywords mapped
Cluster strategy complete
🧠
CUSTOMER INTELLIGENCE
5,425 customers profiled
RFM segments + personas
💣
KEYWORD FULL ARSENAL
Complete keyword database
All 40,847 indexed

🔍 EXECUTIVE SUMMARY

16
CHANNELS ASSESSED
7
OPERATIONAL ✅
9
BLIND SPOTS ❌
$3.1M
OPEN ESTIMATES AT RISK

// Assessment Date: April 2, 2026 // Data Sources: PostgreSQL bsp_analytics, ServiceTitan API, Zeus RAG, Morpheus Intelligence Stack

WHAT WE HAVE

// The arsenal already built and operational. Green = verified working.

✅ CUSTOMER DATABASE

Total Customers5,425
With Email3,549 (65.4%)
With Phone4,426 (81.6%)
Total Lifetime Value$1,530,342
Avg LTV (paying)$3,393

✅ RFM SEGMENTATION (LIVE)

👑 Champions52
🐋 Whales ($10K+)42
❤️ Loyal115
🔥 Active99
🌡️ Warm225
❄️ Cooling430
💤 Dormant5
🆕 New (unscored)4,457

✅ PERSONA CLASSIFICATION

🚨 Emergency Eric4,887 (90.1%)
🔧 Maintenance Mike272 (5.0%)
🏠 Renovation Rachel245 (4.5%)
🏢 Business Owner Bob4 (0.1%)
❓ Unclassified17 (0.3%)

✅ CONTENT & KEYWORD ARSENAL

Keywords Mapped40,847
Blog Posts Published21+
Email Campaigns Designed5 (17 emails)
Weaponization StrategyCOMPLETE
Playbook Suite11 / 11 deployed

✅ DANIEL AI (Vapi)

PlatformVapi (live)
Phone(913) 963-9817
Total Calls Logged45
Tools Configured6
3CX ForwardingACTIVE

✅ INFRASTRUCTURE

DMARC RecordDEPLOYED
Google Ads Campaigns7 active
Offline ConversionsLIVE (Smart Bidding)
Membership Tiers3 configured ($0 MRR)
Zeus RAG Intelligence2,808 chunks

WHAT WE ARE MISSING

// 9 blind spots. Each one is leaving money on the table. Ranked by revenue impact.
BLIND SPOT #1

EMAIL DELIVERABILITY FOUNDATION

Revenue at risk: $100K+ (dormant reactivation alone)
DKIM Status: Reported as done (Kalen call Apr 2) but NOT verified in DNS. No TXT record found for default._domainkey.callbrightside.com. VERIFY IMMEDIATELY.
SPF Record: Needs verification -- must include Google Workspace sending IPs.
DMARC: ✅ Deployed (p=none, monitoring mode). Needs upgrade to p=quarantine after 30 days.
Email Warmup Plan: ❌ MISSING. Cannot blast 3,882 emails on day 1. Google will throttle or flag as spam.

Required Warmup Schedule:
• Week 1: 25 emails/day (Champions + Whales only -- 102 VIP contacts, highest engagement probability)
• Week 2: 50 emails/day (add Loyal segment -- 121 open estimate contacts)
• Week 3: 100 emails/day (add Active -- 105 commercial contacts)
• Week 4: 200 emails/day (add Warm -- 504 We Miss You contacts)
• Week 5: 350 emails/day (add Cooling tier 1 -- highest-scored 200 of 430)
• Week 6+: Scale to 500/day max (Gmail workspace limit)
• Full list covered in ~7-8 weeks at controlled pace

⚙️ MICROSTEPS: EMAIL DELIVERABILITY

Step 1: DKIM -- DONE ✅
Record verified at google._domainkey.callbrightside.com. Confirmed live Apr 2 via dig. No action needed.
Step 2: SPF -- DONE ✅
Record live: v=spf1 include:_spf.google.com ~all. Verified in DNS. No action needed.
Step 3: DMARC -- DONE ✅
Deployed via Cloudflare API on Mar 25. Currently in p=none monitoring mode. Upgrade to p=quarantine after 30 days of clean reports (target: Apr 25).
Step 4: Email Warmup Plan -- NOT DONE ❌
Do NOT blast 3,882 emails on day 1. Google will throttle or flag as spam.

Day 1-3: Send to 20 Champion customers (highest engagement, most likely to open). Pick from the 52 Champions in the RFM segment.
Day 4-7: Expand to 50 (add Whales -- 42 customers with highest lifetime value).
Week 2: Expand to 200 (add the full Loyal segment -- 115 customers).
Week 3: Expand to 500 (add Active segment -- 99 customers + more from Warm).
Week 4: Full send to Cooling segment (430 customers).

MONITORING (check daily during warmup):
• Bounce rate must stay below 2%. If it spikes: STOP immediately, clean the list, verify addresses via NeverBounce or ZeroBounce.
• Spam complaint rate must stay below 0.1%. Check Google Postmaster Tools daily.
• Open rate target: above 20%. If below 15%, subject lines need A/B testing.

Tool: Google Workspace SMTP via Apps Script (already built in Phase 1 of this guide).
If bounce rate spikes: STOP all sends. Export bounced addresses. Remove from Contacts tab. Re-verify remaining list. Resume at 50% of previous daily volume.
BLIND SPOT #2

ESTIMATE FOLLOW-UP AUTOMATION ($3.1M OPEN)

Revenue at risk: $310K+ (10% close rate on re-engagement)
Database Reality: 1,430 open estimates totaling $3,106,085. Plus 2,285 dismissed at $9.8M (some recoverable).
Current State: ❌ No automated follow-up. Estimates go cold. Customer moves on. Money evaporates.
Pipeline: 5,000 total estimates tracked (1,430 open + 2,285 dismissed + 1,285 sold = $15.8M total pipeline)

Required Automation:
• Day 3: "Just following up on your estimate" (soft touch, answer questions)
• Day 7: "Your estimate expires soon" (urgency, limited-time note)
• Day 14: "We saved this just for you" (recap estimate, add seasonal tie-in)
• Day 30: "Prices are changing" (honest price escalation warning)
• Day 60: Daniel AI phone call for high-value estimates ($5K+)
Keyword tie-in: Match estimate job type to relevant blog content. Sewer estimate gets sewer cost blog link. Water heater estimate gets water heater guide.

⚙️ MICROSTEPS: ESTIMATE FOLLOW-UP RECOVERY

Step 1: Pull Top 50 Estimates by Value
Open ServiceTitan ➡️ Estimates ➡️ Sort by Total (descending). Focus on open status only. Or run: python3 /opt/nexus/nexus/scripts/nexus_outreach_command_center.py to pull the list programmatically.
Step 2: Filter Last 90 Days Only
Estimates older than 90 days are stale -- customer has likely moved on or hired someone else. Filter the top 50 list to only estimates created in the last 90 days. Anything older goes into a separate "long-shot" list for a softer touch.
Step 3: Segment by Service Type
Sort filtered estimates into buckets:
Sewer (highest ticket, biggest recovery potential) -- priority 1
Water heater (urgent replacements, time-sensitive) -- priority 2
Drain cleaning (lower ticket but high volume) -- priority 3
This segmentation determines which call script and email template to use.
Step 4: Ashton Calls Top 10 Tomorrow Morning
Call script (read verbatim):
"Hi [customer name], this is Ashton from Bright Side Plumbing. We sent you an estimate for [service type] back in [month]. I just wanted to check in and see if you still need that taken care of. We have availability this week if you are ready to move forward."
If they say yes: Book immediately in ST. Do not say "I will call you back."
If they say "still thinking": "No rush at all. That estimate is still valid. Would it help if I answered any questions about the work?"
If no answer: Leave voicemail with the same script. Move to Step 5 (Daniel AI follow-up).
Step 5: Daniel AI Calls Next 40
Use Daniel AI's createLead tool to queue calls. Daniel references the original estimate amount and service type. If the customer shows interest, Daniel transfers to Ashton or schedules a callback. Daniel AI phone: (913) 963-9817.
Step 6: Email Sequence for Remaining 1,380 Estimates
Email 1 (Day 0): Subject: "Your estimate from Bright Side is still valid". Body: recap the service, show the original amount, CTA button: "Schedule Now" linking to callbrightside.com with UTM ?utm_source=email&utm_medium=estimate_recovery&utm_campaign=day0.

Email 2 (Day 3): Subject: "Here is what [similar customer] said about us". Body: include a real Google review from a customer who had the same service. CTA: "Have questions? Call us at (913) 963-1029".

Email 3 (Day 7): Subject: "Prices may change after [date]". Body: honest note that material costs fluctuate. The current estimate locks in today's price. Include BSP phone number (913) 963-1029 prominently in the body text.
Step 7: Track Results
In the Outreach Command Center Google Sheet, create a new tab called "Estimate Recovery". Columns: Customer Name, Estimate Amount, Service Type, Contact Method (call/AI/email), Date Contacted, Outcome (booked/pending/declined), Revenue Recovered. Update weekly. Target: 10% close rate on top 50 = ~$310K recovered.
Step 8: Automation Endpoint (Already Built)
Nexus estimate recovery engine at /api/estimates/recovery. Once email warmup is complete (Week 4+), this endpoint auto-queues follow-up emails for any estimate that ages past 7 days. No manual intervention after initial setup.
BLIND SPOT #3

SMS / TEXT OUTREACH CHANNEL

Revenue at risk: $75K+ (SMS open rate 98% vs email 20%)
Phone Data: 4,426 customers with phone numbers (81.6% coverage vs 65.4% email).
Telnyx Status: Account exists. 10DLC registration pending.
Current State: ❌ No SMS campaigns active. No opt-in collection. No compliance framework.

Required Build:
• Complete 10DLC registration (required for A2P messaging, takes 2-4 weeks)
• Opt-in collection via post-job text: "Reply YES to receive maintenance reminders from Bright Side Plumbing"
• SMS campaign types: appointment reminders, estimate follow-ups, seasonal alerts, review requests
• SMS is 5x more effective than email for Emergency Eric persona (they respond to urgency in texts)
Keyword tie-in: Use "near me" keyword clusters (12,400+ keywords) for geo-targeted SMS during storms/freezes

⚙️ MICROSTEPS: SMS CHANNEL SETUP

Step 1: Register 10DLC with Telnyx -- BLOCKED on BSP EIN
BLOCKED: Need BSP EIN from Stephanie before this can proceed.

Once EIN is obtained:
• Log into Telnyx portal (telnyx.com) ➡️ Messaging ➡️ 10DLC ➡️ Register Brand
• Enter: BSP EIN, business name "Bright Side Plumbing", address 12022 Blue Valley Pkwy Overland Park KS 66213, contact name
• Campaign type: select "Customer Care" (covers appointment reminders, follow-ups, review requests)
• Submit and wait. Approval takes 5-10 business days. Cannot send A2P texts until approved.
Step 2: Build SMS Templates While Waiting for 10DLC
Appointment Reminder:
"Hi [name], your Bright Side Plumbing appointment is tomorrow at [time]. Questions? Call (913) 963-1029. Reply STOP to unsubscribe."
Review Request (post-job):
"Hi [name], thanks for choosing Bright Side! Could you leave us a quick review? [Google review link] Reply STOP to unsubscribe."
Estimate Follow-Up:
"Hi [name], your plumbing estimate from Bright Side is still valid. Ready to schedule? Reply YES or call (913) 963-1029. Reply STOP to unsubscribe."
Seasonal Alert:
"Spring sewer alert: KC clay soil + spring rain = sewer risk. Free camera inspection with any service. Call (913) 963-1029. Reply STOP to unsubscribe."
Step 3: Test Send After 10DLC Approval
Once 10DLC is approved, send a test message to Robert's phone (913-439-0166). Verify: message arrives within 30 seconds, sender shows BSP number, links are clickable, reply STOP actually works and adds number to opt-out list. Fix any issues before live sends.
Step 4: Warmup (Same Cadence as Email)
• Day 1-3: Send to 20 Champions only
• Day 4-7: Expand to 50 (add Whales)
• Week 2: Expand to 200 (add Loyal + Active)
• Week 3+: Full send capability
Monitor carrier filtering. If messages are not being delivered (check Telnyx delivery reports), reduce volume and contact Telnyx support.
Step 5: Compliance -- Every Single Message
LEGAL REQUIREMENT (TCPA): Every SMS must include "Reply STOP to unsubscribe". No exceptions.
• Maintain opt-out list in the Google Sheet Unsubscribes tab (add a "Channel" column: SMS vs Email)
• Apps Script / Nexus checks opt-out list before every send
• Never send before 8 AM or after 9 PM local time (TCPA compliance)
• Never send more than 1 SMS per customer per day
Step 6: Existing Nexus Endpoint (Ready to Go)
Revenue alert SMS already built at /api/sms/send (Telnyx integration ready). Just needs 10DLC registration to go live. No additional code needed for basic SMS sends.
⚠️
BLIND SPOT #4

REVIEW VELOCITY SYSTEM

Impact: LSA ranking + trust signals. Target 5/week, currently ~2/week.
Current Reviews: 394+ on Google. Growing at ~2/week.
Target: 500+ reviews. Need 5/week to hit 500 by July 2026.
Review Requests in DB: 0 (system built but not populated).

Required System:
• Auto-trigger review request 2 hours after job completion (ST webhook or timer-based)
• Use Chris Fresh "handoff moment" script -- tech primes customer before leaving
• SMS follow-up (day 1) + email follow-up (day 3) if no review posted
• Track per-tech review generation rate. Gamify: monthly leaderboard on dispatch board
Keyword tie-in: Encourage customers to mention specific services in reviews (sewer repair, water heater, drain cleaning) -- feeds Google NLP for local pack ranking

⚙️ MICROSTEPS: REVIEW VELOCITY SYSTEM

Step 1: Auto-Review Request After Every Completed Job
Trigger: Job status changes to "completed" in ServiceTitan.
Wait: 2 hours after completion (customer has time to settle in and check the work).
Send SMS:
"Hi [name], [tech_name] just finished your [service type]. Would you share your experience? [Google review link] Reply STOP to unsubscribe."
If no review in 48 hours: Send email follow-up with the same ask plus a testimonial from another customer who had the same service type.
Implementation: Nexus timer checks ST for newly completed jobs every 2 hours. Matches against "review sent" log to avoid duplicate requests.
Step 2: Tech Handoff Script (30 Seconds at End of Every Job)
What the tech says (read to techs in morning huddle):
"Mr/Mrs [name], was everything good today?" [pause, wait for yes] "We would really appreciate a Google review -- it helps other homeowners find us. I am going to send you a quick link right now."
Then: Tech taps a button in the Daniel AI app (or sends a pre-saved text from their phone) ➡️ SMS fires immediately with the Google review link while the tech is still standing there.
Why this works: The customer just said "yes, everything was great" 5 seconds ago. Social commitment. They are 10x more likely to leave a review in the next 5 minutes than if you ask 2 hours later via automated text.
Step 3: Per-Tech Review Scorecards
• Create a Google Sheet tab called "Review Scoreboard". Columns: Tech Name, Week, Jobs Completed, Reviews Generated, Review Rate %.
• Display leaderboard on Ashton's dashboard (morpheus.callbrightside.com, booking role)
• Target: each tech generates at minimum 1 review per week
• Monthly recognition: top reviewer gets called out in team meeting
Step 4: Review Response Automation (Already Built)
Auto-review responder at /api/auto-review-responder. Auto-drafts a response within 24 hours of a new review. Robert reviews and approves before posting. Never auto-post without review.
Step 5: Hit 500 Reviews by July 2026
Math: Currently 394 reviews. Need 108 more. 13 weeks until July = ~8 reviews/week needed.
Reality check: BSP completes ~25-30 jobs/week. At a 30% review request conversion rate = 7-9 reviews/week. Achievable with the tech handoff script + automated follow-up.
If pace falls behind: Run a "review blitz week" -- techs get a small bonus ($5 gift card) for every review they generate that week.
Step 6: QR Code Review Cards
• Audrey designs a business-card-sized card: BSP logo + "Leave us a review!" + QR code linking to the Google review page
• Print 500 cards from VistaPrint or similar (~$30)
• Every tech carries 10 cards, hands one out at the end of every job alongside the verbal handoff script
• QR code URL: use a trackable UTM link so you know how many reviews come from physical cards vs SMS vs email
⚠️
BLIND SPOT #5

MEMBERSHIP SOFT LAUNCH SEQUENCE

Revenue potential: $135K/yr ARR at 225 members x $50/mo avg
Tiers Built: Essential ($19.99/mo), Premium ($29.99/mo), VIP ($49.99/mo)
Current MRR: $0. Zero members enrolled. System configured but not launched.
Brenda Status: Tabled until Brenda onboards (per Stephanie, Mar 16).

Soft Launch Plan (Post-Brenda):
• Phase 1: Invite 52 Champions + 42 Whales via personal email (94 contacts, highest conversion probability)
• Phase 2: Post-job enrollment pitch by techs (3 enrollment paths defined in Zeus RAG)
• Phase 3: Dormant reactivation with membership offer as hook ("Come back + save 15%")
Keyword tie-in: "plumber maintenance plan Kansas City" cluster (230+ keywords) -- membership landing page content mapped

⚙️ MICROSTEPS: MEMBERSHIP SOFT LAUNCH

Step 1: ST Memberships Module Access -- PENDING
Robert is getting access from Stephanie (permissions grant expected Apr 2). Once granted: log into ServiceTitan ➡️ Settings ➡️ Memberships ➡️ verify you can create and edit membership types. If access is denied, escalate to Stephanie directly.
Step 2: Create 3 Tiers in ServiceTitan
Once access is granted, create these tiers in ST ➡️ Settings ➡️ Memberships ➡️ Add Membership Type:
Essential: Annual plumbing inspection + 10% off all repairs. Lowest friction entry point.
Premium: Annual inspection + priority scheduling (jump the queue) + 15% off all repairs.
VIP: Annual inspection + priority scheduling + 20% off all repairs + free camera inspection annually.
Set pricing in ST. Billing: monthly recurring via credit card on file.
Step 3: Soft Launch Strategy (From Kalen, Apr 2)
DO NOT hard sell. Position as a value-add, not a pitch.
Email drip: Membership offer goes in the 3rd or 4th email of any sequence -- never the first touch. Customer needs to trust BSP first.
In-person pitch: On the next service visit, tech mentions: "We have a maintenance plan that includes an annual inspection and saves you 10-20% on repairs. Want me to send you the details?"
Positioning: "We noticed you have not had your annual plumbing checkup. Our members get priority scheduling and discounts."
Step 4: Target First 94 Customers
52 Champions + 42 Whales from RFM segmentation. These are the customers who already love BSP, spend the most, and are most likely to say yes. Pull from the Outreach Command Center Contacts tab, filter by RFM segment = "Champion" or "Whale".
Step 5: BLOCKER -- Brenda Must Be Onboarded First
HARD STOP. Stephanie said membership is tabled until Brenda is onboarded (Mar 16 standup). Do NOT push membership to customers until Brenda is in place to handle scheduling inspections, managing renewals, and handling cancellations. Wait for Robert to confirm Brenda is cleared. Then proceed with Steps 1-4.
Step 6: Existing Infrastructure (Already Built)
• Membership API: /api/memberships/ (Stripe integration ready)
• Email template style: use Audrey's dormant reactivation email design as the base
• Membership strategy HTML already deployed on Morpheus
⚠️
BLIND SPOT #6

SEASONAL CAMPAIGN CALENDAR

Impact: Proactive revenue vs reactive scramble during slow months
Current State: Content calendar exists (3 posts/week) but no seasonal EMAIL/SMS campaign calendar.
KC Plumbing Seasons: Mar-Jun PEAK (sewer + spring rain) | Jul-Aug MODERATE | Aug-Sep DEAD ZONE | Oct-Nov water heater season | Dec-Feb freeze pipes

Required Calendar:
Apr-May (NOW): Spring sewer campaign. Storm alerts. Sump pump checkups. Target: Cooling segment (430 customers).
Jun-Jul: Water heater flush campaign. AC-adjacent upsell. Target: Maintenance Mike (272 customers).
Aug-Sep (Dead Zone): Membership push. Dormant reactivation. $89 dispatch fee special. Use slow period to build pipeline.
Oct-Nov: Winter prep campaign. Water heater replacement. Pipe insulation. Target: Emergency Eric in older homes.
Dec-Feb: Freeze prevention. Emergency readiness. "Have our number saved" campaign.
Keyword tie-in: Map seasonal keyword volume from 40,847 keywords to campaign timing. "Sewer repair" peaks Mar-May. "Water heater replacement" peaks Oct-Dec. "Frozen pipes" peaks Dec-Feb. Let search data drive send timing.

⚙️ MICROSTEPS: SEASONAL CAMPAIGN CALENDAR

Step 1: KC Plumbing Seasons (From Kalen, Apr 2)
PEAK: March-June -- Spring rain + ground shift = sewer problems. Sump pumps fail. Highest call volume.
PEAK: October-December -- Freeze prep + holiday plumbing + water heater failures.
DEAD: January-February -- Post-holiday, cold, nobody calls unless emergency.
DEAD: August-September -- Summer slowdown, customers on vacation, not thinking about plumbing.
Step 2: Build the Campaign Calendar in Google Sheets
Create a new tab called "Seasonal Calendar". Columns: Month, Campaign Name, Target Segment, Email Template, SMS Template, Social Post Theme, Google Ads Budget Adjustment.

March: "Spring Sewer Checkup" -- email + SMS to sewer hotspot zips. Google Ads: increase sewer budget 50%.
April: Sewer camera inspection push. Link to sewer cost blog (190K+ searches). Target: Cooling + Dormant.
May: "Before Summer" drain cleaning. Target: Maintenance Mike segment (272 customers).
June: Water heater maintenance. Target: customers with water heater jobs 2+ years ago.
August (Dead Zone): Reactivation campaign to Cooling (430 customers). Offer $99 dispatch fee special.
October: "Freeze Prep" campaign. Insulate pipes, check sump pump. Target: Emergency Eric in cast iron zips.
November: Holiday plumbing tips + membership gift card push.
January (Dead Zone): "$199 Winter Checkup" special (Experiment #89). Target: full list.
Step 3: Each Campaign Gets 4 Channels
Every seasonal campaign fires across all 4 channels simultaneously:
Email: 3-touch sequence (Day 0: announcement, Day 3: social proof, Day 7: urgency/last chance)
SMS: 1 text message (short, direct, phone number + CTA)
Social: Audrey creates matching social posts (Instagram + Facebook). Same theme, same timing.
Google Ads: Adjust campaign budgets to match seasonal demand. Increase sewer budget in spring, water heater in fall.
Step 4: Existing Automation (Already Built)
• Content pipeline already generates seasonal blog drafts automatically
• Weather bidding API at /api/weather/sewer-alert triggers sewer campaigns when NWS issues storm warnings for KC
• Keyword volume data from 40,847 keywords tells you exactly when each service peaks in search demand -- let search data drive send timing
⚠️
BLIND SPOT #7

RETARGETING (Facebook Pixel Removed Jul 2025)

Revenue at risk: $50K+ (retargeted visitors convert 3-5x higher)
Facebook Pixel: ❌ Removed July 2025. No retargeting audiences building since then.
Google Retargeting: Running via Google Ads tag (AW-17179856077).
Facebook Ad Account: Connected (Mar 19 session). Custom audiences possible but pixel needed for website visitors.

Required Actions:
• Reinstall Facebook pixel via GTM (not Code Snippets -- learned that lesson)
• Build custom audiences: Website visitors 30/60/90 day windows
• Upload customer list (3,882 emails) as Custom Audience for lookalike targeting
• Create retargeting campaigns for estimate page visitors (people who saw pricing but did not call)
Keyword tie-in: Use high-intent keyword landing pages as retargeting entry points. Visitor reads "sewer line replacement cost" blog, gets retargeted with "$500 off sewer repair" Facebook ad.

⚙️ MICROSTEPS: FACEBOOK RETARGETING

Step 1: Get Stephanie's Approval -- MANDATORY FIRST
CAUTION: Stephanie intentionally removed the Facebook pixel in July 2025. Do NOT reinstall without her explicit approval.
Script for Robert: "Stephanie, we want to reinstall the Facebook pixel so we can show ads to people who visited our website but did not call. It does not collect personal info -- it just lets Facebook know someone visited a service page so we can follow up with a relevant ad. Is that OK?"
If she says no: Skip this blind spot entirely. Move to the next one. Do not push.
Step 2: Create New Pixel in Meta Business Suite
Log into Meta Business Suite (business.facebook.com) ➡️ Events Manager ➡️ Connect Data Sources ➡️ Web ➡️ Facebook Pixel ➡️ Name it "BSP Website Pixel" ➡️ Copy the Pixel ID (you will need it for GTM).
Step 3: Install via Google Tag Manager (NOT Code Snippets)
NEVER install via WP Code Snippets. Caused site-wide 500 on Mar 14.

• Open GTM (container GTM-M3L9374) ➡️ Tags ➡️ New ➡️ Custom HTML
• Paste the Facebook Pixel base code (from Meta Events Manager)
• Trigger: All Pages ➡️ Save
• Submit and Publish the GTM container

Configure these event tags (each as a separate GTM tag):
PageView: fires on all pages (automatic with base pixel)
ViewContent: fires on service pages only. Trigger: Page Path contains /services/ or matches specific service page URLs.
Lead: fires on form submission. Trigger: Form Submission event or thank-you page URL.
Contact: fires on phone number click. Trigger: Click URL contains tel:
Step 4: Build Retargeting Audiences
In Meta Business Suite ➡️ Audiences ➡️ Create Audience ➡️ Custom Audience ➡️ Website:
Audience 1: "Sewer Visitors - No Call" -- URL contains "sewer" AND no Contact event. Window: 7 days.
Audience 2: "Service Page Visitors - No Convert" -- ViewContent event but NO Lead event. Window: 14 days.
Audience 3: "Past Customers" -- Upload 3,549 customer emails as Custom Audience. Use for 1% lookalike targeting (~2M people in KC metro).
Step 5: Create Retargeting Campaigns
Budget: $10-20/day total. Tiny budget, high ROI because these are warm visitors.

Audrey designs 2-3 retargeting ads (different from prospecting ads):
• Ad 1: "Still thinking about that sewer repair?" + CTA "Get Your Free Estimate"
• Ad 2: "394+ reviews on Google" + CTA "See Why KC Trusts Us"
• Ad 3: "Free camera inspection with any sewer service" + CTA "Book Now"

Placement: Facebook Feed + Instagram Feed + Instagram Stories. Exclude people who already converted (Lead event fired).
💡
BLIND SPOT #8

FORMAL REFERRAL PROGRAM

Revenue potential: $200K+ (referral customers have 37% higher retention)
Current State: Organic referrals happen but no formal program, no tracking, no incentive structure.
Referral Revenue: $428K attributed to referral source over 90 days (Jan-Mar analysis).

Required Program:
• Champion/Whale referral cards (physical + digital): "Refer a friend, you both get $50 off"
• Post-job email with referral link (trackable UTM: ?utm_source=referral&utm_medium=email&utm_campaign=post-job)
• Track referrals in ST via custom tags or campaign attribution
• Quarterly "Referral Champion" recognition (Slack announcement, small gift)
• Target audience: 52 Champions + 42 Whales + 115 Loyal = 209 customers most likely to refer
Keyword tie-in: Create "Best plumber in [city]" content optimized for referral-intent keywords. When someone Googles after a friend recommends BSP, they find you.

⚙️ MICROSTEPS: REFERRAL PROGRAM

Step 1: Acknowledge Current State
$428K in referral revenue (Nick, Bulldog, existing customers) with NO formal program, NO tracking, NO incentive structure. This is pure organic. Formalizing should at minimum double the referral rate.
Step 2: Create Referral Cards (Physical + Digital)
Physical cards (Audrey designs): Business card size. Front: BSP logo + "Refer a friend, you both get $50 off." Back: unique referral code + QR code linking to callbrightside.com/?utm_source=referral&utm_medium=card&utm_campaign=referral_program. Print 500 at VistaPrint (~$30).

Digital version: Same design, sent via email/SMS after every completed job. "Know someone with a plumbing problem? Refer them to Bright Side and you both save $50."

Unique codes: Each customer gets a unique referral code (e.g., BSP-SMITH-2026). When a referred customer mentions the code at booking, both parties get $50 credit on their next service.
Step 3: Track in ServiceTitan
• Create a new campaign in ST: Settings ➡️ Marketing ➡️ Campaigns ➡️ Add Campaign ➡️ Name: "Referral Program 2026"
• When a referred customer books, Ashton tags the job with this campaign + notes the referrer's name
• This feeds Nexus revenue attribution automatically -- referral revenue tracked alongside paid/organic
Step 4: Formalize Nick Partnership
Inspector Nick already generates $5,275/lead ROI. Review and activate the Inspector Nick Accelerator plan at morpheus.callbrightside.com/documents/BSP_Inspector_Nick_Battle_Plan.html. Confirm the referral fee structure with Nick. Track every referral in the ST "Referral Program 2026" campaign.
Step 5: Activate the Referral Weapon API (Already Built)
• Referral scanner: /api/referrals/scan -- already identified 11 referral candidates
• Referral sender: /api/referrals/send -- sends personalized referral request via SMS
• Activate after 10DLC is approved (depends on Blind Spot #3 completion)
Step 6: Email Campaign to 209 Best Referrers
Add to the post-job email sequence (Day 14): "Know someone with a plumbing problem? Refer them to Bright Side and you both save $50." Include the customer's unique referral code and a shareable link. Target the 209 most likely referrers: 52 Champions + 42 Whales + 115 Loyal.
💡
BLIND SPOT #9

POST-JOB SEQUENCES + CROSS-SELL AUTOMATION

Revenue potential: $150K+ (avg ticket increase 15-20% with cross-sell)
Current State: ❌ No post-job email sequence. No cross-sell recommendations. Customer completes job, relationship goes dormant until next emergency.

Required Sequences:
Day 1 post-job: Thank you + review request + "Here is what we recommend next" (based on job type)
Day 7: "How is everything working?" check-in (builds trust, catches callbacks)
Day 30: Related service offer (drain cleaning -> sewer inspection, water heater repair -> water heater replacement evaluation)
Day 90: Maintenance reminder (seasonal tie-in)
Day 365: Anniversary "It has been a year" checkup reminder
Keyword tie-in: Cross-sell recommendations powered by keyword cluster relationships. "Drain cleaning" customer gets content about "sewer camera inspection" (related cluster, higher ticket).

⚙️ MICROSTEPS: POST-JOB AUTOMATION SEQUENCE

Step 1: Trigger on Job Completion
Nexus timer checks ST for newly completed jobs every 2 hours. When a job flips to job_status = "completed", the post-job sequence begins. Each touchpoint is auto-queued in the Send Queue tab with the correct scheduled date. No manual intervention after initial setup.
Step 2: The 6-Touchpoint Post-Job Sequence
Hour 2: SMS review request (ties to Blind Spot #4). "Hi [name], [tech_name] just finished your [service]. Would you share your experience? [Google review link]"

Day 1: Email thank-you. Subject: "Thanks for choosing Bright Side." Body: summary of what was done + maintenance tips specific to service type (e.g., "After a drain cleaning, avoid pouring grease for 48 hours").

Day 7: Email check-in. Subject: "How is everything working?" Body: "Just checking in to make sure everything is running smoothly after your [service type]. If anything seems off, call us at (913) 963-1029."

Day 30: Email maintenance reminder + cross-sell relevant to service type (see Step 3).

Day 90: Email reactivation / cross-sell. "It has been 3 months since your [service]. Here is what we recommend next."

Day 365: Annual checkup reminder. "It has been a year since we last visited. Time for your annual plumbing inspection." Ties to membership pitch (Blind Spot #5): "Members get this inspection free."
Step 3: Cross-Sell Logic (Service-Specific Recommendations)
Each service type maps to a recommended follow-up service:
Sewer repair ➡️ offer annual camera inspection plan ("Catch problems before they become emergencies")
Water heater repair ➡️ offer tankless upgrade evaluation ("Your tank unit is aging -- here is what a tankless upgrade looks like")
Drain cleaning ➡️ offer hydro jetting ("For a deeper clean that lasts 3x longer than standard snaking")
Emergency service ➡️ offer maintenance plan ("Prevent future emergencies with scheduled inspections")

This logic is coded into the email template selection. The Send Queue processor checks the original job type and picks the matching cross-sell template automatically for Day 30 and Day 90 emails.
Step 4: Personalization Variables
Every email uses these merge fields from ST data:
[customer_name] -- first name from ST contact
[service_type] -- job type from the completed job
[tech_name] -- technician first name
[job_date] -- date job was completed
[cross_sell_service] -- recommended next service (from Step 3 logic)
Step 5: Build the Sequence in Apps Script + Nexus
Templates already exist in the Nexus content pipeline. Build the sequence logic in Apps Script:
• When a new "completed" job is detected, insert 6 rows into Send Queue with scheduled dates (Hour 2, Day 1, Day 7, Day 30, Day 90, Day 365)
• Each row references the correct template + personalization data
• The existing sendPendingEmails trigger (runs daily at 9 AM) handles delivery
• If the customer books a new job before Day 90, reset their sequence (they are no longer dormant)
Step 6: Measure Results
Track in the Results tab:
Repeat customer rate: What % of post-job sequence recipients book again within 12 months? Target: 15% (up from ~8% estimated).
Cross-sell conversion: What % click the Day 30/90 cross-sell offer and book?
Review generation rate: What % of Hour 2 SMS requests result in a Google review?

ADDITIONAL OPPORTUNITIES

// Lower priority but should be on the roadmap

🌎 SPANISH-LANGUAGE OUTREACH

15% of KC metro is Hispanic. Zero Spanish content or outreach exists. Competitors mostly English-only too.
Action: Translate top 5 email templates. Create Spanish sewer/drain landing page. Target Spanish-language keywords (est. 3,000+ from 40,847 pool).

🏢 COMMERCIAL OUTREACH (Business Owner Bob)

Only 4 customers classified as Business Owner Bob. 8-12% of revenue should be commercial. Bad history (per Stephanie).
Action: Identify commercial properties in ST by address/job type. Build separate outreach track with maintenance contracts. Requires Kalen buy-in.

📱 GBP POSTING AUTOMATION

Google Business Profile posts expire after 7 days. Manual posting is inconsistent. Competitors post weekly.
Action: Auto-generate GBP posts from blog content + keyword data. Schedule via GBP API. Include seasonal offers. 1 post/week minimum.

📊 SOCIAL CONTENT FROM KEYWORD DATA

40,847 keywords = unlimited social content ideas. Question-format keywords are perfect for social posts and short videos.
Action: Extract "how to" and "why does" keywords. Generate 30-day social calendar. Each post links to relevant blog (SEO backlink).

🔊 WIN-BACK CAMPAIGNS (Dormant)

4,457 "new" customers + 430 "cooling" = massive win-back opportunity. Campaign 1 (Dormant Reactivation) is designed but NOT launched.
Action: Launch Campaign 1 after warmup. Target cooling segment first (430 customers, recent enough to remember BSP). Estimated $100K+ recoverable.

🔗 PREDICTIVE MAINTENANCE OUTREACH

Zeus RAG has the playbook. Use job history to predict when customers need service (water heater age > 8yr, last drain clean > 12mo).
Action: Build predictive triggers in Nexus. Auto-queue maintenance reminder emails when customer hits threshold. Equipment data table exists in DB.

KEYWORD WEAPONIZATION x OUTREACH

// How 40,847 keywords power every outreach channel. Data from PostgreSQL seo_keywords_full.
Keyword Cluster
Email Use
SMS Use
Social / GBP Use
Sewer (8,400+ kw)
Storm alerts to sewer-zip customers. Estimate follow-ups with cost blog link.
Geo-targeted storm SMS. "Heavy rain forecast -- is your sewer line clear?"
Before/after sewer repairs. Cost comparison posts. FAQ answers from keywords.
Water Heater (5,200+ kw)
Age-based replacement reminders. Energy savings calculator email.
"Your water heater is [X] years old. Free inspection this week."
Tankless vs tank comparisons. Installation timelapse videos.
Drain (4,100+ kw)
Seasonal drain maintenance tips. Cross-sell from drain to sewer camera.
"Slow drains? $89 dispatch fee special this week."
DIY prevention tips. "5 things never to put down your drain" posts.
Emergency (3,800+ kw)
"Save our number" campaign. Emergency prep checklist for homeowners.
Post-freeze blast: "Pipes frozen? We are available now. (913) 963-1029"
Emergency response stories. "We were there in 45 minutes" posts.
Near Me (12,400+ kw)
Geo-personalized emails by zip. "Your neighbors in [zip] trust us."
Hyper-local: "We just finished a job near [area]. Need anything?"
Area-specific GBP posts. Local landmark references. Community engagement.
Cost/Pricing (6,900+ kw)
Estimate follow-ups linking to cost guide blogs. Financing options.
"Got your estimate? Financing available. Reply FINANCE for details."
Price transparency posts. "What does X really cost in KC?" content.

EXECUTION PRIORITY MATRIX

// What to build first. Ranked by: revenue impact x effort x dependencies.
#
Initiative
Revenue
Effort
Dependency
Status
1
DKIM + SPF + Email Warmup
$100K+
2 hrs
None
❌ DO NOW
2
Estimate Follow-Up Automation
$310K+
8 hrs
Email warmup
❌ WEEK 1
3
Review Velocity System
Indirect
4 hrs
None
⚠️ WEEK 1
4
Dormant Reactivation Launch
$100K+
3 hrs
Email warmup
⚠️ WEEK 3
5
SMS (10DLC + Telnyx)
$75K+
6 hrs
10DLC approval
⚠️ WEEK 2-4
6
Post-Job Sequences
$150K+
6 hrs
Email warmup
💡 WEEK 4
7
Facebook Pixel + Retargeting
$50K+
3 hrs
GTM access
💡 WEEK 2
8
Seasonal Campaign Calendar
$200K+
4 hrs
Email warmup
💡 WEEK 3
9
Referral Program
$200K+
6 hrs
None
💡 MONTH 2
10
Membership Soft Launch
$135K/yr
8 hrs
Brenda hire
💡 TBD
TOTAL ADDRESSABLE REVENUE: $1.3M+ annually // Conservative estimates. Actual depends on execution velocity and email deliverability foundation.

EMAIL CAMPAIGN SYSTEM

// $322K Revenue Pipeline. 5,432 customers. 6 segments. Zero HubSpot.
Merged from BSP_Email_Campaign_System.html into Outreach Command Center

📊 DATA LAYER

// Three API sources merged into one unified customer intelligence database
🔧
ServiceTitan
3,700 customers
Job history + revenue
Phone, email, address
➡️
💰
QuickBooks
Payment history
Invoice amounts
Account status
➡️
💳
Ramp
Vendor spend
Cost categories
$138K/90d tracked
➡️
🤖
Nexus Merge
Deduplication
Enrichment
Segmentation
5,432
Total Customers
4,832
Valid Email Addresses
$4.9M
Combined Lifetime Value
89%
Email Coverage Rate

📊 Data Merge Pipeline

ServiceTitan provides the core customer records: names, contact info, job history, and revenue totals. QuickBooks adds payment status and invoice accuracy. Ramp provides vendor-side cost data for true profitability calculations. Nexus merges all three sources nightly at 4 AM, deduplicates by phone and email, enriches with zip-level sewer risk scores, and segments into actionable campaign tiers.

🧹 DATA CLEANUP

// 8 critical fixes applied before any email leaves the system

✅ Cleanup Operations (All Complete)

Removed 95 duplicate records (flagged in titan.customers)
Validated 3,882 email addresses across customer database
Phone enrichment: 99.2% coverage (4,419 of 5,436 via ST API)
Filtered 105 commercial accounts into separate segment
Standardized phone formats to E.164 (+1XXXXXXXXXX)
Validated 3,882 emails against bounce-check patterns
Segmented 4,731 contacts into 6 campaign tiers
Enriched records with neighborhood risk scores and persona data
✅ Total contacts segmented: 4,731 | Google Sheet: live and synced

🎯 6 CAMPAIGN SEGMENTS

// Precision targeting based on job history, spend, recency, and risk

🚨 Tier 1: Still Need Help?

3,189 contactsUnconverted Leads
Leads who contacted BSP but never became customers. Largest segment. First contact reactivation with service offer.
Subject: "Still need help with your plumbing?
Template: Still Need Help?

💰 Tier 2: Maintenance Plan

710 contactsPast Customers
Past customers eligible for seasonal maintenance reminders. Water heater flush, sump pump check, drain cleaning.
Subject: "Commercial plumbing maintenance for your property"
Template: Maintenance Plan

🌧️ Tier 3: We Miss You

504 contactsPast Customers
Past customers who completed jobs but have not returned. Personal reconnection with value offer.
Subject: "We miss working with you, [NAME]"
Template: We Miss You

💸 Tier 4: Open Estimate Follow-Up

121 contactsOpen Estimates
Customers who received an estimate but never booked. Follow-up with the specific estimate details and urgency.
Subject: "Your estimate is still waiting, [NAME]"
Template: Open Estimate Follow-Up

🏠 Tier 5: Commercial Reactivation

105 contactsCommercial Accounts
Commercial property accounts. Different messaging: zero disruption, after-hours service, preventive maintenance contracts.
Subject: "Commercial plumbing maintenance for your property"
Template: Commercial Reactivation

⭐ Tier 6: VIP Personal

102 contactsHighest Value
Whale and high-tier customers. Personal outreach from Robert or Kalen. Exclusive offers, referral program, VIP treatment.
Subject: "A personal note from Bright Side Plumbing"
Template: VIP Personal

🧠 PERSONALIZATION ENGINE

// 6 dynamic variables turn generic emails into personal conversations

🏷️ Dynamic Variables

[NAME] Customer first name from ST
[ZIP] Zip code for local targeting
[LAST_JOB] Last service type performed
[DAYS_SINCE] Days since last service
[PIPE_TYPE] Known pipe material (orangeburg, clay, PVC)
[SPEND] Lifetime spend for loyalty messaging

📧 Example Rendered Email

From: Bright Side Plumbing <service@callbrightside.com>
To: Timothy Higgins <tim.h@email.com>
Subject: Storm season alert for 66213 homeowners
Hi Timothy,

Spring storms are heading toward 66213 this week. Since your last service was a sewer camera inspection (247 days ago), we wanted to make sure your lines are clear before heavy rain hits.

Your home has clay pipes, which are more vulnerable to root intrusion and storm damage. We are offering complimentary camera inspections for returning customers this month.

📞 Call (913) 963-1029
As a customer who has invested $4,200 with us, you are a valued part of the BSP family.

Your Bright Side Plumbing Team

⚙️ SEND ENGINE

// Google Sheets + Apps Script. Zero monthly cost. Full control.

📊 Architecture: 4-Tab Google Sheet

👥
Contacts
4,832 email records
Persona tags
Segment assignments
📤
Send Queue
Scheduled sends
Template assignment
Status tracking
📝
Templates
HTML email bodies
Subject lines
Merge fields
📊
Results
Open rates
Click rates
Revenue attribution
📊 OPEN THE COMMAND CENTER SHEET ➡️

🛡️ Safety Gates

🛑 Daily Send Limit
Max 100/day (Phase 1), scaling to 500/day. Prevents Gmail throttling.
⚠️ Unsubscribe Check
Every send checks the Unsubscribes tab first. CAN-SPAM compliance automatic.
🔄 Duplicate Prevention
Same contact cannot receive same template within 30 days.
✅ Review Gate
Robert reviews every campaign before launch. No auto-send.

📡 TRACKING PIPELINE

// From send to revenue, every step is measured
📤
SEND
Apps Script
via Gmail API
➡️
👁️
OPEN
Tracking pixel
fires on open
➡️
🔗
CLICK
Link wrapping
UTM parameters
➡️
📞
CALL
Phone match
ST caller ID
➡️
📅
BOOK
ST job created
Conversion logged
➡️
💰
REVENUE
Invoice amount
Full attribution

🔍 Attribution Method

Every email recipient is logged with phone and email. When a call comes in to (913) 963-1029, Daniel AI and ServiceTitan capture the caller ID. Nexus cross-references callers against email recipients. Match within 30 days = attributed revenue. This gives BSP something HubSpot cannot: direct email-to-invoice revenue tracking through ServiceTitan.

🔄 21-DAY FOLLOW-UP SEQUENCE

// Automated escalation from email to AI phone outbound
Day 0: Initial Email
Primary campaign email sent. Personalized with [NAME], [ZIP], [LAST_JOB]. Tracking pixel embedded.
Day 3: Opener Follow-Up
If opened but no click/call: shorter follow-up with different subject line. Adds urgency.
Day 7: Value Add Email
Educational content regardless of open status. Sewer tips, water heater lifespan, seasonal checklist.
Day 14: Last Chance Offer
Clear CTA: "Schedule this week and your $89 dispatch fee is waived."
Day 21: Daniel AI Outbound
No email response? Daniel AI calls directly. "Hi [NAME], this is Daniel from Bright Side Plumbing." Books into ServiceTitan.

🤖 Daniel AI Integration

Daniel (Vapi, not Retell) handles the final escalation. Phone: (913) 963-9817. After 21 days with no email engagement, the contact is queued for outbound calling. Daniel references the customer's history from ServiceTitan. Average booking value from Daniel reactivations: $2,876.

💰 ROI PROJECTIONS

// Conservative, moderate, and aggressive reactivation scenarios

📊 Revenue at Three Reactivation Rates

Metric5% (Conservative)10% (Moderate)15% (Aggressive)
Emails Sent4,8324,8324,832
Reactivated242483725
Avg Job Value$667$667$667
Projected Revenue$161,414$322,161$483,575
Campaign Cost$0$0$0
ROASInfiniteInfiniteInfinite
// $0 send cost. $0 platform fee. HubSpot would add $17,400/year before the first email.

📋 ASHTON'S SEWER ESTIMATE DATA

// 149 records analyzed. $262,036.80 recovered from $908,450.00 estimated.
149
Total Records
$908,450
Total Estimated Revenue
$262,037
Total Actual Revenue
75.2%%
Zero Revenue Rate
$6,097
Avg Estimated / Job
$1,759
Avg Actual / Job

📊 Revenue by Technician

TechnicianJobsEstimatedActual RevenueConversion %
Izac McDermott16$108,280.00$98,462.4990.9%
Unassigned6$43,200.00$45,398.32105.1%
Dan Chritton61$338,860.00$29,569.508.7%
Kalen Barker4$28,800.00$26,874.3193.3%
Anthony Erickson33$185,700.00$24,432.1813.2%
Ricardo Castillo1$7,200.00$14,950.00207.6%
Nick Chernioglo6$43,200.00$14,000.0032.4%
Scott Gibson16$115,200.00$4,550.003.9%
David Gallaher5$30,810.00$3,800.0012.3%
Matthew Schneweis1$7,200.00$0.000.0%

🏆 Top Revenue Jobs

CustomerTechnicianEstimatedActualCityDate
Robert KahnIzac McDermott$5,470.00$42,109.02Overland Park2025-12-17
Donna HansenUnassigned$7,200.00$33,750.00Kansas City2026-03-19
Jessica SifuentesIzac McDermott$7,200.00$27,500.00Kansas City2025-12-04
Ryan GuspafsonKalen Barker$7,200.00$25,074.31Overland Park2025-12-12
Jeffery HaasIzac McDermott$5,470.00$17,000.00Kansas City2025-12-03
Jesse VenzorRicardo Castillo$7,200.00$14,950.00Overland Park2025-10-29
Kathy BulmanNick Chernioglo$7,200.00$14,000.00Kansas City2025-12-26
Spencer WilliamsIzac McDermott$7,200.00$11,853.47Overland Park2026-01-23
Congera PascasieUnassigned$7,200.00$11,000.00Kansas City2026-01-02
David ZirhutAnthony Erickson$5,470.00$8,850.00Kansas City2026-01-26

🔍 Full Sewer Estimate Database (Searchable)

TechJob IDCustomerCityZipEstimatedActualDateSummary
Anthony Erickson59297788Timothy HigginsKansas City64127$7,200.00$0.002026-03-20Customer has a collapsed sewer line that they need located. Customer would like
Anthony Erickson59156238Aarron NollOverland Park66210$7,200.00$360.002026-03-10The valve of the tenants main line is leaking. Call Aubrey prior to arrival (con
Anthony Erickson58390285Nick BukatyOverland Park66212$7,200.00$0.002026-01-10Appointment Window: First Available Booking Details: POC: Nick Bukaty #913-9
Dan Chritton59239169Don WrightShawnee66203$7,200.00$0.002026-03-17Customer wants us to camera the main sewer line as they are experiencing multipl
Dan Chritton58823036Phil CohanOverland Park66212$7,200.00$0.002026-02-12: need repaired down pipe from bathroom to sewer line in crawl space. Looks like
Dan Chritton58199292Daniel Gross$7,200.00$0.002025-12-22Appointment Window: First Available Booking Details: Customer has a clogged
David Gallaher58417298George MartinOverland Park66204$7,200.00$0.002026-01-13outlook. Customer would like a plumbing evaluation including a sewer inspection
David Gallaher58240764Janice WilliamsKansas City66104$7,200.00$0.002025-12-29Customer is having an issue with their sewer backing up. They need a sewer clean
Izac McDermott58697114Deidre RandleKansas City66104$7,200.00$0.002026-02-03Customer’s husband looked at their sewer and wanted us to come out and check it
Izac McDermott58680060Vic WyldeKansas City64116$7,200.00$0.002026-02-02Customer has a water main leaking in the ceiling.&nbsp;4 in water main line. Loo
Izac McDermott58558204Spencer WilliamsOverland Park66207$7,200.00$11,853.472026-01-23Back up happened last night - we did a spot repair about a year and a half ago.
Izac McDermott58496509Kristin JohnsonLenexa66215$7,200.00$0.002026-01-19Customer has a break in their sewer line. Customer has a video and detailed expl
Izac McDermott58111949Diana EdwardsKansas City64128$7,200.00$0.002025-12-15Customer is having sewer and water backing up into the kitchen in 3 different un
Izac McDermott58000650Jessica SifuentesKansas City64134$7,200.00$27,500.002025-12-04Customer has a house that is under contract. They had a blockage that was jetted
Izac McDermott57991164Mimi Granja (Seller)Kansas City64132$7,200.00$0.002025-12-03Customers house is under contract, and a buyer did a sewer scope. About 75 ft in
Izac McDermott57822727Chris SutterFairway66205$7,200.00$0.002025-11-18Seen our trucks in his neighborhood for a couple weeks. Customer then looked us
Izac McDermott57607676Christopher ClarkeKansas City64114$7,200.00$0.002025-11-03$49 dispatch Client called in about a sewer, it's been scoped and he knows w
Izac McDermott57322131Chris GarayKansas City64151$7,200.00$0.002025-10-21Customer is having a sewer smell coming in through the basement. It has taken th
Izac McDermott57157372Kelly WhitfieldMission66202$7,200.00$0.002025-10-09$49 dispatch fee, waived if they book a repair. The sewer line out by the st
Izac McDermott57054588Holly Snow$7,200.00$0.002025-10-03Mrs. Holly Snow called back in to let us know that after her sewer repair the to
Kalen Barker58107134Ryan GuspafsonOverland Park66212$7,200.00$25,074.312025-12-12Collect payment - Sewer
Kalen Barker59293692Andrew ErnestineKansas City64127$7,200.00$0.002026-03-20Customer has a clogged sewer drain that is backing up
Kalen Barker59216903Edward WilliamsKansas City64127$7,200.00$0.002026-03-14Water is seeping up from a drain in the yard and ground is staying wet, customer
Kalen Barker57645697Cecil PaulOak Grove64075$7,200.00$1,800.002025-11-05Customer thinks we have been out to their house before. Customer is having an is
Matthew Schneweis57990524Ryan GuspafsonOverland Park66212$7,200.00$0.002025-12-03Customer needs a main line sewer cleaning.&nbsp;Customer just purchased the hous
Nick Chernioglo58247164Alex CarrPrairie Village66207$7,200.00$0.002025-12-29Appointment Window: First Available Booking Details: Alex Carr 8168855540 Ho
Nick Chernioglo58233483Kathy BulmanKansas City64116$7,200.00$14,000.002025-12-26Appointment Window: First Available Booking Details: Kathy Bulman (816) 591-
Nick Chernioglo58137596Tuan Michael BestGrandview64030$7,200.00$0.002025-12-16Customer has a mainline/ sewer issue. Customer will get roots in there occasiona
Nick Chernioglo58089468Richard GarciaPleasant Hill64080$7,200.00$0.002025-12-11Landlord - 660-600-1065 Becky Customer thinks that he has a sewer leak. Want
Nick Chernioglo57844605Steven NoahKansas City64123$7,200.00$0.002025-11-19The 2 main lines that come off of the water tank itself. Those are broke off. Cu
Nick Chernioglo57698181Steven NoahKansas City64123$7,200.00$0.002025-11-10The 2 main lines that come off of the water tank itself. Those are broke off. Cu
Ricardo Castillo57536252Jesse VenzorOverland Park66204$7,200.00$14,950.002025-10-29$49 dispatch, $70 Sewer Scope, Client is homeowner, this is a rental pro
Scott Gibson59031294Maureen FlannerHarrisonville64701$7,200.00$4,550.002026-02-27Has the sewer line replaced with pvc 4 years ago, monday she noticed when she fl
Scott Gibson59321852Unknown$7,200.00$0.002026-03-23Customer had a home inspection, and now they are questioning the sewer line. Wou
Scott Gibson59178236Rodger HardingOverland Park66210$7,200.00$0.002026-03-11Sewer is backing up into the house.
Scott Gibson59156220Emily WelchLeawood66209$7,200.00$0.002026-03-10Customer is trying to determine the next best task of exploration. They have had
Scott Gibson59129358Talyn NicholsLawrence66047$7,200.00$0.002026-03-09Customer is looking around for a plumber. Customers main line is clogged. Custom
Scott Gibson59093756Dru ShinerPrairie Village66208$7,200.00$0.002026-03-05The Sewer stack port has a cracker access cap. Would like that replaced. Amy wil
Scott Gibson58958204Mark HopfingerLee's Summit64086$7,200.00$0.002026-02-23Customer has a clogged sewer in Lee Summit. Customer had their son in law had a
Scott Gibson58946300Ethan CarterKansas City64153$7,200.00$0.002026-02-20Interested in getting a camera inspection of the sewer. To be completely hoenst
Scott Gibson58775548Ed MillerKansas City64119$7,200.00$0.002026-02-09Appointment Window: First Available Booking Details: POC Ed Miller 206-775-4
Scott Gibson58502780Jackson ThomasKansas City64116$7,200.00$0.002026-01-19Customer will need to leave by 10. House is under contact, and the customer is l
Scott Gibson57933948Brian DierksLeawood66206$7,200.00$0.002025-11-28Main line stoppage from existing client urgent need.
Scott Gibson57811836Jessica WilkersonBlue Springs64015$7,200.00$0.002025-11-17Main line cleaning/ back up. Husband is a veteran. It is all backing into their
Scott Gibson57763836Daniel RynardMission66202$7,200.00$0.002025-11-12wanting to get a bid for a sewer repair. Customer has a video.&nbsp;He is going
Scott Gibson57687422Sonya GoughLee's Summit64064$7,200.00$0.002025-11-07Looking for after hour emergency plumbing - Customer thinks her main line. She i
Scott Gibson57633922Bulldog InspectionsRaymore64083$7,200.00$0.002025-11-04Customer moved into lone jack a month ago and we did some work on the sewer syst
Scott Gibson57297163Chris ParrishOverland Park66210$7,200.00$0.002025-10-18$49 dispatch pets will be secure,. adult will be present Gurgling in the
Unassigned59277948Donna HansenKansas City64137$7,200.00$33,750.002026-03-19Customer has a backup in their basement sewer drain. They said they have backups
Unassigned58965372Kenneth BoydstonGladstone64118$7,200.00$0.002026-02-24Appointment Window: First Available Booking Details: POC: Kenneth Boydston
Unassigned58666236Skylar CarnesOlathe66061$7,200.00$0.002026-02-02Appointment Window: First Available Booking Details: Needs main drain line c
Unassigned58286588Congera PascasieKansas City66104$7,200.00$11,000.002026-01-02Appointment Window: First Available Booking Details: POC RETURNING CUSTOMER/
Unassigned57230727Jessica LahskyOlathe66062$7,200.00$648.322025-10-15Sewer smell in the basement that comes and goes. Customer is not sure what is go
Unassigned57203836Wayne SabatkaKansas City64131$7,200.00$0.002025-10-13$49 dollar dispatch $70 sewer unclogging, sounds like a backup emergency in
Anthony Erickson59316010Diane McVeyPaola66071$5,470.00$0.002026-03-23Customer needs to have a water line repaired. It is an outside water line that w
Anthony Erickson59317628Tiffany VrabacOverland Park66224$5,470.00$0.002026-03-23When we installed the radon system, there is no way to get into the sump pump sy
Anthony Erickson59316860Unknown$5,470.00$433.682026-03-23Backyard spigot that we had installed. Customer was on vacation, came home, and
Anthony Erickson59301116Unknown$5,470.00$1,186.002026-03-20From the basement you can see the wax ring and there is a little bit of leaking,
Anthony Erickson58734611Mike LockwoodKansas City64118$5,470.00$0.002026-02-05Sold work - shower and vanity install
Anthony Erickson59238913Sam Terry (Common Ground Customs)Olathe66062$5,470.00$0.002026-03-17Customer has a wand that needs put into a fitting Anthony install previously for
Anthony Erickson59225853Jeremiah LanceOlathe66062$5,470.00$0.002026-03-16Customer is needing to get some input regarding some moisture behind some tile i
Anthony Erickson59219196Jim KendrickKansas City64137$5,470.00$0.002026-03-14Customer says technician Anthony installed a water filtration device a few weeks
Anthony Erickson59227132Terry FrockGardner66030$5,470.00$5,268.002026-03-16It is about 1/2 in diameter water pipe that is leaking at the joint in the basem
Anthony Erickson59161725Jim MeckelPrairie Village66208$5,470.00$0.002026-03-11Customer has a sump pump in the basement. For some reason it is beeping and is s
Anthony Erickson59147644Kevin RodgersLee's Summit64064$5,470.00$0.002026-03-10Customer is replacing a sink and needs a bid to replace the plumbing.
Anthony Erickson59079554Anthony AlagnaGrandview64030$5,470.00$0.002026-03-04Cusotmer is getting their bathroom remodeled. They need plumbing to be hooked up
Anthony Erickson58969596Alan LybargerOverland Park66223$5,470.00$0.002026-02-24waived $49. The client has two laundry valves, and the entrance valve needs to b
Anthony Erickson58943868Sam MiddletonKansas City64119$5,470.00$802.502026-02-20Customer is looking to have the pipes to his bathroom sink replaced. Customer ha
Anthony Erickson58918780Vicky GuessKansas City64114$5,470.00$2,609.002026-02-19Appointment Window: First Available Booking Details: Vicky Guess 816 589 302
Anthony Erickson58850940Robert TownsendOlathe66062$5,470.00$1,020.002026-02-15Appointment Window: First Available Booking Details: PoC: Owner, Green Sky C
Anthony Erickson58849532Jeremy IrishOlathe66061$5,470.00$0.002026-02-14Appointment Window: First Available Booking Details: Jeremy Irish 801) 870-6
Anthony Erickson58848907Curtis AllenOverland Park66221$5,470.00$0.002026-02-14Booked via Scheduling Pro: Customer Name: Curtis Allen Time slot requested: Mo
Anthony Erickson58817791Theo DrewloLee's Summit64086$5,470.00$0.002026-02-12Customer has a commercial grade water softener that they would like installed.
Anthony Erickson58801916Jose SandobaoGrain Valley64029$5,470.00$0.002026-02-10Customer has a water heater that is not getting hot water but the pilot is on.&n
Anthony Erickson58770940Mark CrockerIndependence64055$5,470.00$0.002026-02-09Customer is retired and he is wanting to replace his electric water heater. 50 g
Anthony Erickson58728444Jake MobleyKansas City64131$5,470.00$399.002026-02-05Rework - Stack replacement / Pull and reset.
Anthony Erickson58674556Carol CaoKansas City64137$5,470.00$0.002026-02-02Customer is looking to do a 40 gal short unit because there is not enough space
Anthony Erickson58629756Tyler WaughLenexa66215$5,470.00$0.002026-01-29Customer has seen our trucks around their neighborhood. Customer would like to h
Anthony Erickson58583804David ZirhutKansas City64118$5,470.00$8,850.002026-01-26Main outside of the house into the house is broke. When the customer has a water
Anthony Erickson58378113Tommy RollinsKansas City64134$5,470.00$0.002026-01-09Customer would like a Single water pressure cartridge replacement for shower&nbs
Anthony Erickson58376188Jim PomboStilwell66085$5,470.00$0.002026-01-09Customer has an issue, they are trying to get a new washer installed and the cou
Anthony Erickson58375039Chris NewlinOverland Park66221$5,470.00$0.002026-01-09Customer has a couple fixture replacements. He would also like to get some bids
Anthony Erickson58265602Stephen EastmanOverland Park66224$5,470.00$0.002025-12-31Water Heater anode rods replaced. Customer has 2 water heaters. They are “chaine
Anthony Erickson58232060Leroy AsburyLee's Summit64082$5,470.00$3,504.002025-12-26Leroy has a 12-year-old sump pump with a battery backup in a radon/pump pit. He
Dan Chritton59316476Unknown$5,470.00$0.002026-03-23Storm shelter sump pump is not working, is not pumping water out.&nbsp;We have b
Dan Chritton59296764Dan ThornburgOlathe66062$5,470.00$0.002026-03-20Has a couple of outdated toilets they need replaced, plumbing works fine and cus
Dan Chritton59309948Katie and Clint CollierOverland Park66085$5,470.00$0.002026-03-21Customer says hot water hasn't been working right and they had been living with
Dan Chritton59246335Don WrightShawnee66203$5,470.00$0.002026-03-17One of the water heaters in the basement was installed incorrectly. The expansio
Dan Chritton59248767Mark YoungParkville64152$5,470.00$0.002026-03-17Customer has a 21yo bradford white 48g hot water heater and he says it is leakin
Dan Chritton59245564Jason McKee$5,470.00$0.002026-03-17Customer has been out of town for about 11 days and when he arrived home the sum
Dan Chritton59225599Aaron and Mark HungShawnee66226$5,470.00$0.002026-03-16&nbsp;Looking for a quote for someone to replace a bathroom sink shut off valve.
Dan Chritton59168639Shawn and Laurie MillerLeawood66206$5,470.00$0.002026-03-11Sold work/Return work - Dan and Nick previously discussed Dan installing a toile
Dan Chritton59134974Terrence LucasKansas City64157$5,470.00$0.002026-03-09Customer is potentially wanting a purification system installed in their home. C
Dan Chritton59148924Katie FunkOverland Park66212$5,470.00$0.002026-03-10Customer currently has a big high energy efficient, looks like a boiler of a wat
Dan Chritton59121404Darryl TyrusOverland Park66204$5,470.00$0.002026-03-07Customer is looking to get the middle valve replaced in his shower, its a delta
Dan Chritton59104768Mike MoodySmithville64089$5,470.00$1,926.002026-03-06We replaced the shower valve about a week or so and now the tub spout is leaking
Dan Chritton59115903Bobbie WilliamsIndependence64055$5,470.00$0.002026-03-06Customer bought a new dishwasher and needs the old one removed and new one insta
Dan Chritton59091836William PatrickOlathe66061$5,470.00$0.002026-03-05Customer says Dan was out there to do work earlier this week and now has no hot
Dan Chritton59053693Montel ChaseKansas City64130$5,470.00$0.002026-03-03Customer owns a duplex. Her mom lives next door. They had hot water issues, and
Dan Chritton59003022Thomas & Cynthia BallwegOverland Park66221$5,470.00$2,896.002026-02-26Customer thinks there is something wrong with a water heater.&nbsp;They just not
Dan Chritton58989948Alex GetachewKansas City64119$5,470.00$0.002026-02-25Customer cannot find their water shut off valve for their home as they are tryin
Dan Chritton58957981Tiffany FurgasonLawrence66046$5,470.00$0.002026-02-23Customer needs to make an appointment to have her water heater fixed. It is curr
Dan Chritton58943356Wayne WhitesideBelton64012$5,470.00$2,831.002026-02-20U. S. Water heater approx, 30yr old that runs out of hot water midway in showers
Dan Chritton58875388Fred PearlKansas City64152$5,470.00$1,714.002026-02-17Customer would like to know how much it would cost to fix a shower faucet. Custo
Dan Chritton58861713Unknown$5,470.00$0.002026-02-16Becky Davenport - Monday Nick had came out to take a look at a problem she is ha
Dan Chritton58807823Jose CruzKansas City66111$5,470.00$0.002026-02-11On the cold side for the shower it runs good, but the hot water it just drips an
Dan Chritton58745881Michael McGroskyShawnee66216$5,470.00$0.002026-02-06Customer is looking for getting for a sump pump. Customer needs to get one with
Dan Chritton58744852Niranjan KumarOverland Park66213$5,470.00$0.002026-02-06Customer has a kitchen faucet that is leaking. Not sure if it is the faucet itse
Dan Chritton58690431Trudy RingelShawnee66218$5,470.00$0.002026-02-03Looking at customers battery backup system.&nbsp; It has been flashing and beepi
Dan Chritton58740092Laura MillerOverland Park66212$5,470.00$0.002026-02-05We installed a new toilet back in 08/19/24.&nbsp; Customer just called in becaus
Dan Chritton58676482Braden KatzFairway66205$5,470.00$0.002026-02-02Customer has a leaking faucet. Faucet is located in the kitchen. Customer has tr
Dan Chritton58666763Kim GoehringKansas City64118$5,470.00$547.002026-02-02Customer in the bathroom in the shower, customer needs the washers replaced in t
Dan Chritton58593148Adjusted flapper to allow for a larger flush.Kansas City66106$5,470.00$0.002026-01-27Appointment Window: First Available Booking Details: Betty Fuller 913-961-08
Dan Chritton58636796Larry RyksOlathe66061$5,470.00$1,444.502026-01-29Customer needs some pipes replaced under a bathroom sink. They are leaking. Cust
Dan Chritton58592764Tonya DawsonGrandview64030$5,470.00$0.002026-01-27Appointment Window: First Available Booking Details: first time caller - ou
Dan Chritton58585222Collen CampbellKansas City66109$5,470.00$2,725.002026-01-26Customer has hard water in KCK. It builds up a lot. They have replaced the flapp
Dan Chritton58587516Leigh ChatmanKansas City64114$5,470.00$0.002026-01-26Customer has a gas fireplace that needs a new shut off valve put in. No spe
Dan Chritton58584700Robert WaltersKansas City64151$5,470.00$0.002026-01-26In the house when they bought it 4 years ago. Sump pump with a battery back up.
Dan Chritton58563964Vickie HorningKansas City64133$5,470.00$0.002026-01-23Customer bought a new dryer they said they would not install it until someone in
Dan Chritton58409212Laura MillerOverland Park66212$5,470.00$0.002026-01-12Issues since last August , basement pipe replacement1st issue- Concrete placed b
Dan Chritton58558972Patrina MorrisKansas City64130$5,470.00$0.002026-01-23Lowes came in to install a gas stove, but the piping was rusted out a bit.&nbsp;
Dan Chritton58497151Callie PendergrassLeawood66209$5,470.00$2,638.002026-01-19Customer has a shower, showered, and faucet for the shower is misbehaving. Needs
Dan Chritton58493963Debbie WatkinsIndependence64055$5,470.00$0.002026-01-19Nick put on her handles backwards, so it is turning the wrong way off and on. Ka
Dan Chritton58491669Josh VonfeldtOverland Park66221$5,470.00$0.002026-01-19Customer has a water softener that he purchased. Customer does have the water so
Dan Chritton58394876Leroy AsburyLee's Summit64082$5,470.00$641.002026-01-12Appointment Window: First Available Booking Details: Sump pump was installed
Dan Chritton58343420Denny Dobbins (Bright Star Property Management)Overland Park66212$5,470.00$0.002026-01-07Customer bought a building and it has some offices inside. Kansas Gas has come o
Dan Chritton58285436Jonathan FayardOverland Park66204$5,470.00$4,621.002026-01-02Appointment Window: First Available Booking Details: POC: Owner Jonathan Fay
Dan Chritton58308988Ram JonnalaOverland Park66223$5,470.00$0.002026-01-05They need a mop sink moved . They are also want to install a dishwasher as well.
Dan Chritton58292476Brian SwansonKansas City64118$5,470.00$0.002026-01-03Appointment Window: First Available Booking Details: POC Brian Swanson (816)
Dan Chritton58279804Colin KruseKansas City64114$5,470.00$0.002026-01-02I am looking to finish my basement and want to install a new half bathroom. I al
Dan Chritton58270204Michael TaylorKansas City64119$5,470.00$0.002025-12-31Customer had their water heater done a couple months ago. They had a ridiculousl
Dan Chritton58279679Chris SutterFairway66205$5,470.00$641.002026-01-02Customer used his hose a couple days ago, and afterwards noticed some water in t
Dan Chritton58251911Maggie LeMayOlathe66062$5,470.00$0.002025-12-30Customer gas was shut off, and now is back on. But now she cannot get her water
Dan Chritton58054268Joanne DumlerOverland Park66223$5,470.00$1,340.002025-12-09Customer would like to have 2 faucets installed in her master bathroom. It has s
Dan Chritton58030972Austin WilhelmKansas City66104$5,470.00$2,831.002025-12-08Customer has a bathroom faucet that does not function. Customer has replaced the
Dan Chritton58071292Venkat DhandaOverland Park66224$5,470.00$0.002025-12-10Customer does not have a lot of pressure at his home. Water one came last week,
Dan Chritton58045188Stiselle HollOverland Park66214$5,470.00$0.002025-12-09Customer’s toilet, when it flush it backs up and “explodes”?&nbsp;Looking to get
Dan Chritton58027260Tom KerrOverland Park66207$5,470.00$0.002025-12-08Customer was wanting a bid in Overland Park, he has a new bathroom he is remodel
Dan Chritton58011132Isi Fredo (Fred)Kansas City64118$5,470.00$0.002025-12-05Customer wants to replace a water heater. Customer has a supplied water heater.&
Dan Chritton57971964Curtis LeeGrandview64030$5,470.00$0.002025-12-02Customer would like to replace a wax ring on his toilet.&nbsp; Customer is prett
Dan Chritton57926524Greg ThielLee's Summit64082$5,470.00$2,774.002025-11-26Connections to water heater are corroded, and he wants dielectric unions install
Dan Chritton57953404Chad SmithOlathe66061$5,470.00$0.002025-12-01Customer needs us to pull out some piping in a house and replace it with Pex.
David Gallaher58419068Matt MckimLeawood66209$5,470.00$3,800.002026-01-13found some water on her floor. Customer noticed about a month or so ago, I was i
David Gallaher58379772Hampton innKansas City66111$5,470.00$0.002026-01-09Customer wants to switch dryer and water heaters over to gas at a hotel.&nbsp;Sh
David Gallaher58354172The Holiday Inn ExpressKansas City66111$5,470.00$0.002026-01-08Customer wants to switch dryer and water heaters over to gas at a hotel.&nbsp;Sh
Izac McDermott58149116Robert KahnOverland Park66204$5,470.00$42,109.022025-12-17Customer stated they have a leaking 90 that needs to be replaced.
Izac McDermott57986812Jeffery HaasKansas City64123$5,470.00$17,000.002025-12-03Customer has a leak in the service line. City has shut off the water. The leak h
Izac McDermott58013820Lillian SpinxsKansas City64129$5,470.00$0.002025-12-05Customer has a backup in her basement. Customer was going to wash some clothes.
Izac McDermott57611132Keller and Associates Realtors.Kansas City64112$5,470.00$0.002025-11-03Client needs a call half an hour before the technician arrives. Client is homeo
Showing all 149 records. Type to filter.

🔗 CONNECTED SYSTEMS

// Five intelligence systems feed into the email campaign engine
🤖
Daniel AI
Day 21 outbound calls. Vapi voice AI. $2,876 avg reactivation.
Non-engaged contacts to call queue
⛈️
Weather Intel
Storm alerts trigger sewer risk zone emails by zip code.
Weather events to campaign triggers
🧠
Zeus RAG
2,808 knowledge chunks power email personalization.
Knowledge to email content
🏠
Neighborhood Risk
Zip-level sewer risk scores from historical job data.
Risk scores to segment criteria
📊
Attribution Dashboard
Full pipeline from email send to completed invoice.
Revenue data to ROI reporting
Blind Spot Gap Analysis conducted Apr 2, 2026 // Data verified via PostgreSQL bsp_analytics // Trust Engine validated // 40,847 keywords cross-referenced
🚀

LAUNCH PLAN: TUESDAY APR 8

Phased drip. Reputation-safe. All 4,731 contacts over 2 weeks.
4,731
Contacts Queued
✅ In Google Sheet
6
Email Templates
✅ Written + Tested
DKIM
Authentication
✅ Configured Apr 2
READY
Apps Script
⏳ Paste + Authorize
✉️ HOW IT SENDS: Google Sheets + Apps Script + Gmail
$0/month. No HubSpot. No external service. All in-house.
📊
Google Sheet
Contact list
⚙️
Apps Script
Engine + drip
📧
Gmail API
Sends email
📅 2-WEEK PHASED DRIP SCHEDULE
📨 WEEK 1: WARMUP
Tue (Day 1): 102 VIP contacts | 2/min | Test deliverability
Wed (Day 2): 121 Open Estimates | 3/min | Monitor bounces
Thu (Day 3): 504 We Miss You | 5/min | Scale if bounce <2%
Fri (Day 4): 710 Maintenance Plan | 5/min | Continue scaling
Week 1 total: 1,437 contacts | Watch: open rate, bounce rate, spam complaints
📧 WEEK 2: FULL SCALE
Mon-Thu: 3,189 Still Need Help | 5/min | Biggest segment
Fri: 105 Commercial | 2/min | Different template
Total Week 2: 3,294 contacts
By end of Week 2: all 4,731 contacted | Reputation established
DRIP RATE REFERENCE (Config: DelaySeconds)
60s
1/min | 60/hr
Safest
30s
2/min | 120/hr
✅ Day 1 Default
12s
5/min | 300/hr
Scale target
6s
10/min | 600/hr
Risk zone
Gmail Workspace limit: 2,000/day. Start at 30s. Scale to 12s after Week 1 warmup.
🔧 TUESDAY DEPLOYMENT (5 minutes)
1
Open Google Sheet 17vf2CxO...P58nU
2
Extensions ➡ Apps Script ➡ Paste code from email_apps_script.js
3
Save ➡ Authorize Gmail permission when prompted
4
Run setupDailyTrigger() once (creates 9 AM CT daily trigger)
5
Config tab: Active = TRUE | DailyLimit = 102 | DelaySeconds = 30
⚠ WILL NOT SEND unless Config.Active = TRUE. Safe to deploy.
KILL SWITCH: Set Config.Active = FALSE to stop all sends immediately.