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 (12.4x 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 × 12.4x ROAS = $215,760. 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