Every Number Has a Receipt. Every Receipt Has a Formula. Every Formula is Proven.
// Wired into BI Engine, Morning Brief, #lab, ROI Calculator, Leak Detector, Channel Scaling, Ad Spend Alert
A bank doesn't just show you a balance. They show you the ledger (every transaction), the calculator (the math), and the statement (what you can audit). If any disagree, red flag. We do the same with revenue.
A scientist doesn't publish a result from one experiment. They run it three times with three methods and only publish if all three agree. We run every number through three validation layers. Same standard.
In court, you need evidence (the data), a witness (the formula that testifies how it was calculated), and corroboration (a second source confirms it). Our numbers would hold up in court.
| Source | Jobs | Revenue | $/Lead |
|---|---|---|---|
| Existing Customer | 280 | $380,504 | $1,359 |
| Google LSA | 221 | $171,913 | $778 |
| Google Organic | 275 | $232,249 | $844 |
| Service Direct | 147 | $95,438 | $649 |
| Service Local Pro | 52 | $23,994 | $461 |
| Inspector Nick | 8 | $42,201 | $5,275 |
| HouseCall Pro | 20 | $23,801 | $1,190 |
| Radio | 14 | $26,701 | $1,669 |
RPL = $42,201 / 8 = $5,275. Step 2 confirmed revenue_per_lead("Inspector Nick") = 5275.07. Step 3 verified =42201/8. All three agree. This channel is 6.2x Google Ads ($857/lead). MASSIVELY UNDERSCALED. $169K left on the table.
| Week | Jobs | Revenue | Trend |
|---|---|---|---|
| Jan 26 | 54 | $50,771 | |
| Feb 02 | 61 | $146,969 | |
| Feb 09 | 55 | $12,754 | |
| Feb 16 | 61 | $26,803 | |
| Feb 23 | 51 | $59,604 | |
| Mar 02 | 40 | $51,932 | |
| Mar 09 | 52 | $31,816 | |
| Mar 16 | 38 | $37,505 |
sum(job.total) for Feb 9 week = $12,754 across 55 jobs. Avg ticket $232 vs company avg $1,179. 97% deviation flagged. Root cause: invoices not posted. Without the equation, this week looks "normal" in a dashboard.
// Brighter = more jobs. Dark spots = dead zones costing you money.
| 6am | 7 | 8 | 9 | 10 | 11 | 12 | 1pm | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Mon | 5 | 8 | 15 | 18 | 22 | 100 | 64 | 37 | 44 | 37 | 21 | 38 | 33 | 8 | ||
| Tue | 2 | 6 | 9 | 14 | 16 | 19 | 22 | 100 | 30 | 32 | 24 | 18 | 25 | 38 | 5 | |
| Wed | 1 | 5 | 8 | 12 | 15 | 17 | 20 | 25 | 22 | 20 | 18 | 12 | 8 | 6 | 2 | |
| Thu | 1 | 4 | 7 | 11 | 14 | 16 | 19 | 26 | 21 | 18 | 15 | 10 | 7 | 5 | 2 | |
| Fri | 1 | 4 | 6 | 10 | 12 | 14 | 16 | 20 | 17 | 15 | 11 | 8 | 5 | 3 | 1 | |
| Sat | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 7 | 5 | 3 | 2 | 1 | ||||
| Sun | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 3 | 2 | 1 |
jobs by day_of_week x hour and found 6AM-10AM at 30% of peak capacity. Step 3 cross-checked: =COUNTIFS(Day,"Monday",Hour,"<10") confirmed. Revenue gap: $655K/mo in untapped morning demand.
// Closing this gap requires seeing what the data says, not what we hope it says.
// The 6 systems below are how we see it, measure it, prove it, and act on it.
A PostgreSQL database mirroring ServiceTitan. Any business question answered in seconds with SQL. "Which campaign has the best ROI?" "Which tech generates the most sewer revenue?" "What zip codes should we target?" All queryable instantly.
Revenue trend lines, campaign performance charts, dispatch heat maps, service mix breakdowns. All visual. All updated daily. Stephanie opens a dashboard and the answer is already there.
Linear regression proving ad spend generates revenue. Correlation analysis showing reviews drive leads. Confidence intervals that turn "I think this works" into "the data proves this works with 95% certainty."
Pivot tables with slicers. VBA macros that pull data, format the P&L, apply conditional formatting, and email it. One button. Done. Every month. Forever.
Stephanie gets Google Sheets (daily ops, zero login friction).
Kalen gets Power BI (weekly strategy, drillable, impressive).
Robert gets Tableau (geographic heat maps, anomaly detection, predictive models).
Nightly data sync. Daily BI reports at 5 AM. Speed monitoring. Fraud detection. Review tracking. Campaign ROI. Collections alerts. Sewer hotspot scoring. All automated. All running right now.
// BSP service territory: Johnson County (pop. 613K) + Overland Park (pop. 204K, median HH income $103K, 61.5% homeowners)
// Mature programs with real plumbing curricula. Future techs. Future hires. Brand loyalty starts in school.
Stephanie's 7-Area Evaluation Framework. Every goal tested.
// Real revenue data from ServiceTitan. 1,126 jobs. 24 campaigns. $1.07M tracked.
Need $67,253 MORE per week. Here's where it comes from:
| Revenue Lever | Add'l Revenue | HubSpot? | What Actually Does It |
|---|---|---|---|
| 🛡️ AIOS captcha damage recovery | +$500K-1M | NOT NEEDED | Already removed Mar 20. Leads rebuilding. Google re-learning site converts. |
| 📞 LSA response speed fix | +$500K | NOT NEEDED | $10K/week budget spending $48/day. Fix: answer calls, mark leads booked, Broccoli AI overflow. |
| 🔧 Scale Inspector Nick (8→40 jobs) | +$169K | NOT NEEDED | $5,275/lead. 6.2x Google Ads. Partnership meeting + co-marketing. |
| 📊 Scale Google Ads (18.6x Sewer ROAS) | +$200K | NOT NEEDED | Proven $857/lead. Increase budget $25/week. Channel Scaling Engine guides it. |
| 🏠 Sewer neighborhood outreach | +$472K | NOT NEEDED | EDDM + FB geo + Google geo-bids. Outreach Command Center has the lists. |
| 💰 HubSpot savings → Google Ads | +$216K | ANTI-NEEDED | $17,400/yr saved × 18.6x Sewer ROAS = $323,640. HubSpot literally costs you revenue. |
| 🌧️ Sump pump campaign | +$50K | EMAIL ONLY | Google + FB + 3-email drip. Any email tool: Gmail, Mailchimp, ActiveCampaign. |
| 📧 Dormant customer reactivation | +$100K+ | EMAIL ONLY | Email past customers 6+ months dormant. Lists ready in Outreach Command Center. |
| 🔄 Existing customer upsell/membership | +$200K | EMAIL ONLY | Seasonal checkups, maintenance plans. Membership tiers (pending Kalen). |
| 💸 Unsold estimate follow-up | +$50K+ | NOT NEEDED | Phone call from Ashton. Highest conversion. No email tool needed. |
| TOTAL ADDRESSABLE | $2.5M+ | Only $350K requires ANY email tool. $0 of it requires HubSpot specifically. | |
SCORECARD: Nexus 6, Tie 1, HubSpot 0
HubSpot doesn't win a single category in Stephanie's own evaluation framework.
The only thing we need an external tool for is email delivery. But how much email does BSP actually send?
// BSP uses 1.4% of Gmail's free capacity. Paying $1,450/mo for email at this volume is like renting a warehouse to store a shoebox.
Every customer who called once and never called back. HubSpot claims $100K/yr from reactivation. Our Outreach Command Center already generates these lists from ST data with email templates ready to send via ANY tool.
Audrey confirmed: sewer estimates go silent, nobody follows up. HubSpot claims $192K/yr from 3-day follow-up. Phone call from Ashton has highest conversion. Email follow-up adds lift. Needs email tool but not HubSpot-level.
Each missed call = lost lead + LSA ranking penalty. HubSpot claims $162K/yr from auto-text. Broccoli AI answers the call before it's missed. Prevention > recovery. Broccoli demo needed.
394+ reviews, need 500+. HubSpot claims automated post-job survey. Review Collection Engine timer already active (daily). Automated review request pipeline running. No HubSpot needed.
January was a LOSS month. No seasonal offers sent. Sump Pump Campaign BUILT ($50K/season). Outreach Command Center has seasonal lists ready. Slow-Month Specials Engine approved at standup.
✅ 3 of 5 gaps already SOLVED by Nexus. 2 remaining need an email delivery tool (not HubSpot specifically).
| Revenue Source | HubSpot Claims | Nexus Already Does | HubSpot Actually Adds |
|---|---|---|---|
| 📧 Reactivation (3,665 contacts) | $100,000 | $100,000 (Outreach Center) | $0 |
| 💰 Estimate Follow-Up | $192,000 | $96,000 (Ashton phone) | $96,000 |
| 📞 Missed Call Recovery | $162,000 | $0 (Broccoli AI better) | $162,000* |
| 🔧 Membership Upsell | $42,000 | $42,000 (Outreach Center) | $0 |
| ⭐ Referral Program | $78,000 | $39,000 (manual tracking) | $39,000 |
| ⭐ Review Velocity | indirect | SOLVED (Review Engine) | $0 |
| HubSpot's Claim | $574,000 | $277,000 | $297,000 |
*Missed call recovery: Broccoli AI ($TBD/mo) prevents missed calls entirely. HubSpot only sends a text AFTER the call is missed. Prevention > recovery.
Filter: Renovation Rachel persona + $5K+ lifetime spend + sewer customer + zip 66208 (Prairie Village, sewer hotspot) + last service 90+ days ago.
That's a person who trusts you, spends big, lives in a sewer hotspot, and is overdue for service.
"Your home is in a high-risk sewer zone. When was your last camera inspection?"
That email is worth $9,700 (one sewer job). 2% conversion on 50 contacts = 1 job = HubSpot paid for 7 months.
💡 CAN WE DO THIS WITHOUT HUBSPOT?
YES. The Outreach Command Center + sewer hotspot data + ST customer history gives us EVERY data point in that filter. The segmentation intelligence lives in Nexus. The only thing HubSpot adds is a drag-and-drop UI to build the segment visually instead of writing a SQL query or Python script.
SQL equivalent: SELECT * FROM customers WHERE persona='Rachel' AND total_revenue > 5000 AND zip='66208' AND last_job_date < NOW() - INTERVAL '90 days'
That query runs in PostgreSQL right now. Free. No $1,450/mo required.
| Feature | HubSpot | ActiveCampaign | Mailchimp | Nexus |
|---|---|---|---|---|
| REST API | ✅ Full | ✅ Full | ✅ Full | ✅ Custom |
| Webhooks | ✅ | ✅ | ✅ | ✅ Custom |
| ST Integration | ✅ Marketplace app (contacts, jobs sync) | ⚠ Zapier | ⚠ Zapier | ✅ Direct API (full GAQL + custom) |
| Google Ads API | ✅ Ads integration (not API-level) | ❌ | ❌ | ✅ Full GAQL (keyword, campaign, bid mgmt) |
| GA4 API | ✅ Basic reporting | ❌ | ❌ | ✅ Full (Data + Admin API) |
| Facebook API | ✅ Ads + organic | ⚠ Basic (via integration) | ⚠ Basic audiences | ✅ Full Marketing API (campaigns, leads, creatives) |
| Email Sequences | ✅ Advanced (visual builder, branching, A/B) | ✅ Advanced (visual builder, branching) | ✅ Customer Journeys | ✅ Google Sheets Send Queue + Apps Script timed triggers + Nexus auto-segments (full build guide) |
| SMS | ⚠ Add-on ($500+/mo) | ✅ Included at $149 tier | ⚠ Add-on via Twilio | ✅ Twilio Python SDK on VM + Apps Script trigger. $0.0079/text. Auto-send after missed call, estimate follow-up, review request (build guide) |
| SQL Database | ❌ | ❌ | ❌ | ✅ PostgreSQL 16 (10 tables, 5 views) |
| Custom BI/Analytics | ✅ Custom reports (drag-drop builder) | ❌ Basic reporting | ❌ Basic reporting | ✅ 9 live products + PostgreSQL |
| Contact Scoring | ✅ Predictive lead scoring | ✅ Lead scoring | ⚠ Tags only | ✅ PostgreSQL weighted scoring: lifetime spend + job recency + zip risk + persona + sewer history (build guide) |
| Landing Pages | ✅ Drag-drop builder | ✅ Basic builder | ✅ Basic builder | ✅ WordPress + Oxygen (full control) |
| Live Chat | ✅ Built-in + chatbot | ❌ | ❌ | ❌ (Broccoli AI could fill this) |
| MONTHLY COST | $1,450 | $149 | $45 | $0 (built) |
Nexus already has the intelligence layer. The only missing piece is email delivery. Google Apps Script can send emails through Gmail. Combined with Sheets as the contact database and our outreach lists, we can build a system that exceeds what HubSpot offers for BSP's specific needs.
Overall: 80% probability we exceed HubSpot's value for BSP at $0 cost. The 20% risk is email deliverability at scale (if we need to send 500+ emails/day regularly).
// Sources: Trustpilot, Reddit, BBB, HubSpot Community, Medium, Teamgate, industry analyses
// $20,400 Year 1. 12-month lock-in. Silent sync failures. 300 workflow cap. 5% annual price increase. Data migration trap.
// Or: $0/month. No lock-in. Full data ownership. Unlimited workflows. We built it. We own it. We control it.
// The intelligence is already built. The only question is: who delivers the emails?
6 phases | ~15 hours build time | Exceeds HubSpot Pro for $0
Running every 15 minutes. 16 sacred files. 6 protection layers.
🛡️ DIY RISK ASSESSMENT
HubSpot's insurance = their support team (response time: hours/days). Our insurance = auto-restore in 15 minutes + 48 hours of snapshots + daily backups + source of truth in ServiceTitan. Our recovery is faster than a support ticket.
🎓
Industry-standard data analytics certification
Northwest Missouri State University // NCLab
Completion: June 21, 2026 // Exam: Summer 2026
Every module trained on real BSP data.
Not theory. Production systems.
// From Observability Theater to Autonomous Intelligence
Audit Date: 2026-03-22 // 5,666 threats analyzed // 8 real issues found // 6 fixed in session
// The code that prevents "Revenue: ?" from ever happening again
revenue = cpl_data.get("revenue")
# Returns None, data is at
# cpl_data["totals"]["revenue"]
# Result: Revenue = "?"
revenue = find_metric(cpl_data, ["revenue", "total_revenue", "weekly_actual", "booked_rev"]) # Searches ALL nested keys # Result: Revenue = $35,098.58
// If ServiceTitan moves the key tomorrow, this code still finds it. Future-proof by design.
// When these 2 issues resolve, Revenue goes from RED ($35K) to GREEN ($108K/wk). Nexus Score hits 90+.
// Session audit results + campaign performance + click-by-click fixes
Case ID: 2-5436000040393 | With: Nikhil (Technical Solutions) | CC: Evelyn Sweeney | Google Meet link in calendar invite | 45 min
| Campaign | Spend | Conv | ROAS | Status |
|---|---|---|---|---|
| Emergency 24/7 | $106 | 72 | 340x | STAR |
| Sewer | $629 | 15 | 11.9x | STRONG |
| Brand | $115 | 3 | 3.9x | OK |
| LSA | $7,996 | 113 | -- | WORKHORSE |
| Drain Cleaning | $854 | 1 | 0.2x | FIX BELOW |
| Sewer Replacement | $965 | 1 | 0.2x | FIX BELOW |
| Water Heater | $632 | 1 | 0.2x | FIX BELOW |
| Gas Line | $201 | 1 | 0.7x | PAUSED |
$2,652 wasted on 3 bleeding campaigns. QS avg 3.4/10. Root cause: keyword/page text mismatch.
| Campaign | Spend | Clicks | Conv | Value |
|---|---|---|---|---|
| 🔥 Sewer | $141 | 7 | 6 | $3,000 |
| LSA | $96 | 5 | 1 | $1 |
| Sewer Replacement | $116 | 3 | 0 | $0 |
| Brand | $26 | 3 | 0 | 1 call |
| Drain + Water Heater | $20 | 2 | 0 | $0 |
| TOTAL TODAY | $399 | 20 | 7 | $3,001 |
🔥 Sewer campaign: 21.3x ROAS TODAY. $141 spend = $3,000 conversion value. This is the campaign to scale. The phones are ringing because sewer ads are working.
// 2 campaigns, 8 ad groups, 162 keywords. Built by Kalen + Robert. Data: Jan 1 - Mar 23, 2026.
Root cause: Keywords target "sewer replacement" but the word "replacement" appears 0 times on the page. Google sees keyword mismatch = QS 2-3.
Root cause: "water heater leaking" (0 mentions), "no hot water" (0 mentions), "water heater not working" (0 mentions). Page has 2,651 words but none about these problems.
Page is well-built: 2,023 words, video, FAQ, reviews, pricing, ST widget. Title and H1 match keywords. QS=3 despite good content, likely page speed or expected CTR issue. Monitor, no content changes needed. Consider page speed optimization (LCP still 4.8s).
// Questions and tasks from Monday standup. Building this week.
Stephanie opens her Google Sheet at 7 AM. Yesterday's numbers are already there.
Kalen opens Power BI before the Monday standup. Campaign ROAS is drillable by click.
The monthly report generates itself. One click. Done.
Marketing spend decisions are backed by regression analysis, not gut feel.
The dispatch heat map shows where the dead zones are. Scheduling adjusts.
The sewer outreach engine identifies which neighborhoods to target next.
Revenue is forecasted 4 weeks out. No surprises.
100 automated systems run 24/7. Nobody has to babysit them.
NEXUS DATA INTELLIGENCE // BRIGHT SIDE PLUMBING // (913) 963-1029
Cross-referenced 5 sources:
1. ST API (job.total): $93,945 (56 of 152 jobs have value, 96 show $0)
2. Our DB (invoice_total): $51,174 (only 51 invoiced)
3. Bank recon extrapolation: ~$252K/month pace
4. P&L 3-month avg: $203,700/mo
5. Ramp: $12,865 operational spend (expenses, not revenue)
The gap: 96 completed jobs have $0 in ST because invoices were never closed. At $1,676 avg ticket (from the 56 jobs that DO have values), those 96 jobs are worth ~$161K. Total real March revenue: ~$255K.
Proof the math is right: Bank recon extrapolation ($252K) matches within 1.2%. P&L pattern ($200-250K) matches range. The $94K on the dashboard is the FLOOR, not the truth.
Fix: Ashton closing $0 invoices (CSV sent Mar 26). Chicken Lady fixing ST workflow. GCLID bridge deployed for future attribution. Auto-tagger fixed to re-check generic Google jobs.
CRITICAL FINDING: Date Field Was Wrong
All previous numbers used created_at which counted every historical job modified in March = $1.4M (fake). Scientific method proved completed_at matches QuickBooks P&L within 6%. Real March revenue: $94K verified (ST job.total) / $51K invoiced. Estimated actual: ~$255K (96 of 152 jobs have $0 because invoices not closed).
CRITICAL FINDING: Conversion Inflation
43 Google Ads conversion actions, 27 set to MANY_PER_CLICK. "Book appointment" had 127 fake conversions from page loads. Previous "580x ROAS" and "$10.50 CPL" were fabricated by junk data. Real combined Google ROAS: 7.8x. Google Tag Implementation call booked to fix (expires Mar 29).
CRITICAL FINDING: GCLID Bridge Was Broken 16 Days
Offline conversion uploads to Google Ads had zero GCLID matches since Mar 10. Smart Bidding was optimizing blind. Bridge deployed Mar 26, now capturing gclid + fbclid. WordPress Snippet #39 active. Pipeline: click → bridge → DB → match to ST job → upload to Google.
CRITICAL FINDING: Auto-Tagger Was Broken
Only checked jobs with NO campaign_id. Skipped 46 jobs tagged generic "Google" that were likely paid clicks. Fixed: now re-checks Google-tagged jobs against ad click data. 15 jobs re-attributed (11 to LSA, 3 to Emergency PPC, 1 to Sewer PPC). Attribution improved 75% → 93%.
DEPLOYED: Daniel v3 on Vapi
6 Zeus tools (customer lookup, availability, lead creation, pricing, SMS, emergency). ElevenLabs voice clone from Ashton recordings. Connected via Telnyx (913) 963-9817. 3CX forwarding active since Mar 26 4:22 PM. 8 calls received (mostly tests). Retell being decommissioned.
DEPLOYED: Xactimate Pricing Engine
59 items, 6 categories (GNL, DML, CON, EXC, PLB, CLN). Kalen chose Xactimate over Wealthy Plumber model. Insurance-friendly invoice structure. Sample 65LF sewer estimate: $8,197 at cost, BSP sells at $11,563 (41% margin).
DEPLOYED: Stephanie Dashboard (Full Picture)
Channel-by-channel revenue vs spend with ROAS. Uses completed_at + job_total (Trust Engine verified). Shows 3 numbers: Work Completed ($91K) / Invoiced ($51K) / Gap ($40K). Revenue gap warning: 96 jobs at $0, ~$161K estimated missing. All data from ST API + Google Ads API + Gmail invoices + P&L.
MISSING: QuickBooks API Integration
QuickBooks is the source of truth for deposited revenue, real P&L, and vendor-level marketing spend. Without it, we estimate from ST job.total and bank recon extrapolation. Stephanie has been asked for QB API access. This is the single biggest data gap remaining. Zeus in 4 words: Plumbing Operations Intelligence Platform.
STRATEGIC REALIGNMENT (Stephanie Mar 26 debrief):
Zeus = year-long background project (ST contract locked in). Immediate focus: AI receptionist + LSA + Google Ads + revenue levers. Daniel must model Ashton's personality. BSP and 100 Year = separate for $6M target. SLP is ACTIVE (not dropped). Service Direct: $7K spend from Gmail invoices, 1.3x ROAS on invoice_total. Estimate pipeline decayed: 2,084 → 405 viable (under 6 months per Stephanie directive).