Housecall Pro export cross-referenced with ServiceTitan — data integrity findings and revenue implications. Generated 2026-04-14 from raw CSV (4,271 rows) + bsp_analytics.titan.customers (5,465 rows).
Migration cutover date inferred: last HCP service activity = 2025-07-15. HCP subscription ($1,521/mo) still active — system of record for the 247 Pure-HCP customers and the historical book on the 4,024 migrants.
| Metric | Value | Notes |
|---|---|---|
| HCP total LTV | $5,755,279.67 | Over ~4 years (2021-09 → 2025-07) |
| — Migrated customers LTV (HCP era) | $5,353,488.06 | 4,024 customers with ST match |
| — Pure HCP LTV | $401,791.61 | 247 customers — the real hidden revenue |
| ST total LTV | $4,724,704.23 | Since cutover, ongoing |
| — Overlap customers' ST-era LTV | $3,244,251.51 | Same 4,024 customers, ST era |
| — Pure ST LTV (estimated) | ~$1,480,452.72 | 1,441 post-cutover customers |
4,024 of ST's 5,465 customers (73.6%) originated in HCP. They present in ST as "Existing Customer" but their true acquisition source lives in HCP — which itself has 52% blank Lead Source. Repeat-revenue analysis built on this bucket is mis-attributed.
Fix: Add "Original Lead Source" custom field in ST, backfilled from HCP where available.
True combined customer book = 5,712 unique (not 9,736). Overlap customers carry revenue in both systems. Naive addition over-counts by ~$5.4M.
Fix: Pass 3 — job-date split per overlap customer. HCP jobs before 2025-07-15 + ST jobs after = true lifetime. Deduplicate only if same job migrated as a record.
HCP recorded 1,158 "google" + 482 "Google LSA" + 167 "GMB" = ~1,800 Google-acquired customers. Their conversions never fed Google's Smart Bidding algorithm because HCP had no GCLID chain.
Fix: No retroactive repair. Forward-only: ensure GCLID → ST → Google Ads offline bucket chain is clean for new leads (see project-offline-conversion-wrong-bucket.md).
| Priority | Action | Owner | Why |
|---|---|---|---|
| P1 | Pass 3 — HCP x ST job-date reconciliation per overlap customer | Robert | Proves whether $5.4M overlap is additive or double-count before any combined-revenue claim |
| P1 | Add "Original Lead Source" custom field in ST, backfill from HCP export | Robert + Ashton | Recovers acquisition attribution for 4,024 migrants (48% with a source tagged) |
| P2 | Re-engagement list — 247 Pure-HCP customers with phone/email | Robert | $401K ghost book. If even 10% re-engage at HCP avg ticket ($2,868), that's ~$71K. |
| P2 | Keep HCP subscription active until Pass 3 + re-engagement finishes | Stephanie (approve) | $1,521/mo is cheap insurance; canceling orphans the 247 and erases historical reference for the 4,024. |
| P3 | Dashboard note — flag "Existing Customer" bucket as "includes HCP migrants" | Robert | Stops leadership from interpreting the bucket as organic loyalty |
JOIN HCP x ST ON (
hcp.mobile IN (st.phone, st.phone_alt)
OR hcp.home IN (st.phone, st.phone_alt)
OR hcp.work IN (st.phone, st.phone_alt)
OR hcp.email = st.email
)
Generated 2026-04-14 by Nexus AI pipeline. Live at https://morpheus.callbrightside.com/documents/BSP_HCP_Intelligence_Report.html. Pairs with Master Session History sections bsp-apr14-verification-pass-1 and bsp-apr14-verification-pass-2. Source CSV: BrightSidePlumbing_customer_export.csv @ 2026-04-13 20:58.
Question answered (2026-04-14): Does Robert need to pull additional data from the HCP app to execute the priorities?
Short answer: No for the 4 priority actions this week. Yes only for Pass 3 revenue reconciliation and v2 pitch personalization.
| Task | Data Needed | In CSV? | Pull from HCP App? |
|---|---|---|---|
| 📧 Email campaign (this week) | Name, email, last-service, LTV | ✅ Yes | ❌ No — ship now |
| 🔁 247 Pure-HCP re-engagement | Name, phone/email, LTV, last service | ✅ Yes | ❌ No — ship now |
| 🎖️ Membership pilot (298 high-LTV) | Name, contact, LTV | ✅ Yes | ❌ No — ship now |
| 🏷️ Backfill Original Lead Source → ST | Match key + lead source per customer | ✅ Yes | ❌ No |
| 🎯 Pitch personalization (service type) | Services used per customer | ❌ No | ⚠️ Nice-to-have (Jobs export) |
| 📐 Pass 3 — revenue reconciliation | Job-level dates + amounts per customer | ❌ No | ✅ Required (Jobs export) |
| 🤖 Smart Bidding historical repair | Per-lead GCLID | ❌ No | ❌ Retroactive impossible |
Ship email + membership + Pure-HCP re-engagement off the CSV this week. Queue HCP Jobs/Invoices export as a 2-week follow-up for Pass 3 reconciliation + pitch personalization v2. Do not let a second pull block anything shippable now.
Logged via nexus_html_logger.py at 2026-04-14T03:59:47.806555 UTC