St. Pierre · Dan $100K · Jul 28, 2026

Lead Tracking Playbook

Everything learned on Jul 28 about how leads flow from Facebook ads to Dan's calendar — reconciled against the real iMessage thread — plus the decisions already made and the exact execution list. A fresh session can run this page top to bottom with zero prior context.

EXECUTED — Jul 28 evening. All 10 agent checklist items are done (details + proof inline in section 5). Every build is ledgered with a rollback path. What still needs Akash is in section 6 — it grew by three quick items (a click-path to finish the Layer-1 re-point, deleting the dead *3 workflow, and the photo-ask approval). One extra find: an afternoon test-cleanup had deleted Akash's delivery contact, silently breaking all lead SMS — recreated, repointed, and re-proven the same evening.

1Mission + where we are

The 30-day focus: Dan (Level King, DFW concrete leveling) makes an extra $100K ≈ 60 jobs ≈ 25 qualified leads transferred per week. Everything else is parked.

FB ad → Messenger bot qualifies lead lands in brain SMS packet to Akash (~5 s) Akash pastes to Dan (iMessage) Dan calls in <30 s
  • WORKING Delivery: rebuilt + proven end-to-end Jul 28 (instant-send, ~5 s).
  • WORKING Conversion signal to Meta for Dan's campaign: 27 live "Lead" events since Jul 21.
  • WORKING Bookkeeping (since Jul 28 evening): every real conversation logs to the brain with its ad fingerprint, every hand-off is QC-gated and logged; one unified transfer log ties convo → QC → transfer → delivery (see the tracking SOW).
  • HALF-CLOSED The last hop to Dan is still manual, but outcomes no longer live only in the thread — a read-only morning ingest reconciles the Dan thread into the brain daily (D4, live).

2Dan lead scoreboard — reconciled from the real thread

Read directly from the Akash↔Dan iMessage thread (148 messages, Jul 20–28). This corrected several stale "next actions" that the morning list still carried.

LeadSentReal status (from thread)
Cindy Shaw Romaguera (Mansfield)Jul 22OUT OF AREA — pre-targeting-fix; not worth chasing
Richard Woods (Haltom City)Jul 22PROPOSAL SENT ~$850 small job; Dan met him Jul 23
Anas Khwaja (Irving)Jul 24MEETING TUE JUL 28 — today
Ann Zwiacher (Colleyville)Jul 25ENGAGED — filled Dan's form + sent photos Jul 27
Joseph Anwah (Southlake)Jul 25NO OUTCOME LOGGED — Dan said "on it"; needs a nudge
Nathan Green (Flower Mound)Jul 26IN DAN'S CRM — waiting on photos
Scott Edwards (Plano)Jul 27DECLINED BY DAN (pool-equipment liability) — Akash owes him a let-down via FB
Cindie Stewart (Roanoke)Jul 27DECLINED BY DAN (not a fit) — Akash owes her a let-down via FB
Spencer Johnson + Sam EtoumJul 28 09:48SENT (the morning list wrongly said unsent). Sam → ENGAGED per Dan 13:54 ("crack in the wall… typically Foundation. I’ll call him") — foundation referral to Austin Allen likely
Bonus intel from the thread: Dan's real target areas since Jul 22 = Frisco, The Colony, Little Elm, Flower Mound, Southlake. Dan works 7 days/week and calls back in ~30 seconds. He requires photos before any site visit → the bot's intake must collect a photo. Company name is "Level King" (never "Level King Pro" — that's just the domain). Austin Allen = foundation-repair contractor Dan referred to us = warm B2B prospect.

3The tracking machine — atlas vs live

Full audit lives in the Facebook Lead Tracking SOW. The one-screen version:

PieceStatusOne line
Layer 1 — count every real conversation + ad fingerprintLIVEClosest to atlas spec, but logs to the retired EyeFly Google Sheet
Layer 2 — extract + QC + log every hand-offNEVER FIREDNo trigger wired (same gap was visible in the atlas recording itself)
Layer 3 — manual transfer formSCAFFOLDTrigger form may not exist
Dan's CAPI dataset 3727287274206232HEALTHYUniversal n8n sender, every 5 min, 27 live events since Jul 21
SP web pixel 959350118926295MIGRATED JUL 28Was Pipeboard-dependent (dead) — rewired to the vault system-user token, test-fired clean, ledgered + reversible
GHL's built-in CAPI step in the qualified workflowUNKNOWNIf on, Dan's leads double-count to Meta — 2-click check (Akash)
New market pages (TX/ATX/HTX/SATX…)NO DATASETSEach needs a messaging dataset minted in Events Manager (UI-only) before its ads can optimize

4Decisions made (co-CEO, Jul 28) — do not re-litigate

  • D1 — Tracking rows live in the brain database with dashboards on top. No Google Sheets mirror unless Akash later says "sheets too".
  • D2 — Layer 2 is rebuilt inside the proven n8n transfer rail (extract → QC gate → needs-review vs transferred → log + notify). The dead "*3 Auto Transfer Tracking" GHL workflow gets deleted once the rail carries its semantics — it has never fired; there is no history to lose.
  • D3 — One log, two doors: the manual transfer form feeds the same rail and the same log as auto transfers.
  • D4 — Daily Dan-thread ingest: YES. A read-only morning step reads the Akash↔Dan iMessage thread, updates lead outcomes in the brain, and flags anything owed. Never sends anything.
  • D5 — Pipeboard retired from the SP relay: DONE Jul 28 (vault system-user token, proven with a test fire, change-ledgered, reversible).
  • D6 — Every new market page gets a messaging dataset as part of the page-factory checklist — added as an Akash click-step (UI-only in Events Manager), then routed through the universal sender.
  • D7 — Photo required at intake: the bot asks for a photo before transfer (Dan's hard requirement). Ships as a config change through the normal approval gate since it touches live bot behavior.

5Execution checklist — agent work, in order Claude

  • 1. Verify the migrated SP CAPI relay's first scheduled run succeeded (n8n executions for rHCGWJnWv3oSGv3w); mark the ledger row verified.
    DONE First post-migration hourly run succeeded 18:00 UTC (execution 19553, 2s, clean) after erroring hourly on the dead token; ledger row 91914 marked verified.
  • 2. Layer 1 readback: pull "*1. Qualified Convo Tracking" live config, diff field-by-field against the atlas attribution list, add missing fields via API, re-point the log row from the EyeFly sheet to the brain (D1). Prove with one synthetic first message.
    DONE All 9 atlas attribution fields already exist as live custom fields (nothing to add). New brain table sp_qualified_convo_tracking + n8n receiver live; synthetic first message proved the row lands with full fingerprint. GHL-side swap of the Sheets action = 2-min Akash click-path (section 6).
  • 3. Build Layer 2 in the rail (D2): complete extraction to the atlas field list, add the "client-facing?" QC gate + placeholder/AI-leak checks, needs-review branch, transfer log row. Prove with one dirty + one clean synthetic lead.
    DONE QC gate ("client-facing?" + placeholder/AI-leak checks) now runs on every lead in the bridge; QC fail → needs-review + transfer refused; drain only sends QC-checked qualified leads (10-min backstop keeps speed-to-lead). Proven: dirty synthetic blocked, clean synthetic SMS-delivered 17:45 UTC. One log two doors: v_sp_transfer_tracking.
  • 4. Build the D4 daily Dan-thread ingest (read-only, morning chain), backfilled from today's reconciliation.
    DONE Live: reads the Dan thread read-only each morning (06:45 chain step 2.95), classifies outcomes, updates the brain, flags owed items. Backfilled all 10 leads; first run already caught Sam Etoum → ENGAGED + Dan’s CRM-entry suggestion.
  • 5. Ad-URL fingerprint sweep (read-only) across live ads; deliver the fix list as an approval pack.
    DONE Swept both ad accounts: zero live ads anywhere; all 11 staged relight ads are Messenger-type (ad ID passes natively, no URL to tag). Verdict: no fixes needed; LP-bound ads get the URL-tag rule at relight. Pack in _scratch/deliverables/2026-07-28.
  • 6. Media mirror for Joseph, Scott, Spencer (durable lead-media pages); nudge list for Joseph's stale outcome into the next Dan packet.
    DONE All three pages live (Joseph’s newly mirrored, 1 photo): sp-lead-media.stpierre.workers.dev/{joseph-anwah, scott-edwards, spencer-johnson}. Joseph nudge saved as a P1 task due Jul 29 + flagged in the outcomes table.
  • 7. Draft the two FB let-down replies (Cindie, Scott) for Akash to send — drafts only, no sends.
    DONE Both drafts ready in _scratch/deliverables/2026-07-28/fb-letdown-drafts.md — nothing sent.
  • 8. Prepare the photo-ask intake change (D7) as an approval pack.
    DONE Approval pack staged (soft-ask default ★, hard-gate alternative): _scratch/deliverables/2026-07-28/photo-ask-intake-approval-pack.html. Deploy is one reversible API call after your go.
  • 9. Fix the 5 open audit items from the morning close-out: Nathan G. duplicate, re-create Cindy S. + Richard W. deleted contacts (+ root cause), scrub debug text from packet notes, fix dead follow-up nudges.
    DONE Nathan G. duplicate stub quarantined · Cindy S. + Richard W. GHL contacts recreated (deletions were unledgered — now tagged do-not-delete) · Spencer + Sam junk ZIP/notes scrubbed · Anas’s stale contact link fixed. Follow-up nudges: root-caused — no follow-up workflow exists at all; the 6-step cadence build is on your GHL click list. BONUS: found + fixed the deleted delivery contact that had silently broken all lead SMS since 15:20.
  • 10. End-to-end proof + screenshot pack (SOW Phase 5), then close the SOW.
    DONE One synthetic lead ran the whole chain: conversation counted with ad fingerprint → qualified → extracted + QC pass → transfer logged → SMS delivered 17:57 UTC, all visible in one v_sp_transfer_tracking row. SOW closed.
Standing guardrails: no live-ad edits without an approval pack · nothing sends to Dan or any lead automatically — drafts and packets only · GHL workflow-builder work is Akash-only (hand him numbered click-paths) · every external write gets a change-ledger row with a rollback path.

6Akash-only list ~15 min total

  • Send the two FB let-downs (Cindie Stewart, Scott Edwards) — drafts will be ready per item 7 above. You told Dan you'd handle both.
  • Phase 0 clicks: open "Qualified Tag → Lead Submitted Event" → click the Meta Conversion API step → disable if on. Confirm Jordan is the selected agent in the sleep-bot steps of *3 and *5.
  • Mint messaging datasets for TX + ATX (then each new page): Events Manager → Messaging → select page → create. ~1 min each, UI-only.
  • Text Dan (one message): the DripJobs/Zapier key re-ask is already in the thread from this morning — bundle the booking-link ask if he hasn't replied.
  • Nudge Joseph Anwah's status next time you talk to Dan (only lead with no outcome). His job photo: durable media page.
  • NEW — finish the Layer-1 re-point (~2 min): open "*1. Qualified Convo Tracking" → on the qualified branch click "#1 Update Qualified Convo_Raw Tracking" (the Google Sheets step) → add a Custom Webhook action right after it: method POST, URL https://eyefly.app.n8n.cloud/webhook/sp-layer1-convo-b38cb8fcdbb342c5, custom data: first_message={{message.body}} · utm_source={{contact.attributionSource.utmSource}} · utm_campaign={{contact.attributionSource.utmCampaign}} · utm_medium={{contact.attributionSource.utmMedium}} · utm_content={{contact.attributionSource.utmContent}} · fbclid={{contact.attributionSource.fbclid}} · ad_url={{contact.attributionSource.url}} · ad_id={{contact.lastAttributionSource.adId}} → Save + Publish. Keep the Sheets step until the first real row lands in the brain, then delete it.
  • NEW — delete "*3 Auto Transfer Tracking" (the rail now carries its semantics; it has never fired, nothing to lose). Automation list → *3 → delete. API can't delete workflows.
  • NEW — approve the photo-ask (D7): read the approval pack (item 8) and reply "approve photo ask" — deploy is one reversible call.

7Learnings + gotchas (today's, worth keeping)

  • The transfer database only knows "queued → sent to Akash." Real outcomes (declined, proposal sent, meeting booked) live in the iMessage thread — which is why the morning action list carried stale items. D4 closes this permanently.
  • The atlas itself shipped the double-sender. The qualified workflow fired both the n8n relay and GHL's built-in CAPI action. The built-in action is the one that silently broke in April (blank Messenger ID → cost per qualified conversation ~$58 → ~$428). One sender only, forever.
  • Messaging datasets ≠ web pixels. Messenger leads never hit a web page; only page-linked messaging datasets see them, and they only accept LeadSubmitted/Purchase. Dataset creation is UI-only (API permission-blocked).
  • The EyeFly fleet relay has been silent since Jun 22 (4,025 lifetime events). If any EyeFly client campaign still spends, Meta is optimizing blind for it — worth one check against active spend, not yet asserted.
  • Wrangler deploys need --branch=main or the custom/prod URL never updates (hit again today).
  • Atlas ≠ gospel: the recording captured a machine with its own bugs (Layer 2's missing trigger, EyeFly-branded sheets). Rebuild the semantics, not the artifacts.