True North

AGM Pro Tools — everything in flight, prioritized

Last updated: 2026-06-21

4
Clients Live
34
Active Projects
17
Igniting Now
4
Promoted ↑
0
Drift
Operational Priority Stack live from Linear · ranked by leverage (heat × what it unblocks)
10/132026-06-30
gating (3)
  • AGM-161 [Medium] [Phase 8] Cutover Valleywide dashboard onto new ETL + ship V2.1
  • AGM-160 [Medium] [Phase 7] Live validation against Valleywide — reference-value gate before cutover
  • AGM-159 [Low] [Trigger] Onboard pest contractor #2 via config-only (multi-tenant scaffold proof)
3/4
gating (1)
  • HGP-69 [High] Autoscale HTTP load test: prove the engine at N concurrent real submits
3🟢 LiveHigh HG Live Production Board↑ gates HG Contract Engine — SF Bridge + AGM-Native Builder
0/10
gating (5)
  • HGP-46 [High] Production auth + hosting (authed Modal endpoint)
  • HGP-45 [High] Stage write-back actions → AGM / Salesforce
  • HGP-43 [High] Define the Area (1–5) source field
  • HGP-40 [High] Wire in Payments → Charging Queue ledger (Not-Paid + balance)
4🔴 In ProgressUrgent SF OAuth Client Credentials Migration
3/52026-07-31
gating (2)
  • HGP-65 [High] Cleanup: remove SF_ADMIN_PASSWORD from secrets after 24-48hr green
  • HGP-64 [Medium] Per-script cutover — flip 10 scripts to OAuth (contract engine LAST)
5🔴 In ProgressUrgent HG Contract Engine — SF Bridge + AGM-Native Builder↑ gates Contract Engine — PG-Strict SQL Deploy Gate + Harness Hardening
0/11
gating (5)
  • HGP-132 [Urgent] Bridge 6 — E2E on Troy's test contact → Circumference/Council → supervised first real send (5 stuck contracts)
  • HGP-131 [Urgent] Bridge 5 — SF injection by job number + durable retry queue
  • HGP-129 [Urgent] Bridge 3 — authenticated rep upload page (+ prior-work-waiver 7-item checklist)
  • HGP-128 [Urgent] Bridge 2 — route the 4 signing-field seams through signing_fields_for_session() (NEXT STEP)
5/32
gating (5)
  • AGM-41 [Urgent] S8 — Golden Template: Generic Jobber snapshot [Lane: Andrew/Banjo builds, Harlan wires registry, Troy reviews]
  • AGM-200 [High] CAS report redesign: adopt the demo page's card grammar at three honest data depths (TODAY / PROJECTED / BENCHMARK)
  • AGM-122 [Urgent] S6 — Post-launch E2E verification with a fresh Jobber account [Lane: Harlan]
  • AGM-121 [Urgent] S5 — Submit Jobber Marketplace listing [Lane: Troy submits, Harlan preps]
7🔴 In ProgressHigh HappyWater USA — Headless Standalone Build ("Outside the System")↑ gates Launchpad Funnel — Quiz → $97 Starter → Jobber Listing
0/9
gating (5)
  • AGM-137 [High] Architecture: single-source-of-truth data contract (GHL vs AGM domains)
  • AGM-136 [High] Discovery: collect HappyWater intake (brand, system catalog + pricing, specialist roster, prospect CSV)
  • AGM-135 [High] Provision AGM-branded headless sub-account for HappyWater (white-label platform layer)
  • AGM-133 [High] Baseline CAS dashboard (headless, native GHL/AGM metrics) — v1 lean cockpit / "clean pipes"
8🔴 In ProgressHigh The Enforcement Layer
3/6
gating (3)
  • AGM-129 [High] WS-6 — Observability branch (scheduled audit + synthetic alarms)
  • AGM-127 [Medium] WS-4 — Passive-learning engine (hook → JSONL → Haiku distiller → confidence-scored memory)
  • AGM-128 [Low] WS-5 — Cost visibility + silent-failure pass
0/7
gating (5)
  • AGM-215 [Urgent] Bridge: generate Polly's voice knowledge base from the HG config
  • AGM-214 [High] Pricing/content single-source-of-truth governance
  • AGM-213 [High] True-up the Heavenly Greens config (pricing, contact, products)
  • AGM-212 [High] Audit & document current deploy + embed state
0/4
gating (4)
  • AGM-62 [Medium] Odoo API credentials from Kendra — 4 items (URL, db, integration user, API key)
  • AGM-195 [High] Build execution/lib/realturf_odoo.py connector (JSON-2 first) + live auth smoke test
  • AGM-197 [Medium] Multi-location dashboard v1 — Odoo feed on the Modal dashboard pattern
  • AGM-196 [Medium] Scope Odoo sync objects + integration goal with Real Turf
11🔴 In ProgressMedium Level 3 Outcome-Feedback Bandit
7/152026-07-31
gating (5)
  • HGP-146 [High] S2: Live routing on signing-link subject line + kill switch + exploration ceiling
  • HGP-145 [Medium] S3: Promote selector to execution/lib/bandit/ + second axis + docs
  • HGP-16 [Medium] Sprint 3 (3 wk) — Pattern generalization to execution/lib/bandit/
  • HGP-15 [Medium] Sprint 2 (3 wk) — Routing live on signing-link email subject line
12🔴 In ProgressHigh HG Lead-Nurture & Comms Consolidation
1/13
gating (5)
  • HGP-60 [High] [SF] No-sale lead reporting pull — total count + all dimensional data
  • HGP-58 [High] [Crossover] Map AGM↔SF nurture overlap — leads emailed by both platforms
  • HGP-57 [High] [Crossover] De-dup Costco no-sale: code cadence vs AGM "HG Costco — No Sale Nurture" workflow
  • HGP-53 [High] [SF] Pull Salesforce automation inventory on the office iMac
0/43
gating (5)
  • HGP-148 [High] Department-routed warm transfer — Polly asks "what's it regarding?" before transferring
  • HGP-120 [High] Greeter/Router — the fast first slice (warm answer + route + card-drop)
  • HGP-118 [High] Load/concurrency + failure-mode hardening
  • HGP-116 [High] Incremental Polly→Synthflow cutover (channel-by-channel)
14🔴 In ProgressHigh HG Costco Operations
0/5
gating (5)
  • HGP-25 [High] HG Costco Contract Engine — Anthony Punch List
  • HGP-23 [High] HG Costco Staffing Plan
  • HGP-22 [High] HG Costco Training Deck — Completion
  • HGP-21 [High] HG Multi-Rep Capability — Costco Lead Coverage
0/4
gating (4)
  • HGP-18 [High] Installer Packet — Video thumbnails on tile buttons
  • HGP-17 [High] Phase 4B/C — Lifecycle clock + customer cadences + per-rep daily digest
  • HGP-20 [Medium] Andrew — 4 AGM custom field IDs (Drawing PDF, Walkthrough Video, Change Order PDFs, Waiver PDFs)
  • HGP-19 [Medium] AGM HG Contracts — HG-direct Contract Engine Build (beyond Costco)
0/4
gating (4)
  • AGM-59 [High] AGM Pricing Reframe sprint (2026-05-06 origin)
  • AGM-57 [High] AGM Pro Tools for FieldRoutes — Headless Onboarding
  • AGM-56 [High] FieldRoutes Marketplace Listing (mirror of Jobber path)
  • AGM-58 [Medium] Activation Monitoring Build
17🟠 PlannedHigh HG/Costco Commission Sheet Automation↑ gates HG Contract Engine — Phase 4B/C + Lifecycle
0/4
gating (4)
  • HGP-9 [High] Build generate_commission_sheet(session_id) Modal function
  • HGP-8 [High] Wire 3 flags into contract engine (Costco / rep-tier / install-condition)
  • HGP-7 [High] Awaiting Tim — 4 commission-sheet validation questions
  • HGP-10 [Medium] Per-rep daily digest — fold into Phase 4B/C lifecycle work
18🔴 In Progress HG Architecture Audit
0/7
gating (5)
  • HGP-124 [High] [Inventory] Costco contract send — full path from rep click to PDF in S3
  • HGP-122 [High] [Inventory] External rails — Modal apps, crons, S3 buckets, LaunchAgents
  • HGP-121 [High] [Inventory] Code layer — walk execution/*.py for HG/SF touchpoints
  • HGP-137 [Medium] [Infra] Set up Google OAuth on Andrew Air
0/8
gating (5)
  • AGM-236 [–] Throughout — harden guardrails + keep the anchor tenant legible
  • AGM-235 [–] §8.7 — Make it tangible (Product Mission Control)
  • AGM-234 [–] §8.6 — Prove the headless shape (HappyWater USA)
  • AGM-233 [–] §8.5 — Lay the multi-tenant substrate (FieldRoutes ETL)
0/6
gating (5)
  • AGM-209 [High] Phase 2 — /spec intake: brain-dumps + discovery findings → agent-buildable cards with acceptance criteria
  • AGM-206 [High] Phase 1a — Slack "blocked" channel: async Option A/B escalation for loops
  • AGM-211 [Medium] Phase 3b — Independent review loop: fresh-context maker→checker pass on every loop-built branch
  • AGM-210 [Medium] Phase 3a — Autonomous build loop: claim approved cards into isolated worktrees (Council-gated)
0/10
gating (5)
  • HGP-74 [High] "Job Build Ready" stage trigger → unified Modal pipeline (extend the existing spine)
  • HGP-71 [High] Cut-list field schema on the AGM job record
  • HGP-70 [High] BarCloud API client — Stock Issue creation + transaction-ID writeback to AGM
  • HGP-77 [Medium] Verify rep notes → installer packet wiring on the live flow
22🟠 PlannedMedium ArcSite Integration
0/5
gating (5)
  • AGM-205 [High] Book Zoom call with Nate — ArcSite → AGM writeback walkthrough
  • AGM-202 [High] Advance the Oasis Turf → ArcSite warm thread
  • AGM-201 [High] Draft + send intro email to partnerships@arcsite.com
  • AGM-203 [Medium] Scope ArcSite → AGM data feed (Open API, Drawing-PDF → Project Documents Uploader, Salesforce path)
0/10
gating (5)
  • AGM-144 [High] [Stage C] Troy GO/NO-GO sign-off — hard gate before any real send
  • AGM-141 [High] [Client decision] Consent handling + do-not-contact list
  • AGM-140 [High] [Client decision] Valley-Wide channel mix — SMS / email / hybrid
  • AGM-139 [High] [Build] Finish FR→SERTBO sync — conditional service_type write + active-only bulk-join backfill
0/12
gating (5)
  • HGP-35 [High] HG AGM Email/SMS Triage — Sender Identity Audit
  • HGP-33 [High] HG Accounting Automation — 3-Phase Plan (awaiting Tim scoping)
  • HGP-28 [High] Gap #3 — Post-Install Thank-You + Review Request
  • HGP-27 [High] Gap #2 — Post-Deposit Nurture Sequence
0/6
gating (5)
  • AGM-224 [High] Create `youtube-credentials` Modal secret
  • AGM-223 [High] Decide credential source + obtain a starting YouTube OAuth credential
  • AGM-227 [Medium] Close the credential_sync gap (per-channel files were never in the sync-set)
  • AGM-226 [Medium] Fix credential_expiry_forecast to validate the cloud token, not local-file presence
0/5
gating (5)
  • AGM-110 [Urgent] Phase 1 — Dispatch shell ("What AGM did overnight")
  • AGM-111 [High] Phase 2 — Approval / redirect layer
  • AGM-114 [Medium] Phase 5 — Proactive briefing layer
  • AGM-113 [Medium] Phase 4 — Subscriber-pulse content engine
27 BacklogMedium Infrastructure & Security Cleanup
1/8
gating (5)
  • AGM-20 [High] Leak-vector forensics — 60-day Login History pull + cross-ref offboarding
  • AGM-18 [High] Deactivate former-employee SF System Admins (waiting on Tim's CSV)
  • AGM-16 [High] Fix rotate_credential.py bug — preserves other keys when rotating one
  • AGM-181 [Medium] Retired-infra-value denylist grep (catch stale IPs/users/endpoints in canonical docs)
0/8
gating (5)
  • AGM-184 [High] Headline valuation — $1M–$2.5M as-is · $4M–$10M on-plan · $25M–$80M+ strategic
  • AGM-190 [Medium] Value drivers vs. caps — what moves the number up and down
  • AGM-188 [Medium] Lens 4 — Strategic / platform ceiling: $25M–$80M+
  • AGM-187 [Medium] Lens 3 — Forward vertical-SaaS multiple (on plan): $4M–$10M
29 BacklogMedium AGM Sales & Marketing Funnel
0/9
gating (5)
  • AGM-87 [High] Prospecting Engine v1.2 — GBP Review-Velocity Enricher
  • AGM-79 [High] Speaking Opportunities — Conferences, Podcasts, Events
  • AGM-86 [Medium] Contractor Automation Score — LinkedIn GTM launch
  • AGM-84 [Medium] Verify hello@agmprotools.com
30 BacklogMedium Content Flywheel + Build Log
0/21
gating (5)
  • AGM-173 [High] Phase 0 — Chapter public/private flag + first curation pass
  • AGM-172 [High] Phase 0 — chapters_podcast_feed.py (RSS generator, the leverage move)
  • AGM-169 [High] Distribution Cadence Plan — Mission Control as media hub (parent)
  • AGM-75 [High] Monthly Customer 3-Point Email — V2 Ready
31 BacklogMedium Client Integrations Pipeline
0/10
gating (5)
  • AGM-61 [Urgent] HG BarCloud Integration — Inventory Automation
  • AGM-60 [High] Valleywide PestRoutes — Go Live
  • AGM-167 [Medium] Retrofit DND check on all shipped client integrations (per external_rail_send_dnd_check directive)
  • AGM-69 [Medium] Turf Prep — Method:CRM Integration
1/23
gating (5)
  • AGM-222 [Medium] Build a task-scoped retrieval layer over memory + canonical docs (Single Company Brain model)
  • AGM-108 [Medium] AGM Opportunity Value Backfill
  • AGM-107 [Medium] Contract Engine Productization Strategy — Costco + HG-direct as two AGM products
  • AGM-105 [Medium] SF-to-AGM Migration — Batch Strategy
34 Backlog Content Flywheel
0/22
gating (5)
  • AGM-23 [High] Layer A: Newsletter-as-a-Service — Troy decisions (9 open questions)
  • AGM-21 [High] Compound un-park decision — (a) memory pre-read / (b) seed Linear now / (c) stay parked
  • AGM-239 [Medium] Content asset + doctrine: '3%→100%' viral-format lift (15 Systems post)
  • AGM-40 [Medium] Layer A: Weekly Newsletter pipeline — 5 stacked gaps (dark since 2026-03-23)
✅ Done / retired3
CompletedHigh Jobber App Marketplace — Path B Build Sprint↑ gates Launchpad Funnel — Quiz → $97 Starter → Jobber Listing, HappyWater USA — Headless Standalone Build ("Outside the System")
5/12
6/62026-05-22
0/62026-05-26
30-Day Execution Plan (sequenced 2026-05-19, refreshed 2026-05-25) linear.app/agmprotools
Week 1 (5/20–5/26) — Foundations + Customer-Impact Cleanup

Ship the structural fixes that gate everything else. Most of this is now done — Andrew's MBA caps the week tomorrow.

  • ✅ CENTAH "Re:" Thread Bombardment Fix — Phases 1–3 HGC-1, HGC-2, HGC-3
  • ✅ CENTAH AGM-workflow cutover — live-verified on Dennis Kuehl HGC-4
  • ✅ Troy MacBook Pro M5 provisioning + Phase 2 hardening AGM-11, AGM-12
  • ✅ SF SOAP login hardening — shared execution/lib/sf_auth.py AGM-6
  • ✅ Permanent contract retrieval URL — agm-pro--contract-link.modal.run HGC-30
  • ✅ Canonical doc monitor schema v1.1 — per-doc thresholds + AT RISK band + accurate block labels (5/25)
  • ✅ SQLite waivers extended +30d to 2026-06-24 — contract engine deploys unblocked (5/25)
  • ✅ Mission Control composite probe timeout fix — 20s → 45s (5/25)
  • ✅ INSURANCE Playbook + Operating Doc + Build Changelog refresh — 4 hardened failure modes (5/25)
  • ✅ True North hygiene re-rack — 37 'now' → 7, aligned to Linear (5/25)
  • ✅ Stale carry-forwards retired — Leo DND, hg-calendar-feed, Sherrie Feinstein (5/25)
  • Andrew's MacBook Air provisioning — Phase 1c + Phase 2 hardening AGM-15
Parallel low-effort wins
  • SObject grep + send Troy permission set (still queued) AGM-5
  • Tim follow-up on 4 commission validation questions
Week 2 (5/27–6/2) — Marketplace Sprint + HG SF Cleanup

Two marketplace listings ship side by side. HG SF System Admin cleanup picks up Mon 6/01 per Troy's direction.

  • Jobber App Marketplace — Path B Build Sprint (5-6.5h focused) AGM-48 → AGM-55
  • FieldRoutes Marketplace Listing + AGM Pricing Reframe AGM-56, AGM-57, AGM-59
  • AGM Pro Tools for FieldRoutes — Headless Onboarding + Activation Monitoring
  • HG SF System Administrator profile cleanup — pick up Mon 6/01 (Tim email sent 5/20)
  • HG/Costco Commission Sheet wire-up (assumes Tim responds with 4 validation answers) HGC-8, HGC-9
Parallel low-effort wins
  • HG BarCloud Integration — Inventory Automation (P1) AGM-61
  • Workflow Gap #1 — Welcome on contract approved HGC-26
  • Workflow Gap #2 — Post-deposit nurture HGC-27
  • Workflow Gap #3 — Post-install thank-you + review HGC-28
  • HG Sender Identity Audit HGC-35
  • Content Flywheel — Restart daily chapter AGM-72
Week 3 (6/3–6/9) — Launchpad Stripe + OAuth Phase 1 + Bandit Kickoff

Launchpad's $97 Stripe wiring closes the funnel. SF OAuth shadow auth starts (defensive hardening, no production impact yet). Level 3 Bandit Sprint 1 begins.

  • Stream B / Gap 4 chunk 2 — Stripe wiring + STARTER pipeline (Launchpad)
  • Pre-Stripe interstitial + post-OAuth wow moment
  • SF OAuth Client Credentials Migration — Phase 1 (shadow auth, no cutover yet) AGM-6, AGM-7
  • Bandit Sprint 1 — variant scaffolding + baseline HGC-14
Parallel low-effort wins
  • Volume reality check (90-day contract sends) HGC-11
  • Tim + Eric template discipline conversation HGC-12
  • Define Bandit success metrics (7d leading / 60d lagging) HGC-13
  • HG Costco Ops — Anthony punch list + Multi-Rep HGC-25, HGC-21
Week 4 (6/10–6/16) — Productization + Content + OAuth Phase 2

The Build Log launches. SF OAuth per-script cutover begins (contract engine LAST). Content & curation pillar work.

  • The Build Log — first weekly issue ships AGM-71
  • SF OAuth Client Credentials Migration — Phase 2 per-script cutover (contract engine LAST) AGM-8
  • Bandit Sprint 2 prep (kill-switch + candidate subjects) HGC-15
Parallel low-effort wins
  • Workflow Gap #4 — Commercial Customer Automation HGC-29
  • HG Costco Staffing + Training Deck HGC-22, HGC-23
  • Prospecting Engine v1.2 — GBP review-velocity AGM-87
  • Monthly Customer 3-Point Email V2 — send pending Troy approval AGM-75
  • Curation as 5th Pillar — strategy doc + Build Log essay AGM-70, AGM-71
  • Cleanup SF_ADMIN_PASSWORD (24-48h after OAuth Phase 2 green) AGM-9
Critical-path dependencies
  • SF OAuth + CENTAH cleanup → unblocks Level 3 Bandit
  • Laptop Sprint Phase 1 → Andrew on own machine → Andrew Tier 2 work flows
  • Tim validation answers → unblocks Commission Automation
  • Andrew custom field IDs → unblocks Phase 4B/C upload work
  • SObject grep (AGM-5) → SF Setup (AGM-6) → OAuth tokens → Shadow auth deploy
Explicitly cold this month
  • OffClock + Synthflow (queued; revisit July when Bandit humming)
  • AGM Friday Live + AMA (need video producer first)
  • HG-direct Contract Engine Build (needs Productization Strategy decision)
  • Multi-Cloud Redundancy (no incident driving urgency)
  • ATE Square Backend Migration (no client pressure)
  • Reddit + X/Twitter integrations (defer to August+)
16 Linear projects
Launchpad — Push-Button Client Onboarding 4 active · 7 done
NextGolden Template — Turf (First Industry)
Builder script exists (launchpad_build_template.py, 732 lines). Turf messaging pack complete (turf.json — 5 workflows, custom fields, 6 pipeline stages). But NO template has been built yet. All snapshot_id = null in registry. Custom fields bootstrap DONE (Apr 24). Steps: (1) run --build --industry turf, (2) configure 5 workflows in AGM UI using copy from Golden Template Google Doc, (3) review pipeline + custom fields, (4) take snapshot in AGM UI, (5) run --register --industry turf --snapshot-id <ID>.
NextAutomation Score Funnel: Quiz → Nurture → Launchpad → Closed Won
CORRECTED Apr 24, then WIRED Apr 24. Backend /score endpoint now returns contact_id to frontend. Quiz results page has 'Get Started with AGM Pro Tools' CTA that links to Launchpad intake with pre-filled name/email/phone/company/agm_contact_id. Full report (page 6) also has 'Get Started Now' CTA with same pre-fill. Remaining: deploy modal_automation_score.py to Modal (contact_id in response), push agm-automation-score to GitHub Pages (frontend CTAs).
Push-Button Client Plan (Google Doc)
Linear: Launchpad — Quiz → Automation Score → Closed Won⚠ link stale0/7
WIRED Apr 24 · Needs Modal deploy + GitHub Pages push
NextEnd-to-End Test — Form to Dashboard
Full Stripe test mode walkthrough: fill intake form, pay with test card, verify webhook fires, pipeline runs, close-the-loop fires, AGM sub-account created from golden template (not interim), OAuth URL appears, dashboard deployed, lifecycle email fires Day 1. Never tested. Target: under 10 min.
Linear: Launchpad — Quiz → Automation Score → Closed Won⚠ link stale0/7
Troy + Harlan · ~1 hour · Blocked by golden template + custom fields
NextIndustry Templates — Pest + General
Follow turf template pattern for pest control and general FSM. Different messaging copy, same pipeline/tags/fields structure. Build after turf validates.
Linear: Launchpad — Quiz → Automation Score → Closed Won⚠ link stale0/7
Harlan · ~1 hour each · After turf template
7 completed in this category — show
DoneLaunchpad Build — Phase 1: Rename Complete
Full franchise-to-Launchpad rename across 12 files. INDUSTRY_TEMPLATES dict replaces FRANCHISE_NETWORKS (turf/pest/general/waterloo). All docs, directives, registry, pipeline, webhook, and dashboard updated. Backward-compat fallbacks in place.
Linear: Launchpad — Quiz → Automation Score → Closed Won⚠ link stale0/7
Apr 10 · 12 files updated
DoneLaunchpad Build — Phase 2: Intake Form + Checkout Endpoint
Customer-facing intake form (index.html) with industry dropdown, US state selector, all required fields, dark theme. /launchpad-checkout endpoint in modal_webhook.py creates Stripe Checkout Sessions with metadata from form. Both built and committed.
DoneStripe Credentials + Modal Secrets
Stripe test keys added to .env and Modal (agm-stripe secret). Checkout endpoint tested — returns valid Stripe session.
Apr 10 · Test mode verified
DoneModal Deploy with Launchpad + Stripe
agm-stripe Modal secret wired into launchpad_checkout + stripe_franchise_webhook. stripe pip package added. All 3 endpoints live and tested.
Apr 10 · 3 endpoints live
DoneCustom Fields Bootstrap — Run Setup Script
DONE Apr 24. All 7 AGM Pro custom fields created in production (agmpro_active, agmpro_plan, agmpro_mrr, agmpro_signed_up_at, agmpro_last_payment_at, agmpro_subscription_state, agmpro_signup_source). Field IDs written to execution/launchpad_custom_fields.json. Verified via --verify.
Apr 24 · All 7 fields live
Multi-Track Contract Engine — Active Sprint 8 active · 23 done
NowHG-Direct: stand up test environment (NEXT — needs Troy GO)
2 credentialed-infra steps: Neon Postgres branch + contract-engine-pg-dev secret, _DEV binds it (invariant: dev never touches prod). Gates pricing + the 13-rep load test. Reuses CONTRACT_ENGINE_ENV=dev. Design §0h.
Next session · bridge design §0h
NowHG-Direct: pricing workstream (deferred to test env)
Pricing is per-deal on 20,648 OpportunityLineItems (catalog/PricebookEntry all $0; units inverted: Quantity=sqft, UnitPrice=line total). Build Python pricing engine, derive default per-unit rates = median(UnitPrice/Quantity), validate via replay harness. Model: turf $/sqft, edging $/lf, discrete $/each.
After test env
NowHG-Direct: 13-rep concurrency load-test gate
Extend signing_concurrent_write_canary to simulate 13 reps submitting + N signing concurrently against the test env. MANDATORY gate before any rep rollout (design §0g).
Gate before rollout
NextAGM HG Contracts — HG-direct Contract Engine Build
Second client config on the contract engine: HG-direct retail jobs. ~90% reuse from Costco; net-new is deep product catalog (25+ turf SKUs alone), custom React contract form with line-item picker, deposit-capture step via AGM native payments + card-on-file (reused for progress + final payments), and GHL native QuickBooks connector for accounting reconciliation (replaces SF/DBSync on the AGM side). Architectural primitive already in place — ready_for_install_trigger: deposit_received was anticipated in config.py from day one. Execution plan covers 11 workstreams across catalog, form, engine wiring, template + signing calibration, deposit capture, QBO connector, stored-card payments, ordering pipeline, testing, and pilot/go-live. ~10-week timeline targeting mid-July 2026 GA. Open decisions logged for both Troy (verbiage, catalog source, processor confirmation) and Andrew (Eric sit-down on current deposit flow, GL mapping, tax codes, top-25 SKU inventory).
Execution Plan
Linear: HG Contract Engine — Phase 4B/C + LifecycleIn Progress0/4
Planning · Plan drafted 2026-05-11 · 11 workstreams · ~10 wk to GA
NextPhase 4B/C — Lifecycle clock + customer cadences + per-rep daily digest
Lifecycle clock stamps timestamp on each pending state, emits state_stale event on stale threshold cross. Customer cadences (signing 3-day Costco / 7-day HG Direct, deposit 14-day HG Direct only). Per-rep 8 AM email with stalled-deals queue across all stages. Custom field updates: agmpro_contract_status_label, agmpro_contract_age_days. Phase 4A rep cadence already live — this is the customer side and the digest.
Linear: HG Contract Engine — Phase 4B/C + LifecycleIn Progress0/4
TOP PRIORITY #1 · ~1 day build · Completes the cadence engine
NextInstaller Packet — Video thumbnails on tile buttons
Delta on top of the just-shipped Site Videos tile grid (b17e90d). Add ~15 lines to format_normalize.normalize_video to extract a 1.0s frame thumbnail (ffmpeg -ss 1 -frames:v 1 -vf scale=480:-2) and upload to S3 as <basename>_thumb.jpg. Add ~25 lines to _layout_videos in installer_packet.py to fetch the thumb via boto3, write to tmpfile, page.insert_image as tile background under existing PLAY badge. Fall back silently to the current green tile if thumb missing. Backfill script for the 5 existing HGC-TEST-001 videos.
Linear: HG Contract Engine — Phase 4B/C + LifecycleIn Progress0/4
~1 hour · Mechanical — built on top of shipped tile grid
NextHG Costco Contract Engine — Anthony Punch List
Sequenced 11-item punch list out of Anthony Zoom call. Status as of 2026-05-15: items 1, 2 (parts 1+2), 8, 9, 10 SHIPPED. Item 7 KILLED by Troy 2026-05-14. Items 3, 4 BLOCKED on Tim Fullerton (commission). Remaining attackable: items 5 (Wrap-Up section), 6 (Problem/Issue uploader), 11 (Pause project reminders). Andrew owes validation on items 1+2 — scenarios A/B/C.
Linear: HG Costco OperationsIn Progress0/5
5 of 11 shipped | 1 killed | 2 blocked on Tim | 3 attackable (5/6/11) | Andrew validation pending on 1+2
MediumHG-Direct: builder UI + dynamic render
Builder launches from AGM contact (?id=) + hydrates, cascading catalog picker, qty entry -> ContractDocument. Dynamic render: growing line-item table + §4.2 section-anchored signatures. Payment layer (deposit->milestone) gated on processor-connected fact (flagged to Andrew).
After slice proves
23 completed in this category — show
DoneLevel 3 Bandit — Sprint 1 shadow mode LIVE (2026-06-12)
Thompson-sampling selector records shadow subject-line assignments on every customer signing-link send; variant_assignments table in Neon; daily digest cron (stall alarm + Monday posteriors). Council-reviewed. HGP-143 waived by Troy. Next: verify first shadow row (HGP-140), then HGP-144 metric ratification is the only gate before Sprint 2 live routing.
LinearIn Progress7/15
Jun 12 · Shadow live in prod
DoneLevel 3 Bandit — S2 metrics RATIFIED + first shadow row landed (2026-06-12)
HGP-144 DONE: Troy ratified time-to-sign (7d leading, bandit iteration) + completed/installed-without-withdrawal-at-60d (lagging, monthly validation). HGP-140 DONE: first shadow assignment verified in prod (session 5adf7445, variant c_next_step, 2026-06-12T23:10Z) — selector→Neon plumbing proven end-to-end. Remaining before HGP-146 live routing build: a clean shadow-mode validation window (now accruing). HGP-143 waived.
LinearIn Progress7/15
Jun 12 · S2 gate cleared
DonePhase 6 — SQLite → Neon Postgres migration (concurrency-fix sprint)
4-rep Costco training failed 2026-05-13 due to SQLite-on-Modal-Volume concurrent-write loss. Day-1 shipped: max_containers=1 throttle on signing_ui (live at signature.heavenlygreens.com); Neon project agm-contract-engine provisioned (PG17, Launch tier, us-west-2); canonical Postgres DDL in signing_pg.sql; one-shot migrate_sqlite_to_pg.py with --dry-run / --verify; 1,905 rows migrated with perfect parity (245 sessions + 1,483 events + 30 audit + 1 counter + 146 jobs); psycopg2-binary in image; Modal secret contract-engine-pg created. Day-2 (next session): shadow-write code in signing.py + bind contract-engine-pg to every init_db call site + parity-monitor cron. Day-3: flip reads to Postgres. Day-4: decommission SQLite + lift throttle + 15-rep canary. Full plan in docs/NEXT_SESSION.md top entry. Blocks the 6-10 rep ramp until Day-4 completes.
NEXT_SESSION Day-2 plan · Build Changelog 2026-05-13 · INSURANCE_PLAYBOOK Postgres recovery
COMPLETE 2026-05-14 | Phases 1-3 shipped | SQLite decommissioned, PG canonical for both costco_intake + contract_engine
DonePhase 1 — Engine rename dealer→rep, member→signer
Atomic SQLite migration + code rename across contract_engine/. UI copy + email templates updated. Migration logic in signing.py:248-250 rewrites old status values to new on first read.
Apr 25 · Commit 9e3b785
DonePhase 1E — Multi-track primitives in ClientConfig
Added track, vertical, customer_role_label, ready_for_install_trigger fields to client YAML schema. Foundation for HG Direct, paver, roofer, fencing tracks on the same engine.
Apr 25 · Commit 5b853bf
DonePhase 2 — Project Documents Uploader
Rep-facing portal at agmpro.tools/upload/<job_number>. Format normalization (HEIC → JPEG, HEVC → H.264 720p). Dual-write to S3 + AGM site_photos custom field. Apr 26 fix: scale filter + error display bug — transcode now produces playable H.264 baseline MP4 with audio mapping intact.
Live
Linear: HG Contract Engine — Phase 4B/C + LifecycleIn Progress0/4
Apr 25 ship + Apr 26 transcode fix · Commit 855f3d5 + uncommitted format_normalize.py
DonePhase 3 — Build Installer Packet AGM custom action
agm-pro--installer-packet-build.modal.run accepts contact_id, generates packet, registers short URL, writes to agmpro_installer_packet_url + built_at + version custom fields + Notes. Production manager clicks button on AGM contact to fire.
Linear: HG Contract Engine — Phase 4B/C + LifecycleIn Progress0/4
Apr 25 · Commit 22d2e82
Doneagmpro.tools branded short URLs LIVE
Cloudflare zone (Free plan, separate from agmprotools.com) fronts Modal endpoints via 302 redirect. /j/<id> → installer-redirect, /upload/<job> → documents-uploader, /v/<id> → video-redirect. Engine config flipped: hg_costco.yml + 3 hardcoded URLs in modal_app.py / create_cadence_copy_sheet.py. Origin Rules need Enterprise plan; Free plan = redirects, brand moment is the SMS link not the address bar after click. Cloudflare wildcard pattern requires https:// prefix.
Upload portal
Apr 25 · Commit 1ca9efd + uncommitted /v/ rule
DoneSite Videos in installer packet — /v/<id> redirect + clickable PDF tiles
Videos uploaded via Project Documents Uploader are now discovered at packet build time, registered with a /v/<id> short URL each, and rendered as a 3-up tile grid on a Site Videos page in the packet PDF. Each tile is a clickable hyperlink that 302s to a freshly-minted S3 presigned URL. Mirror of the /j/ pattern. Default-on for HG Costco; future tenants opt in via video_short_url_base + video_index_s3_prefix YAML fields.
Apr 25 (uncommitted) · installer_packet.py + modal_app.py + config.py + hg_costco.yml
DoneUploader — Camera Roll-only video flow
In-portal video recorder removed. iOS Safari silently drops audio on both <input capture> and getUserMedia in this context (server-side ffprobe diagnostic confirmed: 0 audio streams in delivered file regardless of approach). Workaround: reps record in native iOS Camera app, upload via Add from Camera Roll — those files always carry audio. Helper text on the portal explains the flow. Saves ~120 lines of MediaRecorder JS, simpler UX, more reliable.
Apr 25 (uncommitted) · uploader_app.py + format_normalize.py
DonePhase 4A — Rep photo upload cadence LIVE
8 AM SMS+email + 4 PM SMS daily until photos appear in site_photos. No-breaks rule, no dormancy, no weekend skip. Cadence copy review sheet shipped to troy@agmprotools.com for editorial review.
Apr 25 · Commit bd0dfb5
DonePhase 4D — Installer packet reads from S3 site-photos as primary source
Packet builder discovers videos + photos in S3 hg-costco/site-photos/<job> folder, registers short IDs per video, embeds photos inline + clickable video tiles on Site Videos page.
Apr 25 · Commit e66625f
DonePhase 5 — Change order extension
Full Change Order pipeline shipped May 1–5: CO-aware signing, finalization, delivery, AGM writeback, standalone CO PDF (with parent-ref correlation, Pacific date, dealer block, project address recompose), CO email subject branching, Specs & Warranty workflow skip, signing UI marker fix, rep countersign SMS, form delete buttons, cumulative anchor lift across signed COs, materials manifest per step, signed-CO email + installer packet bundle. Three CO E2E blockers cleared 2026-05-04 (commit 104eaea). Remaining nice-to-have: uploader /upload/<job>/co/<n> route with CO-scoped storage paths (deferred — current rebuild flow handles CO uploads through original job folder; no rep complaints).
May 1–5 sprint · 40+ commits across CO pipeline · Full E2E walked Apr 26 + May 4
DoneEngine — End-to-end real-job dry run
One real HG Costco contract through the full pipeline: signing UI → fully_executed → ready_for_install → rep upload (mix of HEIC photos + HEVC videos) → production clicks Build Installer Packet button → packet PDF reviewed for correctness (header, photos inline, video tiles clickable + playing). Establishes the smoke baseline for every future engine deploy.
TOP PRIORITY #2 · ~1 hour with Troy · Validates Phases 1-4 in production posture Done 2026-04-26: Cathy Bradsher / HGC-00103 walked end-to-end, surfaced + killed 6 bugs.
DoneSearch-first AGM dedupe in create_test_draft_oneoff
Adopt existing contact by email instead of racing AGM merge. Stops the +tag-stripping dedupe ghost.
Shipped 2026-04-26 commit b783366
DoneEngine diagnostic helpers (audit/repoint/refire/find/dump)
5 new Modal helpers for surfacing + repairing dedupe drift on existing sessions.
Shipped 2026-04-26 commit b783366
DoneUploader Modal volume reload pattern
contract_volume.reload() before each DB read so warm container sees engine writes after container start.
Shipped 2026-04-26 commit b783366
DoneUploader content-addressed storage
SHA256 of input bytes as basename. Duplicate uploads collapse silently to one S3 object.
Shipped 2026-04-26 commit b783366
DoneInstaller packet — Sequence A tile labels (B/C deferred to May 3 checkpoint)
Drop hashed basename caption from Site Videos tiles. Per-upload category picker (B) + AI auto-classify (C) revisit after a week of real upload traffic.
Shipped 2026-04-26 commit b783366
DoneHG-Direct: infra-verified architecture (§0f)
Decision settled: our engine authors (catalog+line-item+pricing+render+sign); AGM is system-of-record + payment rail, NOT author. Verified AGM Products have no unit/category/cost, estimates aren't legal contracts, pricing can't live in workflows.
Jun 3 · bridge design §0f, commit d9db901
DoneHG-Direct: line-item ContractDocument keystone
line_items.py — LineItem + ContractDocument (the single front-door-agnostic seam) + ContractData.to_line_items()/to_contract_document() Costco adapter. 30 tests pass. Additive, no prod change.
Jun 3 · commit 82677fd
DoneHG-Direct: catalog draft (190 products)
build_hg_catalog.py -> data/hg_catalog_draft.json. 190 usable SF products auto-categorized (66 high/111 medium/13 low). 13 'other' oddballs need Troy's category (possible new 'ground cover' category).
Jun 3 · commit dc2f88f
DoneContract engine: job-number concurrency race FIXED + DEPLOYED
mint() read-modify-write produced silent duplicate job numbers under PG+autoscale (BEGIN IMMEDIATE skipped on PG). Fixed with atomic INSERT...ON CONFLICT...counter+1 RETURNING. 80 concurrent -> 0 dupes. Live in prod.
Jun 3 · commit 7100bb0/eb43cfc
Enforcement Layer — Hooks Over Prompts 3 active · 5 done
NextWS-4 — Passive-learning engine (HALTED at NOT-YET)
Circumference Protocol review (Council run #3) overturned the build TWICE: capture hook is the highest-risk component (raw credentialed-I/O log = day-one exposure); the diff IS content so metadata-only vs useful-signal is the undecided core. Verdict NOT-YET. Do not build tool-I/O capture. Pivot to validate: consent-based / non-PII capture (agent's own correction-reasoning + marked operator corrections, never customer payload). See enforcement_layer.md Corrections #1+#2.
AGM-127
Linear: The Enforcement LayerIn Progress3/6
⛔ NOT-YET · pivot to non-PII capture
QueuedWS-5 — Cost visibility + silent-failure pass
CostTracker dataclass + PostToolUse->SQLite (first dollar figure we have; keeps Opus mandate). silent-failure-hunter as pre-deploy review pass. Optional: agent-frontmatter tool/model scoping for Briggs.
AGM-128
Linear: The Enforcement LayerIn Progress3/6
Incremental
DoWS-6 — Observability branch (monitoring = enforcement)
Fold monitoring into the Enforcement Layer. WS-6a SHIPPED (audit 41/0). Red-team probes NOW scheduled weekly (com.agm.red-team-probes LaunchAgent, Slack-on-CRITICAL/HIGH, self-test verified) — closes the 'red-team never took hold' gap. 🔴 TOP SECURITY FOLLOW-UP: posture audit is operationally dead (0/100, ~109 false new-script findings, 6 un-triaged CRITICAL unauth-endpoint flags = public Starter funnel) — advance the noise baseline + triage the 6 CRITICALs. Then: meta-monitor the auditor + WS-6b synthetic alarms. Cross-machine: install red-team probes on the Mac Mini (no creds needed) + Andrew's Air.
AGM-128
Linear: The Enforcement LayerIn Progress3/6
WS-6a + red-team scheduled · audit-noise triage next · AGM-129
5 completed in this category — show
DoneWS-1 — Prompt Defense Baseline
6-line anti-injection preamble on every directive + Harlan/Briggs/Andrew persona across CLAUDE.md/AGENTS.md/GEMINI.md. Closes the no-injection-defense gap for agents that read foreign email/PDF/web with credentials loaded.
AGM-124
Linear: The Enforcement LayerIn Progress3/6
Afternoon · no creds · SHIPPED 2026-06-02
DoneWS-2 — block-no-verify git hook
PreToolUse(Bash) hook blocking git commit --no-verify / -n / core.hooksPath overrides. Closes the one-flag bypass that defeats pre_deploy_check. Port from ecc_refs/block-no-verify.js.
AGM-125
Linear: The Enforcement LayerIn Progress3/6
Afternoon · no creds · SHIPPED 2026-06-02
DoneWS-3 — Council skill
Fresh-subagent anti-anchoring deliberation (Architect/Skeptic/Pragmatist/Critic given only the question, not the transcript). Mechanism for the no-self-anchoring rule. Port from ecc_refs/council_SKILL.md.
AGM-126
Linear: The Enforcement LayerIn Progress3/6
~1 day · no creds · SHIPPED 2026-06-02
DoneCircumference Protocol — 360° blast-radius decision gate
Born 2026-06-02 from the WS-4 review. directives/circumference_protocol.md + a High-Stakes Decision Gate trigger mirrored above Identity in CLAUDE/AGENTS/GEMINI. Forces a Council run + walks every blast-radius dimension (artifact-before-logic, data-at-rest, replication/trust boundaries, injection, credentialed reach, reversibility) → GO/NO-GO/GO-WITH-PREREQS verdict. 'The feeling of being sure is the trigger, not the all-clear.' Already proved itself: produced the WS-4 NOT-YET overturns.
Linear: The Enforcement LayerIn Progress3/6
SHIPPED 2026-06-02 · commit 67a7d2b
DoneAlerting Coherence Mechanism — TOMORROW'S #1
Stop the contradictory all-in-one Slack alert (green HEALTHY stacked under 6 CRITICAL + a 401 dashboard; audit posted twice). NOT a format fix — a prevention mechanism, mirroring how we already gate dashboard PII and send DND: (1) reconciliation chokepoint = one worst-of verdict per status post, green-under-red impossible by construction; (2) Alerting Coherence Contract directive + pre_deploy_check invariant test + quarterly bypass grep; (3) self-consistency canary cron mirroring security_audit_self_report. A/B consolidation depth = Troy's clear-eyes call. Post-mortem: docs/post_mortems/2026-06-13_contradictory_alerts_no_coherence_check.md
Carded 2026-06-13 PM · ✅ SHIPPED 2026-06-14 — all 3 layers live: reconciler (L1) + Check 23 deploy gate & quarterly bypass grep (L2, --audit-all 47/47) + self-consistency canary (L3). Follow-ups carded → AGM-221.
This Week — Priority 31 active · 6 done
Now🟠 Critical-systems phone pager — SHIPPED (shadow→auto-arm ~6/22)
Troy's 2026-06-17 ask, shipped 2026-06-20. critical_systems_pager cron (agm-ops/modal_ops.py) drives the Healthchecks 'critical-systems' check off the worst-of reconcile() verdict; sustained-red(2 ~20min) phones Troy+Andrew (call+SMS) with a self-describing Slack post. Proven E2E (both got the test call). SHADOW now; AUTO-ARMS after 48h clean shadow (~2026-06-22 midday PT) + posts a Slack notice; a would-page resets the clock. SHADOW_LOCK=True = kill switch. Commits fdabe31..ff57807; INSURANCE_PLAYBOOK updated. WATCH: the AUTO-ARMED Slack post. OPTIONAL: Troy 30s dashboard tighten of check Period->1h/Grace->30m for faster dead-pager phone escalation.
Now🔧 Decouple ALL work from the Office iMac — centralize on Mac Mini / Modal
Troy ask 2026-06-20: the office iMac being asleep/off must never block work. This morning it was deep-asleep at the remote office (NIC down; SSH/ICMP/tailnet all timed out) and could NOT be woken remotely — WoL can't cross the internet and there is no co-located always-on relay at the office (the Mac Mini is at the home office). Nothing in PROD depends on it (all live systems run on Modal; health green with iMac dark), but 2 things are single-homed there: (1) the uncommitted AGM->SF writeback source [durability risk, not uptime — engine runs on Modal + is idempotent], (2) the 05:00 morning-briefing LaunchAgent. PLAN (Harlan owns, execute as iMac comes up today): (1) rescue writeback source into git the moment iMac is reachable -> pre_deploy_check -> verify AGM_Appointment_Id__c upsert idempotency -> commit+gate; (2) migrate the 05:00 briefing onto the always-on Mac Mini (non-credentialed by design); (3) inventory + migrate every iMac-only LaunchAgent/cron to Mini or Modal; (4) Troy call (trust model): route SF-cred work via Modal functions vs stand up a 2nd credentialed operator; (5) iMac end state = pure optional workstation. Troy wakes the iMac in person today; Harlan lands the rescue live when it's up. Detail: NEXT_SESSION.md 'TODAY 2026-06-20' section.
NowFieldRoutes ETL Framework — V2.1 cutover (AGM-160/161)
Phases 1-6 SHIPPED + DEPLOYED 2026-06-12 in one session (Troy greenlit on Zoom, Harlan on auto): verified-filter date-bisect extract layer (live-proven 2,469 subs / 9,239 customers / 4,744 appts in 57 FR calls), agm-fieldroutes-etl Modal app (3 PT crons gated on etl.enabled=false — zero FR usage pre-cutover), pre-deploy checks 20/21/22, pest_vertical_dashboard_spec.md (10 KPIs ratified), V2.1 dashboard deployed (zero FR calls, snapshot view + maturity chips). REMAINING: Andrew Phase 7 validation (AGM-160, ~2h, fully staged) → AGM-161 cutover = flip etl.enabled + redeploy. Target 06-21. Unblocks the Headless Build + Pest Routes connector items — contractor #2 is now a config file.
Linear: FieldRoutes ETL Framework — Multi-Tenant Dashboard SubstrateLive10/13
Phases 1-6 done 06-12 · Andrew validation next · cutover 06-21
NowFinish CAS workflows → send AlphaTurf their Contractor Automation Score link
Complete the Contractor Automation Score (CAS) workflows, then send Jamie & Kyle at AlphaTurf a link to check their score. Ties to the billing wind-down email — leave them with something genuinely useful out of the AGM relationship. Open question in the email: are they still on Fresh CRM? If yes, wire the dashboard to their Fresh CRM data.
Added Jun 7
Now🛡️ Complete Disaster Recovery Plan — Phases 1–4 + runbook SHIPPED; restore.sh + live drill remain
Objective (Troy): true disaster recovery — rebuild on fresh hardware ending in operator_smoke_test green. SHIPPED + deployed + tested 2026-06-15: Phase 1 Neon pg_dump to S3 every 6h (agm-neon-backup app) — closed the #1 gap (Neon was PG-canonical with zero backup); Phase 2 daily restore canaries prove Neon + all Tier-1 volumes rebuild, plus a write-time empty-tarball integrity gate; Phase 3 dead-man's switch — 4 Healthchecks.io checks escalate to Troy phone call + email on silence; Phase 4 Council-ratified secrets key custody (AES-256 bundle, BACKUP_PASSPHRASE in 3 hardened locations, distributed by Troy) + secrets_backup_freshness monitor; and the cold-start SOP runbook (directives/disaster_recovery_runbook.md). NOTE: secrets ARE backed up (corrects the old likely-NOT-backed-up gap). REMAINING: Phase 5 restore.sh automation (incl. re-provisioning ~42 Modal secrets) + Phase 6 live recovery drill (Andrew, fresh hardware, record real RTO). Hardening backlog: dedicated DR bucket + MFA-delete/cross-region (root creds), DNS zone export, off-GitHub git bundle, rotate the 10-char passphrase. Custody decision record: docs/disaster_recovery_key_custody_decision.md.
DR Plan Scope Doc
Phases 1–4 + runbook shipped/tested 2026-06-15; restore.sh + live drill next
NowJobber App Marketplace Listing — AGM Pro Tools
**Listing copy 100% LOCKED 2026-05-18.** All Phase 1 Troy decisions locked: App Category (Custom Automations + Sales & Marketing), Country (None — global / US-first), Brand hex (#22C55E new Pro Tools system green), Need Help? phone (skip — 2 email bullets only). Sections #7/#8/#9/#11/#12 ratified across ~30 iterations of competitive research. Single paste-ready Google Doc generated at https://docs.google.com/document/d/1fho4M8ZVegUMdmd8qfYm7KPy-RM3h4div3toq-YI17A/edit — every Jobber form field in order, paste-ready. **Remaining work = Path B build sprint (~5-6.5 focused hours)**: $97 Stripe price object, payment-status gate on jobber_callback(), lightweight AGM CRM contact at $97 signup, Starter pipeline branching, Quiz → Checkout bridge, Starter dashboard provisioning, HG beta install end-to-end (Gallery screenshots captured here), submit. Generator script: execution/create_jobber_marketplace_paste_doc.py. Work-items doc: docs/JOBBER_MARKETPLACE_LISTING_WORK_ITEMS.md. ▶ 2026-06-15 — Jobber→AGM SYNC ENGINE SHIPPED (commit b5ed965, 46/46 synthetic E2E green): spec docs/jobber_to_agm_sync_v1.md + engine + idempotent field provisioner + synthetic harness + lib/agm AGMClient. This is the post-install DATA LAYER (the quality bar for what subscribers receive), NOT a submit gate — the listing can submit on the interim snapshot. AGM-41 moved Todo→In Progress. Submit path: AGM-183 (token-gate /dash security) → AGM-198 + AGM-162 (copy fixes) → AGM-163 (logo) → AGM-120 (HG beta) → AGM-121 (submit). Andrew's web form AGM-164 = reframe-not-build, pending Troy A/B decision. Coordination email sent to Troy + Andrew 2026-06-15.
Working Doc (Jobber Marketplace Listing)
Linear: Jobber App Marketplace — Path B Build SprintCompleted5/12
⏵ 06-15: Jobber→AGM sync engine SHIPPED (46/46 E2E) — snapshot data layer done; AGM-41 In Progress. Submit gate: AGM-183 security · AGM-198/162 copy · AGM-120 HG beta · AGM-121 submit. Listing can ship on interim snapshot. · Paste doc: docs.google.com/document/d/1fho4M8ZVegUMdmd8qfYm7KPy-RM3h4div3toq-YI17A · Work items: JOBBER_MARKETPLACE_LISTING_WORK_ITEMS.md
NowHG/Costco Commission Sheet Automation
Decoded v13 commission workbook end-to-end. Proof-of-concept built 2026-05-14 on HGC-00121 (Anthony Hall / Fermin Go) — programmatically populated v13 .xlsm from Postgres contract data, Excel recalculates the math. Email sent to Tim Fullerton (CC Andrew + Troy) with 4 validation questions: (1) Right approach for Costco contracts? (2) Add Shaw to catalog or separate sheet? (3) Are the 3 flags captured in contract engine? (4) Does H51 match HG's manual payout? Forward execution gated on Tim's response: wire 3-flag capture, build generate_commission_sheet(session_id) Modal function on signing-complete, per-rep daily digest (folds into Phase 4B/C), Tim review queue. Don't rebuild the math in Python — drive the existing workbook. Productizable as paid AGM Pro Tools feature. Memory: project_hg_costco_commission_automation.md.
Linear: HG/Costco Commission Sheet AutomationPlanned0/4
May 14 | PoC shipped | Awaiting Tim's 4 validation answers
NowFieldRoutes Marketplace Listing + AGM Pricing Reframe (2026-05-06 sprint)
Recon shipped 2026-05-06 found the FieldRoutes (formerly PestRoutes, same software, ServiceTitan-owned) marketplace is empty real estate — 17 partners total across 9 categories, only 4 in Marketing Solutions, only Scorpion as a real platform-shaped competitor (and Scorpion sits 30-100x above AGM in price as a $10-25K/mo agency play). The $300-$3,000/mo price band is completely empty. Combined with the Valley Wide owner's no-flinch at $297 (would have closed at $597), the pricing thesis: AGM is structurally underpriced. Recommended new ladder: $97 Diagnostic / $397 P2 Headless (Troy's call) / $597-697 P3 Pro / $997 P3 Plus / $2,497 Enterprise (NEW tier). Existing subs grandfathered. Five-attribute defensible moat (FSM-agnostic, diagnostic-first, headless, self-serve, vertical-aware) — no competitor combines all five. Week-1 actions: (1) email FR partner team re: listing requirements + Scorpion positioning question, (2) draft marketplace listing copy using Jobber template Liam shared, (3) update Andrew's pitch deck with new ladder, (4) run 5-prospect elasticity test before locking. June-July: build quantified Sertbo/Valley Wide case study. Oct 7-9: IGNITE Orlando — pursue peer-led speaker slot (no public CFP, curated/invited), booth as fallback. Full doc + email shipped + project memory saved.
Marketplace Recon Doc · Audio Opportunity Story (11min) · FieldRoutes Marketplace · AGM Pro Tools for FieldRoutes — Complete Plan
Linear: FieldRoutes Marketplace + Headless BuildIn Progress0/4
May 6 — recon + doc + audio + email + memory · New tier: Enterprise $2,497/mo · IGNITE 2026 Oct 7-9 Orlando · 11min audio opportunity story shipped
NowAGM Pro Tools for FieldRoutes — Headless Onboarding + Activation Monitoring Build
Top-to-bottom plan (drafted 2026-05-11) for productizing the FieldRoutes opportunity. Five phases: intake (self-serve form), headless provisioning (clone pest snapshot → new AGM Pro Tools sub-account → generate config + Modal apps), initial backfill, steady state (15-min Modal cron already running for Valleywide), and activation monitoring (per-client AGM Pro Tools dashboard + AGM-internal multi-client matrix with single activation score). BLOCKER #1: pest snapshot in AGM Pro Tools has never been built — launchpad_template_registry.json shows it null, falls back to turf template, which means headless onboarding for any new FR client can't run today. Build order: (1) pest snapshot — Andrew, (2) provision_fr_client.py generator, (3) FieldRoutes branch of Launchpad intake, (4) per-client dashboard as reusable template, (5) multi-client activation matrix, (6) activation score formula + Slack alerts on red transitions, (7) wire review_request_tag on completed-ticket detection, (8) marketplace listing. Includes embedded 2026-05-06 market research deep dive (Part 10 of the doc) covering: FieldRoutes ≡ PestRoutes lineage, 17-partner marketplace footprint, five-attribute defensible moat, IGNITE 2026 strategy, pricing thesis with outcome math, recommended ladder ($97/$397/$597-697/$997/$2,497). Seven decisions needed from Troy (pest snapshot owner, activation score weights, multi-office handling, per-frequency tags, backfill SLA, marketplace timing, pricing). — 2026-06-12 UPDATE: the ETL substrate this build depends on shipped (phases 1-6 deployed); blocker shifts to pest snapshot + cutover validation.
Complete Plan Google Doc · Marketplace Recon (2026-05-06) · Audio Opportunity Story (11min)
Linear: FieldRoutes Marketplace + Headless BuildIn Progress0/4
May 11 — plan drafted + Google Doc + directive committed · Blocker #1: pest snapshot · Valleywide is tenant 1
NextSynthflow Voice Integration — Track 3 (planning only)
Synthflow integration into AGM Pro Tools as the voice agent engine for OffClock Phase 3 (real-time call answering — replaces AGM's native AI voice with a higher-quality plug-in). Surface-level visibility tracking only — no Monday deliverables. Architecture/positioning happening separately; will surface real asks once execution starts. Native AGM/GHL integration (sub-account sync, real-time calendar booking, AI call summaries push back to AGM workflows) makes Synthflow the build-vs-buy answer for the voice agent layer. ElevenLabs Sarah voice ID is portable across OffClock email audio replies AND Synthflow voice calls — one brand voice across every customer touchpoint. Phases 0-2 of OffClock (email + voicemail + SMS) stay custom-built on Modal; Phase 3 = Synthflow. Cost model: ~$0.15-$0.24/min real cost once STT/TTS fees are included. Email triage stays in-house as core IP; voice agent we buy. Hybrid is the move.
OffClock Spec (Phase 3 section) · Synthflow GHL Marketplace integration
Linear: On the Radar — Queued InitiativesBacklog1/23
Planning only — no execution Monday · Real asks surface once Phase 3 begins · See OffClock spec Phase 3
NextMulti-Tenant Newsletter — Phase 1 ATE pilot
Build the multi-tenant newsletter engine (one engine, N instance YAMLs). ATE is Instance 5 — Phase 1 pilot uses troy@artificialturfexpress.com, single-recipient newsletter-test tag, no CC. Validates full pipeline (research → draft → preview → magic-link approve → send → Day+7 metrics) before rolling out Nathan/Oasis, Chad/DFW, Justin/Amazing as config-only additions. Architecture committed at directives/newsletter_multi_tenant.md.
Architecture directive
Linear: Content Flywheel + Build LogBacklog0/21
Slipped to P1 behind Jobber Marketplace · Build after Jobber Round 1-3 · Directive: newsletter_multi_tenant.md
NextCuration as Compound Interest — 5th Strategic Pillar
Naming the missing pillar in AGM's recursive strategy. Accumulation pillars (Franchise Intel, Outcome Loop, Structural Enforcement, 3-Layer Arch) get heavier; curation discipline is the durable AI-era moat. Four-artifact execution: (1) context_curation_monitor.py — half day, this week, (2) AGM_COMPANY_STRATEGY.md fifth-pillar section — next strategy session, (3) Build Log essay 'Knowing How to Forget' — queued, (4) customer-facing context health dashboard — after Phase 4B/C ships. Memory: project_curation_fifth_pillar.md. NEXT_SESSION.md has full details.
Linear: Content Flywheel + Build LogBacklog0/21
May 14 | New strategic framing | Half-day Artifact 1 first
NextProspecting Engine v1.2 — GBP Review-Velocity Enricher
Build google_business_signals.py: given an operator domain, capture total review count + last-30d delta from Google Business Profile. Populate signals.review_velocity_30d + review_velocity_gap_pct (15pt of the FR-pest rubric — currently unsourced, capping cohort at 67/100). Wire into enrichment/__init__.py after geography. Flip HOT_SCORE_THRESHOLD back from 60→80 in pipeline.py. Re-run backfill — expect 4-8 of existing 8-warm cohort to move into ≥80 with review-velocity on record. Open arch question: Places API (~$0.70 one-off for 41 ops) vs. public scrape — lean Places API for reliability.
Linear: AGM Sales & Marketing FunnelBacklog0/9
Queued for May 13 · ~2-3 hours
NextPre-Stripe interstitial + post-OAuth wow moment
Two conversion-frame pieces deferred from 5/3 audio-first bundle, bundled with Stream B (shared file: modal_webhook.py:2772). Pre-Stripe: 'What happens next (60 sec)' page between report-CTA-click and Stripe redirect. Post-OAuth: first 60 sec after Jobber connect must show real leads + dollar values immediately ('You have 17 leads >4hrs old, est loss $2,180').
Linear: Launchpad — Quiz → Automation Score → Closed Won⚠ link stale0/7
Bundled with Stream B (paused for Jobber call)
NextReview Automation Redesign — HG Retail + Costco
Two distinct gaps surfaced 2026-04-30 when Marcia Serpa-Garcia 'Positive Review Survey' alert routed to Anthony Hall instead of auto-converting to a public Google review. (1) HG RETAIL: review workflow stack EXISTS (Ask For Review > Send Survey, Review Rating Results, Job Reviewed — all published) but is rep-dependent: satisfaction survey → manual rep follow-up. Needs rewiring to auto-fire Google review CTA; rep alert kept only for negative responses. (2) COSTCO: NO post-install review workflow exists at all — none of 24 review/survey/install workflows reference Costco. Greenfield build needed: trigger (SF install_complete or AGM fully_executed + N days), message (SMS+email with Google review URL), cadence (+3, +7, +14 then stop), branching (positive → public CTA, negative → ops escalation). Full research at docs/research/2026-04-30_review_automation_audit.md — includes workflow IDs, open questions, and Troy's confirmed framing that SF owns install triggers and Costco review side is dark.
Research Doc
Linear: HG Workflow Gaps + Accounting AutomationPlanned0/12
Surfaced Apr 30 · Research saved · Next session priority
NextThe Build Log — Weekly Newsletter + YouTube Campaign
Automated weekly build cycle report: git commits + chapter notes → contractor-friendly newsletter + companion YouTube video. 7 historical issues (Mar–Apr) drafted for May rollout. Issue # + publish date override ready. Campaign calendar at docs/BUILD_CYCLE_CAMPAIGN.md.
Campaign Calendar
Linear: Content Flywheel + Build LogBacklog0/21
Apr 29 · 7 issues drafted · May launch
NextHG Multi-Rep Capability — Costco Lead Coverage
Bring more reps online to run Costco in-home leads representing the Shaw product line. These are seasoned sales vets — they need training on the Costco system (proposals, contracts, workflow), not on selling. Training deck is the key deliverable that enables this.
Linear: HG Costco OperationsIn Progress0/5
TOP PRIORITY · Training + automation walkthrough
NextContractor Automation Score — LinkedIn GTM launch
Backend deployed, audio-first pivot shipped 5/3 (URL-first delivery, click-to-play green icon, Shock→Personalize→Quantify→Direct email frame, visibility-only positioning). Cross-browser verified Chrome/Safari/Firefox desktop + Mobile iOS. Stream B Stripe wiring paused for Jobber call. REMAINING: LinkedIn GTM post — drafted + approved, send when Stream B is live so the quiz CTA routes correctly. Email-client matrix (Gmail/Outlook/iOS Mail) verification still on the punch list before broad GTM push.
Live · Comms Catalog
Linear: AGM Sales & Marketing FunnelBacklog0/9
Audio-first pivot shipped May 3 · LinkedIn post pending Stream B
NextHG AGM Email/SMS Triage — Sender Identity Audit
Audit every AGM workflow, calendar automation, and trigger that sends email or SMS for Heavenly Greens. Map: what sends, who it comes from, who receives it. Flag anything using {{user.name}} or rep identity when it should be call center. Partial progress: HG Lead Alert split sender from costco@ to HGLeads@ + Andrew cut over to agmprotools.com (commit 4d60510, May 5). Contract emails now route FROM rep with callcenter fallback (commit f5529e2). Three earlier-found instances fixed (appointment confirmation email/SMS, welcome email/SMS). Systematic sweep across all remaining workflows still pending.
Linear: HG Workflow Gaps + Accounting AutomationPlanned0/12
Partial progress · Full sweep still pending
WaitingNewsletter-as-a-Service — Spec DELIVERED, awaiting Troy review
Managed monthly newsletter addon for AGM subscribers. $197/mo Pro Tools addon ($497 weekly). SPEC DELIVERED 2026-04-23 — Draft v0.1 Google Doc live: https://docs.google.com/document/d/1Q-4YZScmet1499k5tb1w0bzAHlOBU-LlS4qk8ve6P_k/edit (13 sections: scope, 10-beat architecture, intake/assembly/send pipeline detail, template system, packaging, pilot roadmap, risks, success criteria). ORIGINAL SPRINT (Apr 15-17) MISSED — HG Costco/change-order build owned the window. REPLANNED ship date in spec: Fri 2026-05-01 for AGM dogfood issue #1. SIX OPEN DECISIONS in §9 awaiting Troy: (1) ship date confirmation, (2) SMS number strategy (shared vs per-customer), (3) Quill voice calibration — add Andrew for pilot QA?, (4) pricing sanity check $197 vs $297, (5) Apple Shortcut v1 vs v1.1, (6) unsubscribe plumbing SES-managed vs custom AGM-writeback. GREEN-LIGHT PATH: Troy reviews → Harlan starts MJML template + SES identity for agmpro.com subdomain → build through pilot roadmap Phase 1. RED-FLAG PATH: inline edits in doc → Harlan revises v0.2. Andrew's role remains DNS-only for Chad rollout, NOT editorial. Chad's intake trigger is AGM workflow engine, NOT Jobber. Jobber stacks on later for HG/ATE.
Spec Doc (Draft v0.1)
Linear: Content Flywheel + Build LogBacklog0/21
SPEC DELIVERED Apr 23 · Awaiting Troy review + §9 decisions · Proposed ship: Fri May 1 (AGM dogfood) · Parallel to HG Costco Layer 2/3
WaitingMonthly Customer 3-Point Email — V2 Ready
Built end-to-end Apr 6. V2 is AGM-centric per Troy's feedback ('pretty dang good'). Open question: Automation Score URL referenced but funnel not live — decide whether to cut paragraph, hold email, or swap content. Once approved, send to Texas Turf/Andrew first.
Linear: Content Flywheel + Build LogBacklog0/21
Troy reviewing · V2 ready to send
QueuedOffClock™ Phase 0 — Monday sprint Track 2 (parallel Claude execution)
OffClock is the marquee Pro Max ($497/mo) feature for AGM Pro Tools — autonomous after-hours operator that reads inbound customer email, replies in the company's brand voice (typed + audio), and bubbles to a morning digest. Phase 0 = scaffold + go live shadow on service@heavenlygreens.com Monday 2026-05-18. Sprint Track 2, executed by a parallel Claude instance while Harlan owns Track 1 (Jobber Marketplace) and Track 3 (Synthflow planning) runs separately. Phase 0 outputs: Modal app deployed, Graph webhook subscribed on service@, 10-bucket service intent classifier wired, every inbound email classified and logged. Zero customer sends — pure shadow mode. Voice persona locked: Sarah (ElevenLabs EXAVITQu4vr4xnSDxMaL). Anchor-tenant pilot of the HG Call Center Automation directive (Apr 3) — OffClock is the productized form, HG Call Center Automation is the HG implementation. Risk gates: zero sends Phase 0, warranty/complaint/<30-day-install always reviewer touch, daily volume cap 30, OFFCLOCK_SEND_AUTHORITY kill switch, pre_deploy_check additions 15-17. Spec at directives/offclock_spec.md; HG implementation at directives/hg_call_center_automation.md.
OffClock Spec · HG Call Center Automation (anchor pilot)
Linear: On the Radar — Queued InitiativesBacklog1/23
Monday 2026-05-18 launch · Track 2 (parallel Claude execution) · Voice: Sarah (EXAVITQu4vr4xnSDxMaL)
QueuedContract Engine Productization Strategy — Costco + HG-direct as two AGM products
Strategic frame ratified 2026-05-05 for everything happening on the contract engine. Two distinct products fall out of one engine: (1) Costco Contract Engine as a Service — sold to Costco-approved vendors, 'already approved by Costco' as moat, small TAM / high margin / white-glove sales, gated by Costco approval relationship; (2) HG Deposit-to-Delivery Engine — sold to any FSM with deposit-then-execute workflow (turf, pool, fence, painters, hardscape, solar), broad TAM / mid margin / self-service signup. Same primitives, different products, different sales motions. Engine is already multi-tenant-aware in its bones (client_id first-class, track + ready_for_install_trigger anticipates deposit handling). Per-Modal-app split deferred until paid tenant #2. Andrew gets scoped Modal deploy so Troy is not on the critical path for client incidents (two-layer enforcement: pre_deploy_check.py Check 7 + scoped Modal token). Open non-engineering items: Costco approval conversation, pricing model, compliance posture for HG-direct deposits (Stripe Connect with tenant merchant accounts), tenant onboarding UI, per-tenant SLA + observability, Costco change-management process. Order of execution: finish Costco on current architecture → audit four large modules (delivery, pipeline, assembler, installer_packet) for tenant-cleanliness → ship HG-direct as a track → start Costco approval conversation in parallel → layer Andrew scoped deploy → first paying non-HG tenant triggers per-Modal-app split + tenant onboarding UI sprint.
Overview Doc
Linear: On the Radar — Queued InitiativesBacklog1/23
May 5 — strategy doc + memory files saved · Defer per-Modal-app split until paid tenant #2
QueuedHG Costco Training Deck — Completion
Finalize the Costco system training deck. Covers how to use the system, write proposals, create and process contracts through the workflow. These are experienced sellers — the deck is about the system, not the sale. Backbone of multi-rep capability.
Linear: HG Costco OperationsIn Progress0/5
TOP PRIORITY · Tied to multi-rep training
QueuedHG Costco Staffing Plan
Logistics plan for Costco lead coverage: store locations, dates, times, personnel assignments, and materials required. Need a clear schedule so every store is covered with a trained rep and the right materials — no gaps, no scrambling.
Linear: HG Costco OperationsIn Progress0/5
TOP PRIORITY · Operational — Tim meeting
QueuedHG Rep QR Codes for Costco Events
Generate per-rep QR codes for HG sales reps working Costco in-store events. Each rep gets a unique QR that routes leads into the HG pipeline with rep attribution baked in — scan at the booth, lead enters the system pre-tagged to the rep who sourced them. Ties directly into multi-rep rollout and staffing plan. Build: QR generation script, rep-to-URL mapping, printable card/badge template.
Linear: HG Costco OperationsIn Progress0/5
Added Apr 27 · Troy priority · Tied to multi-rep + staffing
QueuedChapter Audio Link Sweep — Chapters 1-29
Format drift between record_chapter.py and create_chapter_book_doc.py caused dead links in Google Doc. Fixed for Chapter 30+. Chapters 1-29 need: sweep script to verify S3 URLs, backfill missing objects, update chapter entries, re-run doc generator.
Linear: Content Flywheel + Build LogBacklog0/21
Script needed · Dead links in Google Doc
QueuedAGM Opportunity Value Backfill
AGM pipeline opportunities show $0 because Zapier never synced monetary values. Backfill from SF contract amounts for all synced opportunities.
QueuedValleywide PestRoutes — Go Live
Code-side wiring complete. Service Type custom field + 5 appointment fields created in AGM Pro Tools sub-account, sync writes them all. 6 workflow shells published. Premium API key unlocked 2026-04-09 (quota blocker cleared, domain migrated pestroutes.com → fieldroutes.com everywhere, 15-min cadence locked). Tenant 1 of the AGM Pro Tools for FieldRoutes product — see full plan for productization context. Still pending go-live: SERTBO nurture workflow copy review + client cadence confirmation + flip active: true.
AGM Pro Tools for FieldRoutes — Complete Plan
Linear: Client Integrations PipelineBacklog0/10
Code: done · Premium key: unlocked Apr 9 · Pending: nurture copy review + active flip
QueuedContent Flywheel — Restart (back on the radar)
Triggered 2026-05-17 by audit of an external 5-agent content pipeline article vs our Scout/Quill/Pixel/Echo flywheel. Troy: 'we've got to get back on this.' The architecture in directives/content_flywheel_master.md is more sophisticated than the article — the gap is execution + invocability + cadence enforcement. Priority sequence: (1) Fork Scout/Quill/Pixel/Echo into invocable .claude/agents/*.md files with frontmatter + short identity line + machine-parseable 'End with:' footer (one-hour first step, immediately unlocks /agents content-scout from any session). (2) Add 'End with:' footers to existing scripts so cron can grep handoff status. (3) Audit weekly cadence crons (Mon Scout / Wed Quill / Thu Pixel / Fri Publish / Sat Atomize) — verify each runs or document the manual gap. (4) Define {{voice_profile}} text per content stream instead of word-blocklists. (5) Pixel + Echo gap audit: publish_linkedin/twitter/tiktok/instagram scripts exist but may not be cron-invoked. Full audit memo in Harlan memory: project_content_flywheel_2026-05-17_audit.md.
Content Flywheel Master Directive · Content Pipeline Orchestrator · Briggs Flywheel Monitor Skill
Linear: Content Flywheel + Build LogBacklog0/21
Restart 2026-05-17 · One-hour first step · Master ToDo items #50-#54
6 completed in this category — show
Done✅ CENTAH AGM-workflow CUTOVER — SHIPPED + LIVE-VERIFIED on Dennis Kuehl
Full architectural shift from 'Modal owns customer comms' to 'AGM workflow owns customer comms' is live in production as of 2026-05-20T21:32:00Z. Five commits shipped this session: 0cf6669 morning Fixes 1-3 (Re:/Fwd: classifier, costco-welcomed idempotency tag, retry caps), 9d3362a docs reflecting morning fix, 5d1665d THE CUTOVER (centah-new-lead tag stamp + NEW_CONTACT_CUTOVER_TS flipped + auto-response cutover-gated; pre-cutover Python welcome path preserved for rollback), bb07325 dedicated #costco-leads Slack channel (clean lead-stream signal separated from operational firehose), 2898328/e44481c WinGen-CENTAH disambiguation in docstring. Live verification on first real post-cutover lead Dennis Kuehl (CENTAH #9049489, AGM contact cvXCd6kN0SUKcUkipUQf): intake at 4:05:50 PM PT stamped both costco and centah-new-lead tags; Andrew's AGM workflow fired ~70s later creating the opportunity, sending welcome SMS, sending welcome email; call center booked appointment at 4:14 PM for Tuesday 5/26 at 1 PM (Sales Pres with rep Steven McIntire at 2029 West Park Ave Napa); appointment confirmation comms fired at 4:14/4:19. Modal sent ZERO customer comms post-cutover for Dennis — designed behaviour. Total wall-clock from WinGen tap inside Costco to confirmed appointment on member's phone: 14 minutes. Rollback path: flip NEW_CONTACT_CUTOVER_TS to None or future timestamp in execution/costco_lead_intake.py and redeploy. Carry-forwards: (1) Andrew hardcoding email sent awaiting reply — appointment titles show 'Anthony Hall' regardless of actual assignedTo (Steven McIntire on Dennis); (2) lift Leo Apostol DND (cutover supersedes Fix 4/5 design); (3) 30-day backfill audit for other attempts>3 bombardment victims; (4) Andrew workflow inspection to map exact step list + exit conditions for canonical doc; (5) sunset costco-welcomed tag stamping after one week of cutover safety.
Post-Mortem · Memory · Cutover commit 5d1665d · Leads channel commit bb07325 · Morning Fixes 1-3 commit 0cf6669
Linear: CENTAH "Re:" Thread Bombardment FixCompleted6/6
Shipped + verified 2026-05-20 · Five commits: 0cf6669 morning fixes, 5d1665d cutover, bb07325 leads channel, 2898328+e44481c disambiguation · Live proof: Dennis Kuehl converted in 14 min wall-clock · Follow-ups: hardcoding email (Andrew), lift Leo DND, 30-day backfill, workflow inspection, sunset costco-welcomed tag
DoneHG Command Center — 3-tab dashboard live
Password-gated internal dashboard at agm-pro--agm-costco-audit-dashboard-web-app.modal.run. Three tabs: Costco Triage (per-lead audit + handle/snooze/note across 191 leads), Costco Overview (KPIs, status funnel, 16-store revenue ranking, turf/Shaw mix — 191 leads, 40 sold, $450k YTD), HG Sales (residential aggregates — 5,949 opps, $38M revenue, 7,418 leads, 19-stage funnel, 30-month revenue history). Data path is fully Modal-native: 15-min costco_dashboard_refresh + hg_sales_dashboard_refresh feed the tabs; 30-min refresh_snapshot_cron rebuilds the triage view with live contract-engine session overlay. PII never touches public hosts (Dashboard Security Contract Rule 1). Custom domain deferred — stays on Modal URL for now.
HG Command Center
Live 2026-05-18 · Build 2026-05-19 · 3 tabs, single auth boundary
DoneProspecting Engine v1.1 — Enrichment Layer (FR Pest)
SHIPPED 2026-05-12. Full enrichment layer (domain_resolver, website_audit, vendor_mention_scan, geography) + Opus dossier writer + outbound email/LinkedIn drafter. First backfill: 32/41 enriched, 8 dossiers + 8 outbound drafts queued in awaiting_send. Threshold ran at ≥60 for v1.1 (achievable ceiling 85 until v1.2 GBP review-velocity enricher lands). Top cohort: Go Forth (67), Miche (67), Alta/City Wide/Ridd/Magic City (63), Friendly/Admiral (62).
Directive · Modal app · FR Strategy
Linear: AGM Sales & Marketing FunnelBacklog0/9
Shipped May 12 · 8 dossiers + 8 outbound drafts queued
DoneStream B / Gap 4 chunk 2 — Stripe wiring + STARTER pipeline
PAUSED 2026-05-06 morning for Jobber developer onboarding call. STARTER_TRACK_STEPS scaffold already in execution/launchpad_pipeline.py (lines 158-177); 9-module shared library ready in execution/lib/. Resume after Jobber call: add $97 Stripe Price in parent agm-stripe acct_1TKjcNRN9q5afIIK alongside existing $297, build execution/stripe_price_registry.json, migrate modal_webhook.py:2772 from inline price_data to Price ID lookup with tier param, implement 5 STARTER_TRACK_STEPS bodies (client_provisioned Starter variant, dashboard_deployed multi-tenant tenant, welcome_sent Starter copy, starter_registered), wire CAS quiz CTA at automation_score/index.html:1921 to pass tier=starter, end-to-end smoke test.
Linear: Launchpad — Quiz → Automation Score → Closed Won⚠ link stale0/7
PAUSED on Jobber call (May 6) · Resume post-call
DoneHG Costco Contract — Field-map audit deploy + DNS
Engine + signing UI + finalizer LIVE since Apr 13. signature.heavenlygreens.com DNS LIVE (default CONTRACT_ENGINE_BASE_URL in modal_app.py:1068). Field-map audit changes deployed via subsequent contract engine sprints (Apr 17 → May 5). HG Work Order pages 13-14 still placeholder — low priority since Costco contract content is complete.
Engine live since Apr 13 · DNS live · Work Order placeholder still open (low priority)
DoneHG Costco Retroactive Contract Re-Generation (Path 1 — Signature Porting)
Legacy contract converter shipped (commit 671e1bd) — signature-porting pipeline for old Costco packets. Extracts signatures from old PDFs via PyMuPDF, re-runs through current engine with historical date overrides, stamps signatures onto new format. Batch conversions queued.
Apr 28 — converter shipped · No customer re-sign needed
Next Up — This Week / Next Week 18 active · 2 done
NowAndrew's MacBook Air provisioning
Phase 1c + Phase 2 hardening, ~2-2.5 hr. Pre-stage materials ready (AWS IAM policy JSON, Modal Viewer-role steps, Slack #andrew-client-alerts webhook, verify_andrew_scope.py patch, per-machine SSH keygen approach). Setup-Assistant target state: local admin `andrew`, NO Apple ID, FileVault on with recovery key in Troy's 1Password. Linear: Laptop Builds Sprint (High, target 2026-05-26). Troy driving in another instance.
Linear: Laptop Builds Sprint (Troy + Andrew)Completed0/6
Tomorrow Tue 2026-05-26 · ~2-2.5 hr provisioning · Andrew Tier 2 SCOPED
NextHG Live Production Board — DEPLOYED on hgcommand.com (real data + 4 boards + 3 calendars)
Single-source-of-truth HG production board, live + cookie-gated on hgcommand.com (not the dummy prototype). Real Costco data via the contract engine + 15-min costco-data.json feed; HG Direct from a Salesforce snapshot (transitional until the 2026-07-31 contract-engine convergence). Four board types (Costco/HG Direct/Commercial/Paver) + Delayed/On-Hold flags + Area 1–6 filter (canonical HG service-area map → execution/lib/hg_area_map.py). Board MIRRORS source systems (AGM is the book) — no free drag; write-back buttons for human moves. 2026-06-18: shipped a generic config-driven calendar suite (docs/prototypes/hg_calendar.html, ?cat=installation|service|sales) — Install + Service links in the board header, Appointment calendar on the Rep Scorecard (month view, weekly slices, SF deep-links per event), Week/Month toggle, Today returns to home view. Transform: execution/lib/hg_production_board.py. Remaining: Scheduled/Completed need SF install-date; payments/Charging Queue = Phase 2.
Live board (authed)
Linear: HG Live Production BoardLive0/10
DEPLOYED hgcommand.com 2026-06-18 · 4 boards + 3 calendars · Real Costco data; HG Direct SF snapshot · Contract-engine convergence 2026-07-31
NextSprint 3 #1 — installer_packet_build auth gate
installer_packet_build endpoint takes a guessable AGM contact_id with no bearer auth. Has IP rate limit (120/min) from Sprint 2 but no identity gate. Fix: require WEBHOOK_API_KEY like change_order_endpoint, OR scope to AGM custom-action HMAC, OR signed-URL pattern from AGM workflow. 2-4 hours design + implementation. Highest priority Sprint 3 item.
NextSprint 3 #2 — Document UUID-as-credential pattern
Six contract_engine endpoints rely on session_id (UUID v4, 122 bits) being the de-facto auth credential. Pattern is fine if documented and UUID generation is verified random — but currently implicit. Add to directives/dashboard_security_contract.md or write new directives/unguessable_id_auth.md codifying entropy floor + canonical generator.
NextSprint 3 #3 — Audit log Modal Volume + S3 rollup
execution/lib/audit_log.write_audit_entry falls back to logger.info (Modal structured logs) when /audit volume isn't mounted. For long-term forensic retention: mount agm-audit-log volume on every Modal function calling require_auth or guard_contract_endpoint + daily cron rolling to S3 with KMS-encrypted at-rest storage.
NextPest Routes Connector — Marketplace Template
Productize Valleywide build into a repeatable Pest Routes connector for AGM Pro Tools marketplace. SUPERSEDED BY the AGM Pro Tools for FieldRoutes — Headless Onboarding + Activation Monitoring Build entry (2026-05-11 plan). This entry kept for historical context; new work tracked under that item. Phase 1 = Valleywide validates the pattern (tenant 1). Phase 2 = pest snapshot + provision_fr_client.py generator + per-client dashboard template + multi-client activation matrix. Pest control is dominant FSM vertical for FieldRoutes.
AGM Pro Tools for FieldRoutes — Complete Plan
Linear: Client Integrations PipelineBacklog0/10
SUPERSEDED by 2026-05-11 plan · After Valleywide live
NextLaunchpad Intelligence — Wire Live Infrastructure
Architecture doc, market research, aggregation engine, registry, demo dashboard, and 3 Gamma decks all built. NOT deployment-ready. Needs: deploy launchpad_sync Modal cron, multi-location OAuth onboarding flow, live Jobber data connection (currently mock), Launchpad tab on Mission Control, permission model, health endpoint. Waterloo Turf is reference customer.
NextReal Turf — Awaiting Integration Credentials from Kendra
Scoping call completed week of 2026-04-28. Asked Kendra for usernames/passwords for the integration platforms. Last touch point: 2026-05-06 — Harlan emailed Kendra (cc Troy + Andrew) checking status on credentials and asking which FSM platform V's pilot customer is on, so we know which connector to spin up for the AGM integration test. Offered another call if easier than async.
Triage Dashboard
Linear: Client Integrations PipelineBacklog0/10
Last touch: 2026-05-06 (Harlan → Kendra, cc Troy + Andrew) · Waiting on: integration credentials + pilot FSM platform
NextEnable Search Atlas SEO on agmprotools.com
Activate Search Atlas (native AGM partnership). Enable OTTO SEO agent for automated on-page fixes. Install OTTO pixel on GitHub Pages assets. Connect Google Search Console + GA4. Add tracking code + configure. $79/mo per sub-account.
Linear: On the Radar — Queued InitiativesBacklog1/23
Troy · Search Atlas + OTTO
NextJobber Token Refresh — Distributed Lock
Jobber refresh tokens are single-use. Race condition possible when multiple Modal containers refresh simultaneously. Fallback deployed. Root cause: need distributed lock (modal.Queue or Redis) before onboarding client #2. Monitor Texas Turf for 1 week first.
Linear: On the Radar — Queued InitiativesBacklog1/23
Fine at 1 client · Risk at 3+
NextGolden Mailer — Housecall Pro Integration
Client #5 building. Awaiting API creds and AGM target instance from client.
Linear: Client Integrations PipelineBacklog0/10
Blocked · Awaiting creds
NextReddit Platform Integration — Mission Control
Integrate Reddit as a monitored platform in Mission Control. Scout already monitors 9 subreddits with 12 search terms. Wire data into the Mission Control dashboard alongside LinkedIn, YouTube, and other channels.
Linear: On the Radar — Queued InitiativesBacklog1/23
Scout already active · Dashboard integration needed
NextBlog Content — Clusters 2-7
18 posts remaining across 6 topic clusters: Quote Follow-Up, Missed Call Recovery, Review Generation, FSM-Specific Bridges, Franchise Intelligence, ROI & Proof. All posts must follow AI Overview SEO structure.
Linear: Content Flywheel + Build LogBacklog0/21
10/28 published · Content strategy saved
NextApril Intelligence Report Pipeline
Folded into Content Flywheel. Tuesday 5AM = Intelligence Report (Monthly Trends replaces on 1st Tue). Scout ran successfully Apr 9 (41KB). Pipeline: Scout, Quill, Pixel, Echo.
Linear: Content Flywheel + Build LogBacklog0/21
Part of flywheel · ~280 subscribers
QueuedHG BarCloud Integration — Inventory Automation
TOP PRIORITY. AGM-driven workflow: on install stage, fire webhook to Modal worker, write BarCloud Stock Issue with turf type + dye lot, push draw record back to AGM + SF. Exec memo sent to Tim + Troy Apr 9 — significant scope. First step: BOM schema + dye lot data model in AGM. No canonical bill of materials exists at HG today — this build forces a canonical turf-type → materials map to exist for the first time. BarCloud API has no webhooks (pull-only). Eliminates manual BarCloud entry by office staff.
Exec Memo (Google Doc)
Linear: Client Integrations PipelineBacklog0/10
Top priority · Exec memo sent Apr 9
LaterSprint 3 #4 — Third-party pen test (deferred)
All red-teaming today is internal (red_team_3_probes.py). For enterprise sales, external attestation from boutique vendor (Cure53, Latacora, Bishop Fox tier, $10K-$25K). Defer until enterprise pipeline justifies the spend or until processing live multi-tenant revenue data at scale. Re-evaluate quarterly.
Linear: Infrastructure & Security CleanupBacklog1/8
$10K-$25K · Gated on enterprise pipeline
LaterSprint 3 #5 — DPA legal review
docs/legal/data_processing_agreement.md is a v1 draft written without counsel. Standard Art. 28 structure but every customer signing requires a lawyer to sign off on jurisdiction, liability caps, SCC implementation. Engage counsel before first enterprise contract that requests a DPA.
DPA draft
Linear: Infrastructure & Security CleanupBacklog1/8
Gated on first DPA request
2 completed in this category — show
DoneShared Library Refactor — Kill Utility Duplication
Architecture migration shipped Apr 27. execution/lib/ package now provides 9 modules (credentials, email, slack, paths, retry, state, cost_tracker, remediation, __init__). 30 local scripts migrated to shared credentials library (commit 9f82e54). All hardcoded absolute paths removed for machine-agnostic resolution (commit 7f635b2). 37 files now import from execution.lib. Self-healing layers + cost tracking + token health all built on the shared foundation.
Apr 27 — architecture migration · 9 lib modules · 30+ scripts migrated
DoneJobber Developer Onboarding Call — May 6, 9 AM PT
TODAY. Developer onboarding call with Jobber team (Liam) at 9:00 AM PT. Engineering ALL GREEN (8 bugs fixed, live drill passed Apr 7). Partnership channel active. Demo prep status to verify before call: support@agmprotools.com inbox, 5 screenshots, Loom demo video, privacy policy URL, ToS URL, app icon 512x512.
TODAY May 6, 9 AM PT · Live call with Liam
AGM Pro Tools — Product & Funnel 14 active
NextFable 5 — Go-To-Market Strategy (roadmap of record)
Linear tracker mirroring docs/FABLE5_GO_TO_MARKET_BRIEF.md — the dependency-aware GTM critical path (§8) as 8 issues (AGM-229 through AGM-236), each pointing at the project that executes it. A roadmap-of-record tracker, not a duplicate of the board.
Linear: Fable 5 — Go-To-Market StrategyPlanned0/8
Jun 15 · GTM roadmap of record
NextArcSite Integration — Partnership + Writeback
Integrate ArcSite (mobile CAD / takeoff / proposal app for turf, fencing, landscaping) as a data source that writes drawings, takeoffs, and proposals back into AGM Pro Tools. AGM occupies the agentic automation/orchestration layer on top of ArcSite data — a partner slot no current ArcSite integration fills. Warm entry: Oasis Turf is already an ArcSite integration-candidate prospect in our pipeline. Hooks: ArcSite already feeds Salesforce (HG Direct stack) + its Drawing-PDF output maps onto our Project Documents Uploader. Next action: book Zoom walkthrough with Nate to map every ArcSite object to its AGM writeback (AGM-205).
Linear AGM-205 — Book Nate call
Linear: ArcSite IntegrationPlanned0/5
Jun 12 · Warm via Oasis Turf · Next: Nate Zoom walkthrough · Linear AGM-205 (book call)
NextProduct Mission Control — Phase 1: Dispatch shell
First contractor-facing product surface. Mobile-first single feed: what AGM did for them overnight — leads created, contacts updated, follow-ups fired, jobs flagged, alerts triggered. Read-only to start. The killer demo and the foundation Phases 2-5 hang on. Back-end (Modal logs, Slack, Telegram) already firing; front-end is greenfield. ~2-3 days for first pilot with HG as tenant 1. Architectural inspiration: Julia McCoy's closed-loop personal operating system, productized one layer down for contractors (wearables explicitly OUT of scope per Troy 2026-05-22).
Linear AGM-110
Linear: AGM Pro Tools — Product Mission ControlBacklog0/5
May 22 · Front-end greenfield · Back-end already firing · Linear AGM-110 (Urgent)
NextProduct Mission Control — Phase 2: Approval / redirect layer
Contractor taps any item in the Dispatch feed → approve / edit / reject. AGM learns preferences. Turns Dispatch from a status feed into a control surface. Blocked by Phase 1 (host UI). Workflow refactor needed for actions currently fire-and-forget. Per-contractor preference store. Risk: external-comms approval surfaces are sensitive (2026-05-15 Site Inspection incident) — explicit Submit + idempotent only.
Linear AGM-111
Linear: AGM Pro Tools — Product Mission ControlBacklog0/5
After Phase 1 pilot · ~3-5 days · Linear AGM-111 (High)
NextProduct Mission Control — Phase 3: Voice-cloned reply engine
Onboarding step: contractor records 30 min of audio, system clones via ElevenLabs (pipeline already wired for HG reps). Every AI-drafted email/SMS goes out in their voice and cadence. The moat — Hatch / Service Titan can't get here without rebuilding their stack. Brand boundary enforcement critical: voice replies fire only on contractor's own rail, never AGM's. Parallelizable with Phase 2 (different surface).
Linear AGM-112
Linear: AGM Pro Tools — Product Mission ControlBacklog0/5
Parallel to Phase 2 · ~5-7 days · Linear AGM-112 (Medium)
NextSpeaking Opportunities — Conferences, Podcasts, Events
Curated dossier of 30+ speaking opportunities for Troy to position AGM Pro Tools. Covers industry conferences (Lawn & Landscape Tech Conference, Service World Expo, Equip Exposition, PestWorld), SaaS events (SaaStr, SaaS North), 20+ podcasts (Tommy Mello, Jobber, Owned and Operated, Landscape Disruptors), and local events (Phoenix/Austin expos). Three pitch angles by audience type. Several have OPEN speaker applications now — Lawn & Landscape Tech Conference (Jul, Scottsdale) is the slam dunk.
Full Dossier (Google Doc)
Linear: AGM Sales & Marketing FunnelBacklog0/9
Apr 24 · Multiple open deadlines · SaaS North: Jun 30
NextPre-Qualification Form
Spec done (PRE_QUAL_FORM_SPEC.md). 5-step survey in AGM survey builder, wire to calendar. No inbound funnel live yet — biggest product gap.
Linear: AGM Sales & Marketing FunnelBacklog0/9
Andrew · Spec ready
NextDiscussion: Agency-Reseller SKU ("AGM Foundation")
Comparison vs CRM Connector (crm-connector.com) surfaced a real distribution opportunity. CRM Connector targets GHL agencies who install across sub-accounts — pure plumbing, $14.95–$112.25/mo, 100+ agencies. AGM Pro Tools today is high-touch operator (per-client Modal apps, bespoke secrets, hardcoded brand) — won't drop into a reseller channel. A separate stripped-down SKU could ride the same channel: GHL-native only (no Modal), snapshot-deliverable, white-label by default, $29–99/seat, Franchise Intelligence STAYS OUT (moat). Acts as funnel feeder to full operator product (Launchpad → Core → $999 audit). Worth deciding after Jobber developer conversation next week — outcome there may shape whether agency channel is the right second product or whether direct Jobber integration is the higher-leverage move. Do NOT bend current AGM Pro Tools into reseller shape — breaks both products.
CRM Connector
Linear: AGM Sales & Marketing FunnelBacklog0/9
Discuss after Jobber dev call (week of May 4) · Decision: build AGM Foundation SKU vs stay direct-only
SoonProduct Mission Control — Phase 4: Subscriber-pulse content engine
Call center transcripts + customer touchpoints → weekly 'what your market is actually saying' brief → ad copy + content suggestions. Renders inside Dispatch. AGM has data nobody else does at this resolution (CENTAH transcripts, AGM contact notes, contract engine sessions, post-install feedback). Privacy filter required — PII stays out of marketing briefs (Dashboard Security Contract Rule 1).
Linear AGM-113
Linear: AGM Pro Tools — Product Mission ControlBacklog0/5
After Phase 1 · ~7-10 days · Linear AGM-113 (Medium)
SoonProduct Mission Control — Phase 5: Proactive briefing layer
Cron-driven 5am rundown delivered the contractor's preferred way — email, SMS, push, or voice call. Pipeline status, hot leads, stalled jobs, today's chase list. Mirrors Briggs morning briefing for Troy. Per-tenant cron orchestrator + multi-channel delivery. Voice-call delivery plugs into Synthflow (OffClock Phase 3 dependency) or skip voice for v1.
Linear AGM-114
Linear: AGM Pro Tools — Product Mission ControlBacklog0/5
Caps the loop · ~5-7 days · Linear AGM-114 (Medium)
SoonDiscovery Call Automation (4-step sequence)
Booking confirmation email + SMS, 24-hour reminder, 1-hour reminder, 10-min final nudge. Troy needs to write copy for all steps. One task, not four.
Linear: AGM Sales & Marketing FunnelBacklog0/9
Troy · Copy needed for 4 messages
SoonBridge Video (Calendar Redirect)
Record or source intro video for the booking page. Button wired on site, no video content yet.
Linear: AGM Sales & Marketing FunnelBacklog0/9
Troy · Not started
SoonProduct Overview Video
Create AGM Pro Tools product overview video. 'Watch Overview' button on site has no content.
Linear: AGM Sales & Marketing FunnelBacklog0/9
Troy · Not started
Heavenly Greens — SF Automation Rebuild 11 active · 2 done
NowHG Architecture Audit — Pass 1 Inventory complete
Full HG architecture map across AGM (1,512 inventory rows + 388 fields + 275 workflows), Salesforce (PENDING Harlan dump), AGM Pro Tools code (133 files classified), and external rails (37 Modal apps + S3). 20 customer-facing flows synthesized on Flows tab with overlap warnings, read-only dashboards tagged, HG-direct contract engine marked planned. Built 2026-06-09 by Andrew. Sister project to Troy's HG Lead-Nurture & Comms Consolidation — superset scope. Workbook: docs/hg_audit/architecture_audit_2026-06-09.xlsx. Pass 2 (interaction map) waits on Harlan SF dump (HGP-53).
Linear: HG Architecture Audit (HGP project, Andrew lead) · 6 sub-issues: HGP-121..126, HGP-137 (Google OAuth setup) · Workbook: docs/hg_audit/architecture_audit_2026-06-09.xlsx · Pass 2 blocker: HGP-53 Harlan SF dump
NowSF OAuth Client Credentials Migration
Eliminate SOAP-as-Troy auth from 11 backend scripts. Move HG SF surface to OAuth Client Credentials Flow with dedicated integration user. Zero-downtime plan, shadow-auth first, contract engine cuts LAST. Linear: SF OAuth Client Credentials Migration (Urgent). Demoted from emergency to tracked priority after 2026-05-20 reframe — 5/19 freeze hit Sherrie, not Tscott. Summer '27 SOAP retirement makes this a forced migration eventually.
Linear: SF OAuth Client Credentials MigrationIn Progress3/5
Linear Urgent · 11 scripts to migrate · Target: a focused sprint week
NextGap #1 — Automated Welcome Email on Contract Approved
Build a Flow that fires on StageName = Sales Closed Won - Approved and sends the new Customer Welcome Letter to the customer. Currently the Welcome Letter PB only creates an internal task — customer hears nothing after deposit.
Linear: HG Workflow Gaps + Accounting AutomationPlanned0/12
After Tim approves template
NextGap #2 — Post-Deposit Nurture Sequence
Replace the inactive 2021 Customer Check In / 7 Week / 12 Week letters. New sequence: 2-week check-in, 4-week progress, day-before install reminder. The dead zone between deposit and install is currently unmanaged.
Linear: HG Workflow Gaps + Accounting AutomationPlanned0/12
4 inactive templates to retire
NextGap #3 — Post-Install Thank-You + Review Request
Post Sale Email template exists and is current but fires manually only. Broadly/Zapier review integration is inactive. Build automated fire on StageName = Completed - Paid.
NextGap #4 — Commercial Customer Automation
Every customer-facing rule is gated on Inquiry_Division__c = Residential. Commercial customers currently get ZERO automated emails across the entire lifecycle. Build parallel Commercial path.
NextSF OAuth Client Credentials Migration — Defensive Hardening
DEMOTED 2026-05-20 from "next-week emergency" to tracked priority after the 2026-05-19 incident was re-investigated and the original framing was found to be wrong. The 5/19 SF freeze did NOT hit Tscott (the backend integration user) — it hit Sherrie Feinstein (sfeinstein@heavenlygreens.com, SF user ID 00537000000vH5J). All 11 backend integrations stayed green throughout. Sherrie's freeze (and the 5/20 re-freeze) was caused by her iPhone routing the SF mobile app through a PacketHub VPN exit that SF's Transaction Security policy classifies as an anonymizing proxy. Tim Duggan's 5/1 freeze was an unrelated failed-password lockout, also not VPN. Post-mortem: docs/post_mortems/2026-05-20_sf_user_id_misattribution.md. The migration is still worth doing as defensive hardening for the original Summer '27 SOAP retirement, and the Strangler Fig benefit (shared execution/lib/salesforce.py replacing 11 duplicate login functions) is real. But the "emergency, drop everything" framing has no basis — no integration was ever down, and OAuth Client Credentials Flow would not have prevented either of the actual freezes (both were human-user mobile auth, not backend SOAP auth). Original 2026-05-07 notice still stands: SOAP API login() in API v31.0–64.0 retires Summer '27. v65+ has no SOAP login() at all. We use SOAP login() across 11 production scripts: costco_lead_intake.py, modal_costco.py, contract_engine/pipeline.py, modal_zapier_replacement.py, sf_agm_stage_sync.py, sf_yoy_report.py, hg_sales_dashboard_data.py, costco_dashboard_data.py, sf_calendar_feed.py, sf_to_agm_migration.py, salesforce_triage.py. Migration plan (unchanged — just no longer urgent): 1. Create External Client App in HG SF org with OAuth Client Credentials Flow (run-as a dedicated integration user, NOT Troy). 2. Build execution/lib/salesforce.py shared OAuth helper (Strangler Fig). 3. Add SF_CLIENT_ID/SF_CLIENT_SECRET to .env + 2 Modal secrets (contract-engine-sf, costco-lead-intake). 4. Migrate scripts one at a time with shadow-auth observer; contract engine cuts LAST. 5. Bump API version to v60+ across the board. 6. Deprecate SF_ADMIN_USERNAME/SF_ADMIN_PASSWORD; remove from verify_andrew_scope.py. Target: schedule into a future sprint when laptop builds + CENTAH bombardment fix have shipped. Stop-gap remains the rotation runbook at directives/sf_admin_password_rotation.md.
Rotation runbook
Linear: SF OAuth Client Credentials MigrationIn Progress3/5
Demoted 2026-05-20 from emergency to tracked · Original notice: 2026-05-07 (Summer '27 SOAP retirement) · Real trigger event: NONE — 5/19 narrative was misdiagnosis · Stop-gap: directives/sf_admin_password_rotation.md · Affected scripts: 11 production · Post-mortem: docs/post_mortems/2026-05-20_sf_user_id_misattribution.md
QueuedGap #5 — Delay Notification to Customer
Delayed Job workflow currently only alerts the Opportunity Owner. Customer hears nothing when their install is delayed. Build customer-facing alert.
QueuedCleanup — Retire 11 Inactive Workflow Rules
Broadly (old Zapier), duplicate Customer 7 Week Letter, Must_Fill_Out_Job_Schedule_Dates validation rule, Commercial Lead alert (broken criteria), and 7 other inactive rules cluttering the org.
QueuedCleanup — Email Alerts Folder Content Refresh
All 15 templates in Email Alerts folder are 2016-2018 vintage. Internal-only but overdue for content audit. Flag for Liz / Tim review.
QueuedHG Accounting Automation — 3-Phase Plan (Awaiting Tim Scoping)
Replace manual triage/data-entry/print-approve loop at accounting@heavenlygreens.com with full close-loop automation. Architecture: Microsoft Graph ingest → Claude vision OCR/classification → QuickBooks API (vendor match, bill creation, attachment upload) → Slack approval gate → Bill.com or Melio for ACH origination (Chase = funding source only, no Chase UI automation, no fraud walls). Three phases: (1) Foundation + read-only intelligence weeks 1-3, (2) QB sync + Slack approvals weeks 4-6, (3) Payment rail weeks 7-9. Email sent to Tim + Troy 2026-05-06 with build-vs-buy recommendation (hybrid: we build phases 1-2, buy phase 3 from Bill.com). Six scoping questions back to Tim: invoice/bill volume, current rail (Bill.com/QB Bill Pay/manual), approver hierarchy, employee redeploy plan, vendor count, Chase commercial banking products in place. Follow up with Tim once answers come back to lock the build plan.
Linear: HG Workflow Gaps + Accounting AutomationPlanned0/12
Email sent 2026-05-06 · Awaiting Tim's scoping answers · Follow up if no reply by 2026-05-13
2 completed in this category — show
DoneSF Automation Dashboard — Complete Visibility
Full inventory dashboard: 48 workflow rules, 42 flows/process builders, 70 email templates, 40 Apex triggers, 7 validation rules, 4 scheduled jobs, 11 identified gaps. Filterable, searchable, customer journey mapped stage-by-stage. Built from Metadata + Tooling API pulls.
Dashboard · Audit MD
Apr 10 · Live on GitHub Pages
DoneCustomer Welcome Letter — Template Rewrite
Rebuilt the 2021 COVID/drought Customer Installation Letter as a modern HTML template. 10-step onboarding from scanned physical letter. Signed by Liz Vazquez (Installation Coordinator). Reply-to routes to Liz. Logo artifact fixed Apr 10. Sent to Tim for approval.
Template
Linear: HG Workflow Gaps + Accounting AutomationPlanned0/12
Apr 10 · Awaiting Tim's approval
Queued — On the Radar 17 active
NextLaptop Builds Sprint — Troy MBP COMPLETE, Andrew MBA next
Troy MacBook Pro M5 (Tier 2 FULL, Harlan, mesh node #4 at 100.81.208.111) — Phase 1 + 2a + 2b COMPLETE as of 2026-05-21. Verification gate 7 PASS / 1 PARTIAL / 0 FAIL. FileVault, Find My, credential rotation drill, memory sync cron, full field-capable Python+CLI stack, all 2FA browser sessions authed. Operational mobile failover. Architectural findings (shared SSH key from MA, scheduled-tasks approval model, Python ecosystem split) archived in docs/laptop_builds_verification_log.md. Andrew's MacBook Air (Tier 2 SCOPED, mesh node #5) provisioning unblocked — ships Mon 2026-05-25. Phase 1c + Phase 2 hardening: ~2 hrs of work, deferrable across Fri-Sun.
Verification log · Rotation drill
Linear: Laptop Builds Sprint (Troy + Andrew)Completed0/6
Troy MBP done 5/21 · Andrew MBA ships 5/25
QueuedCompound — Two-Layer Linear Curation Plan (PARKED)
Audit-driven plan from 2026-05-19 session: turn the existing Content Flywheel infrastructure (Weekly Industry Report live, 51+ State of the System chapters, HG content-flywheel prototype repo with 3 layers built, Scout/Quill/Pixel/Echo agent specs never forked, parked Newsletter-as-a-Service and Multi-Tenant Newsletter specs, dormant blog-to-video + YouTube intelligence engines) into a curated compounding asset library inside the Linear Content Flywheel project. Layer A = unblock-stream epics over existing parked work. Layer B = 10-bucket curation library (Hooks/Demos/Stories/Frameworks/Case-Studies/Proofs/Quotes/Talking-Points/Visuals/Objections) populated from chapter archive + git log + Industry Report outputs. Briggs's SKILL_flywheel_monitor.md gets a new Friday audit line item. 14 strategic memory files queued for read before un-parking. Plan captured in docs/NEXT_SESSION.md under '🟦 PARKED 2026-05-20 — Compound'. Un-park trigger: SF OAuth ships + CENTAH structurally fixed + Costco commission automation unblocked.
Linear: Content Flywheel project · NEXT_SESSION.md parked entry
Linear: On the Radar — Queued InitiativesBacklog1/23
Parked 2026-05-19 · Off-hours canvas prep · Not competing with SF/CENTAH/Costco fires
QueuedMulti-Cloud Redundancy
Single Modal deployment, single region (us-west). Fine for 10 clients. At 50+ need multi-region or multi-cloud failover.
QueuedPapa's Turf — AGM-Native Prospect
Brand new startup. Contact: Scott. papasturf.com (not live yet). Discovery: confirm platform, service area, timeline.
Linear: Client Integrations PipelineBacklog0/10
Prospect · Added Mar 26
QueuedTurf Prep — Method:CRM Integration
API assessment done. Andrew emailed Tiffany Mar 20 — awaiting Method API key.
Linear: Client Integrations PipelineBacklog0/10
Blocked · Awaiting API key
QueuedAGM Friday Live — Episode 1
Troy brings industry context (3-5 min), Andrew demos AGM live (8-12 min). One 15-20 min session multiplied into 6-7 content pieces.
QueuedX/Twitter Developer Account Setup
Create developer account at developer.x.com, get API keys, test automated posting. Script execution/publish_twitter.py is built. Then Instagram + TikTok after.
Linear: On the Radar — Queued InitiativesBacklog1/23
Script ready · Needs API keys
QueuedS3 Backup — All 3 Machines
S3 encrypted backup currently only runs from Office iMac (2 AM daily cron). Home iMac and Mac Mini are NOT backing up independently.
Linear: On the Radar — Queued InitiativesBacklog1/23
Office iMac only · Home + Mini needed
QueuedContent Flywheel — White-Label Subscription Product
Modularize the content flywheel into a white-labeled subscription product. HG is Instance #1. Third revenue layer alongside ProTools automation and franchise intelligence. 10 open design decisions documented.
Linear: Content Flywheel + Build LogBacklog0/21
Third revenue layer · HG = Instance #1
QueuedClient-Facing Health Dashboard
Clients see nothing about their integration health. Build GitHub Pages dashboard — one row per client, auto-updated from /health endpoints.
Linear: On the Radar — Queued InitiativesBacklog1/23
Mac Mini crons live · Dashboard not built
QueuedDocument Signature Watch Dog
Automated reminder loop for unsigned documents (sales contract, start of work, completion of work). Three independent loops, timed escalation.
Linear: On the Radar — Queued InitiativesBacklog1/23
Designed · Not built
MediumLoop Engineering — Autonomous Build Factory (Spec → Build → Review)
From the Alex Finn loop-architecture synthesis (2026-06-12): add the build/review middle to the discovery-loop front end. P1 Slack rails (blocked channel, EOD test-and-merge, backlog auditor), P2 /spec intake → machine-buildable Linear cards, P3 worktree build loop + independent review loop (Circumference Protocol gated). Cards AGM-206..211.
Linear project
Jun 12 · Project opened — board only, no code yet
Waiting On Others 5 active
WaitingAndrew — Review Workflow SMS/Email Copy
Needs to finalize SMS + email copy for the 'Completed - Paid' review request.
Linear: HG Workflow Gaps + Accounting AutomationPlanned0/12
Andrew | Undated entry — freshness unknown, needs verdict (verify or retire)
WaitingGolden Mailer — API Credentials
Need Housecall Pro API creds and AGM target instance from the client to begin integration build.
WaitingWaterloo Turf — Follow Up Week of Apr 13
Jeromie went quiet after seeing franchise intelligence deck. New strategy: 'you had first look before Jobber partnership goes public' follow-up email. Draft ready at .tmp/drafts/waterloo_jeromie_followup.md. Troy to review and approve. Time around Jobber Marketplace announcement.
Linear: Client Integrations PipelineBacklog0/10
Draft ready · Follow up week of Apr 13
WaitingAndrew — 4 AGM custom field IDs (Drawing PDF, Walkthrough Video, Change Order PDFs, Waiver PDFs)
Batched ask emailed 2026-05-05 (Troy CC'd). System runs degraded-but-functional until field IDs land — drawings/videos/waivers still upload to S3 and reach installer packet via prefix listing, but won't show on AGM contact card as 'received'. Manifest evaluator treats missing field IDs as pending so digest keeps nudging. Soft-failing on purpose so no data lost.
Linear: HG Contract Engine — Phase 4B/C + LifecycleIn Progress0/4
Sent May 5 | FU was May 12 (overdue) | Code degraded-functional via env-var fallback in uploader_app — uploads still hit S3, won't write to AGM card until IDs land
Recurring / Ongoing 4 active · 1 done
RecurringDaily Chapter Recording
Nightly 8 PM PT audio chapter. Full loop: MP3 + transcript + Telegram post + chapters doc update + commit. Script: execution/record_chapter.py
Nightly 8 PM
RecurringZero Inbox Briefing
AI-powered email briefing with one-click archive. Live for Troy + Tim. Embeds system health. Daily automated run.
Daily
RecurringWeekly Intelligence Report
Automated delivery DARK since Mar 27 (18 days). Content pipeline Echo stage (Modal cron content_pipeline_scheduled, Tue 5 AM PT) fires but skips with "no trends file" — Monday Scout not persisting to /tokens/flywheel/monthly_trends.md. Last publish_request: 2026-03-27_214245. Morning triage: Modal logs + volume inspection. See docs/NEXT_SESSION.md top priority.
BROKEN since Mar 27 · 269 subscribers impacted
RecurringAtlas Content Production
Blog posts, long-form topics, cloud stacks, local short topics, press releases. 4x per month cadence for HG.
4x/month
1 completed in this category — show
DoneCanonical doc staleness session-start hook
SessionStart hook blocks Claude session greeting until any canonical doc >=1d stale is updated or explicitly deferred in NEXT_SESSION.md. Replaces the passive Slack alert + reactive 5d deploy block. Threshold tightened from 2d to 1d so daily delta is 5min, not weekly catch-up of 30min.
Shipped 2026-04-26 — fixes 3rd 4+ day drift in a month
Recently Completed 33 expand ↓
DoneLevel 3 Outcome-Feedback Bandit (recursion-capability promotion)
Move AGM Pro Tools from Level 2 (structural enforcement) to Level 3 (bandit/exploitation) on the Vibe Thesis recursive-capability ladder. Wire Thompson-sampling bandit over signing-link email subject line — first axis. Substrate already in place: signing_pg.sql captures sent/viewed/signed/withdrawn/reminder timestamps + rep stratification. 3 sprints / 8 working weeks once unblocked. Gated behind 2026-05-19 SF breach recovery (Path B → OAuth Client Credentials) + CENTAH 'Re:' thread bombardment fix. First Monday after green light: 10-min HG send-volume query, 20-min variant_assignments schema PR, 30-min Tim+Eric template-discipline prep. See memory/project_level_3_outcome_bandit.md. — UNQUEUED 2026-06-12: Troy green-lit; Sprint 1 shadow mode built, Council-reviewed, and deployed same-day. Tracking continues under Multi-Track Contract Engine.
Linear: Level 3 Outcome-Feedback Bandit (queued)⚠ link stale0/6
Jun 12 · Left the queue — Sprint 1 shipped same-day
DoneMorning Discovery Loop — loop-engineering ignition
Local LaunchAgent wakes 05:00, reads live state (Linear source-of-truth + True North stack + handoffs + cron health + doc staleness), triages via maker-then-checker Opus pass, writes a dated briefing to NEXT_SESSION.md voiced at session start. Draft-and-queue; fires nothing credentialed. Shipped via Circumference Protocol (Council GO-WITH-PREREQS): cross-machine watchdog, draft cap, kill-criterion review 2026-07-09. Primary active on Office Mac. OPEN: Home Mac standby + Mac Mini watchdog install (Troy, tonight).
Jun 10 · harlan_morning_discovery.py + LaunchAgents
DoneCO Current Scope panel — closed-conn rollup fix (commit f37f085)
Two-panel scope render shipped 527dace exposed a closed-connection bug in change_order_page: conn.close() at line 10480 ran before the scope-rollup query at line 10584, query failed inside a swallowing try/except, _scope_co_rows came back empty every render, Current Scope == Original Scope. Fix moved conn.close() after the rollup query with explicit closes in early-return branches and logged the previously-swallowed exception. Deployed via pre_deploy_check Check 16 harness clean on the 20-test suite (including the new 5-digit-street-number regression for HGC-00149 v2). Verification: rebuild HGC-00149 draft 74cc4d4b in browser — Current Scope should show K9 Park Olive + Hydrofill from CO #2 and CO #1 edging addition.
DoneSprint 2 security hardening — DONE
Closed 4-gap audit from 2026-05-15 vibe-coded-app checklist: (1) Per-bearer-token rate limit (60/min soft, 1000/hr hard) via modal.Dict token bucket in execution/lib/rate_limit.py, wired into require_auth. (2) Audit log per authed call to Modal structured logs with Slack alerts on hard-cap + auth-failure bursts (execution/lib/audit_log.py). (3) Six security response headers (HSTS, X-Frame-Options DENY, etc.) on all 20 fastapi_endpoints via @with_security_headers decorator (execution/lib/security_headers.py). (4) GDPR DPA v1 draft + privacy policy uplifted with sub-processor disclosure, lawful bases, SCC reference. Pre-deploy Check 14 enforces decorator pairing structurally. Contract engine endpoints (no require_auth) got guard_contract_endpoint() with IP-based rate limiting (120/min, 2000/hr per IP per scope). Live-verified on both Modal apps.
DPA draft · Privacy policy · Architecture gaps
Linear: Infrastructure & Security CleanupBacklog1/8
May 15 · Commits 231fd10 + 511711a · All 14 pre_deploy_check checks green
DoneProspecting Engine v1 — FieldRoutes pest seed deployed
Continuous FSM operator hunt — first vertical FR pest, pairs with the FR opportunity directive as the active-outbound demand layer. Shipped: operator_db, fr_public_references source (polite 3s scrape of fieldroutes.com case studies), deterministic 7-component scoring rubric + Sonnet rationale, pipeline orchestrator, agm-prospecting Modal app on a 6h cron, heartbeat tracking, Slack alerts on ≥80 scores. Pre-deploy check 9/9 passed. First production fire: 41 FR-confirmed pest operators in cloud DB. Storage: /tokens/prospects/ on Modal, data/prospects/ gitignored locally (moat asset stays out of repo).
Directive · Modal app
Linear: AGM Sales & Marketing FunnelBacklog0/9
commit 1f28fa1 | 41 operators in cloud DB | agm-prospecting live
DoneContract engine rep-mailbox validation guard
delivery.py rep-assignment fallback audit (carryover from May 6) closed. Customer-facing contract emails (signing link, signed PDF, withdrawal, reminder, finalize confirmation x2 paths) now hard-fail with Slack alert when rep_email is missing or in DECOMMISSIONED_REP_EMAILS env deny-list. _format_rep_from default fallback flipped from callcenter@ to empty so silent re-routing is impossible. send_via_agm_email only sets emailFrom when populated. Operator runbook in INSURANCE_PLAYBOOK -> Rep Mailbox Decommissioning (HG). Commits 4350c4f (parallel instance, 3 of 4 sites) + de5e3cd (this instance, reminder + finalize x2 + runbook).
May 7 · +199 lines / 3 files / 2 commits
DoneHG Costco Materials Manifest — shipped + deployed
Per-step blocking-materials tracker (photos / access photos / drawing / video / change order / waivers) replaces the binary 'needs site photos' rep nudge. Manifest evaluator with conditional steps. Forensic packet_audit_log + AGM contact-timeline notes. Step-scoped uploader URLs. Auto-rebuild on CO countersign. Smart subject lines (e.g. '10 jobs waiting — 4 just need drawings'). Commit 7a5c263 + Troy's manifest tightening (access_photos required, photos min_count=3). Both contract engine + uploader deployed and verified live.
May 5 · +1,365 lines · 7 files
DoneCostco CO E2E — three surgical blockers cleared
Three Monday-priority bugs killed in one commit (104eaea, May 4): (1) delivery.py customer email subject + body now branches on contract_type for Change Order copy; (2) pipeline.py skips contract-signed tag write on CO sessions so Specs & Warranty workflow doesn't re-fire; (3) signing UI markerEls scoped to CO field set (co_member_initial, co_member_sig, co_member_date) so JS classList errors are gone. Andrew unblocked for full Test-Costco CO E2E.
May 4 — commit 104eaea
DoneMulti-Track Contract Engine — Phase 5 CO pipeline
Full Change Order pipeline shipped May 1–5 across 40+ commits. Standalone CO PDF (parent-ref correlation, Pacific date, dealer block, project address recompose, anchor-based signature positioning). CO-aware signing/finalization/delivery. Rep countersign SMS. Form delete buttons + drop empty turf rows. Cumulative anchor lift across signed COs. Materials manifest per step. Signed-CO email + installer packet bundle. CO paired test day 2 walked 5/5.
May 1–5 sprint · 40+ commits
DoneHG Lead Alert — race-condition + opp source resolver
Race-condition hardening (3-retry enrichment with 2/5/10s backoff + dead-letter on suppression). Opportunity-source resolver — fetch_hg_opportunity_source searches opps by contact_id, reads HG Opportunity Source + Secondary Source. Dedupe + Opportunity Created support (24h Modal Dict window). 2-min Wait + opp gate replaces dedupe/two-trigger design. Sender split costco@ → HGLeads@ + Andrew cut over to agmprotools.com.
May 1–5 · Commits 69fb7ef, 8fe2a7e, cc77248, 2464fc5, 4d60510
DoneArchitecture Migration — Shared Library + Self-Healing + Cost Tracking
execution/lib/ package shipped Apr 27 with 9 modules (credentials, email, slack, paths, retry, state, cost_tracker, remediation). 30 local scripts migrated to shared credentials library. All hardcoded absolute paths removed for machine-agnostic resolution. Self-healing layers: shared retry lib + Modal auto-replay + auto-recover map. API cost tracking + Google token health wired into health endpoint. Immune system: per-cron staleness threshold + automated 15-min self-healing sweep.
Apr 27 · 9 lib modules · 30+ scripts migrated
DoneINSURANCE.md split — auto-state + playbook + changelog
INSURANCE.md hardening (Apr 30, commit 72a6f6c). Split into INSURANCE_STATE.md (auto-regenerated tier-aware state), INSURANCE_PLAYBOOK.md (manual recovery runbook), and AGM_BUILD_CHANGELOG.md (chronological build log). generate_insurance_state.py preserves .env section across non-credentialed regenerations. Closes the structural gap that let canonical docs drift behind reality.
Apr 30 · Commits 72a6f6c, 5231052, 205e97d
DoneMission Control composite — single-pane-of-glass
Mission Control composite endpoint (commit 92479fc, Apr 30). Aggregates clients + crons + health + uptime + cost + token health into one view. Rolls up per-client and per-cron status with severity tiers. Replaces piecing together state from Slack + email + dashboards.
Apr 30 · Commit 92479fc
Doneagmpro.tools branded short URLs LIVE
Cloudflare zone (Free plan) fronts Modal endpoints via 302 redirect. /j/<id> → installer-redirect, /upload/<job> → documents-uploader, /v/<id> → video-redirect. Engine config flipped: hg_costco.yml + 3 hardcoded URLs. Brand moment is the SMS link contractor sees, not the address bar.
Apr 25 · Commit 1ca9efd
DoneSubscriber dashboard scaffold + Texas Turf Mission Control
Subscriber dashboard scaffold shipped Apr 19 — multi-tenant with 3-window filtering and cross-check gates. Texas Turf dashboard rebuilt on gold-standard layout (commit a785064): filter parity, auto-refresh, product-mix cron, Recent Activity scrubbing, brand footer, stage normalization. Chad/Real Turf dashboard rebuilt on CAS-anchored pattern. One-command password rotation workflow added 5/5.
Apr 18–19 + 5/5 polish · Multi-tenant scaffold · TT + Chad live
DoneHG Call Center Transition — John Throne onboarded
Elizabeth Morton departed; John Throne onboarded as new HG call center manager. Team meeting held Apr 15-16 window; transition complete. Workflow ownership clarified, Andrew agmprotools.com rebrand cutover for HG Lead Alert sender (4d60510) closes the visible loop on call-center sender identity.
Apr 15–16 transition · May 5 sender rebrand close
DoneCAS Outside View — URL-first delivery + audio-first comms
Free-tier CAS report fully redesigned 5/3 to mirror $97 Starter dashboard preview. URL-first delivery (PDF retired as primary), promoted audio-hero with native HTML5 player + click-to-play big green icon, recoverable-range green callout, conversion bridge, dynamic CTA, audio script rewritten operator-style. Full positioning sweep — purged 'fix it automatically' across audio + email + URL ($97 = visibility, NOT remediation). Cross-browser verified Chrome/Safari/Firefox desktop + Mobile Safari + Mobile Chrome iOS.
May 3 — bundled pivot shipped
DoneAudio-first communication framework — locked
AGM is becoming a voice layer on top of contractor's business. Subject lines lead with cost ('Troy, this is costing you ~$X/month'), email body opens with audio block as primary, URL audio-hero is hero-prominent. Future surfaces: weekly score audio updates, trigger-based alerts, exec-level rollups. See memory/project_audio_first_communication_framework.md.
May 3 — strategic positioning
DoneEmail body conversion frame — Shock→Personalize→Quantify→Direct
Validated email pattern for any AGM diagnostic email. H1 leak number, credibility bridge, annual reframe callout, audio-first CTA, three named loss points, outcome-anchored button, 'what happens after you click' 3-step, soft close. See memory/feedback_email_conversion_frame.md.
May 3 — pattern locked
DoneLaunchpad Phase 1 — Franchise-to-Launchpad Rename
12 files renamed/refactored. INDUSTRY_TEMPLATES replaces FRANCHISE_NETWORKS. All docs, directives, registry updated. Backward-compat fallbacks throughout.
Apr 10
DoneLaunchpad Phase 2 — Intake Form + Checkout Endpoint
Customer-facing intake form + /launchpad-checkout Modal endpoint. Industry dropdown drives template selection.
Apr 10
DoneNorth Star Vision Confirmed
5 pillars confirmed: Jobber Marketplace (distribution), Franchise Intelligence (moat), Automation Score (funnel), Content Flywheel (engagement), Launchpad (onboarding). Launchpad is the critical path.
Apr 10
DoneDeactivate Broadly Workflow Rule in SF
Already deactivated. Confirmed Apr 2. Zapier contamination path fully dead.
Apr 2
DoneProject Ironclad — Tailscale Install
Tailscale on all 3 machines. Cross-session persistence DONE.
Apr 2
DoneContent Flywheel — 3 Platforms Live
Scout, Quill, Pixel, Echo pipeline operational. LinkedIn first automated post sent. YouTube both channels authorized.
DoneScout Intelligence Bridge — Operational
Claude web search, RSS feed ingestion, Reddit monitoring (9 subreddits, 12 terms). First real run: 12 sourced signals.
Apr 5
DoneChapter Book Complete — 28 Chapters
All chapters have audio, S3 links, and email delivery. Dual distribution (Telegram + email).
Apr 5
DoneHarlan Email Rewire — harlan@agmprotools.com
Rewired from Gmail OAuth to SMTP. 13 scripts + Modal secrets updated.
Apr 1
DoneWeekly Intelligence Report — First Live Send
Issue #14 sent Apr 1 to 269 subscribers. First fully automated AI intelligence report.
Apr 1
DoneZapier Deprecation — All Zaps Off
All 38 Zaps replaced. Modal poller is live replacement.
Mar 30
DoneModal Decomposition — 12 Independent Apps
5,249 to 1,927 lines. 6 new apps + shared library. All 12 apps live.
Mar 27