True North

AGM Pro Tools — everything in flight, prioritized

Last updated: 2026-05-13

4
Clients Live
4
Prospects
$891
Monthly MRR
30
Now
18
Next
82
Active Total
Launchpad — Push-Button Client Onboarding 4 active · 7 done
NowGolden 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>.
Golden Template Build Spec + Copy (Google Doc) · Push-Button Client Plan (Google Doc)
Troy + Harlan · ~1 hour together · Custom fields: DONE
NowAutomation 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)
WIRED Apr 24 · Needs Modal deploy + GitHub Pages push
NowEnd-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.
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.
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.
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.
Build Workbook
Apr 10 · Both 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
DonePost-Payment Success Page
Built success.html with 4-step progress tracker, session_id polling, OAuth button on step 5, dashboard link on completion. Live on GitHub Pages.
Live
Apr 10
DoneDeploy Intake Form to GitHub Pages
agm-launchpad repo created, intake + success pages deployed, GitHub Pages live. Form pre-fills from URL params for unified funnel.
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 4 active · 16 done
NowPhase 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.
NowPhase 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.
TOP PRIORITY #1 · ~1 day build · Completes the cadence engine
NowInstaller 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.
~1 hour · Mechanical — built on top of shipped tile grid
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
Planning · Plan drafted 2026-05-11 · 11 workstreams · ~10 wk to GA
16 completed in this category — show
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
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.
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
This Week — Priority 20 active · 3 done
NowProspecting 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.
Queued for May 13 · ~2-3 hours
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
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).
Complete Plan Google Doc · Marketplace Recon (2026-05-06) · Audio Opportunity Story (11min)
May 11 — plan drafted + Google Doc + directive committed · Blocker #1: pest snapshot · Valleywide is tenant 1
NowContract 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
May 5 — strategy doc + memory files saved · Defer per-Modal-app split until paid tenant #2
NowStream 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.
PAUSED on Jobber call (May 6) · Resume post-call
NowPre-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').
Bundled with Stream B (paused for Jobber call)
NowReview 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
Surfaced Apr 30 · Research saved · Next session priority
NowThe 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
Apr 29 · 7 issues drafted · May launch
NowNewsletter-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)
SPEC DELIVERED Apr 23 · Awaiting Troy review + §9 decisions · Proposed ship: Fri May 1 (AGM dogfood) · Parallel to HG Costco Layer 2/3
NowHG 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.
TOP PRIORITY · Training + automation walkthrough
NowHG 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.
TOP PRIORITY · Tied to multi-rep training
NowHG 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.
TOP PRIORITY · Operational — Tim meeting
NowHG 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.
Added Apr 27 · Troy priority · Tied to multi-rep + staffing
NowContractor 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
Audio-first pivot shipped May 3 · LinkedIn post pending Stream B
NowMonthly 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.
Troy reviewing · V2 ready to send
NowChapter 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.
Script needed · Dead links in Google Doc
NowJ. Chris Update — Gift Card Delivery Workflow
Add J. Chris to the update loop and get the live gift card delivery workflow operational.
Action item · Added Apr 17
NowAGM Opportunity Value Backfill
AGM pipeline opportunities show $0 because Zapier never synced monetary values. Backfill from SF contract amounts for all synced opportunities.
Script needed
NowValleywide 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
Code: done · Premium key: unlocked Apr 9 · Pending: nurture copy review + active flip
NowHG 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.
Partial progress · Full sweep still pending
3 completed in this category — show
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
Shipped May 12 · 8 dossiers + 8 outbound drafts queued
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 12 active · 1 done
NowJobber 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
NowHG 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)
Top priority · Exec memo sent Apr 9
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
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
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.
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.
Fine at 1 client · Risk at 3+
NextGolden Mailer — Housecall Pro Integration
Client #5 building. Awaiting API creds and AGM target instance from client.
Blocked · Awaiting creds
NextSF-to-AGM Migration — Batch Strategy
POC complete (Jerry Ellis). Define batch scope: all customers vs active only, file migration cutoff (176 GB), DocuSign strategy.
View Map
POC done
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.
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.
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.
Part of flywheel · ~280 subscribers
1 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
AGM Pro Tools — Product & Funnel 7 active
NowSpeaking 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)
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.
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
Discuss after Jobber dev call (week of May 4) · Decision: build AGM Foundation SKU vs stay direct-only
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.
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.
Troy · Not started
SoonProduct Overview Video
Create AGM Pro Tools product overview video. 'Watch Overview' button on site has no content.
Troy · Not started
QueuedVerify hello@agmprotools.com
Confirm email is receiving and sending correctly.
Andrew · 5 min
Heavenly Greens — SF Automation Rebuild 9 active · 2 done
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.
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.
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.
Template ready
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.
High impact
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.
Email sent 2026-05-06 · Awaiting Tim's scoping answers · Follow up if no reply by 2026-05-13
QueuedSF SOAP API login() Retirement — Migrate to OAuth Client Credentials
Salesforce notice received 2026-05-07: SOAP API login() in API versions 31.0–64.0 will be retired with Summer '27. Org 00D37000000Pbiq (HG) flagged. 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. All POST username/password to login.salesforce.com/services/Soap/u/{55|58|62}. Migration plan: (1) create External Client App in HG SF org with OAuth Client Credentials Flow, (2) build execution/lib/salesforce.py shared OAuth helper (Strangler Fig — eliminates 11 duplicate login functions, aligns with Apr 27 shared library policy), (3) add SF_CLIENT_ID/SF_CLIENT_SECRET to .env + 3 Modal secrets (costco-lead-intake, modal-zapier-replacement, contract-engine), (4) migrate scripts one at a time with staging verification, (5) bump API version to v60+ across the board, (6) deprecate SF_ADMIN_USERNAME/SF_ADMIN_PASSWORD. Plenty of runway but front-load before Summer '27 wall — also unblocks v65+ where SOAP login() is gone entirely.
Notice received 2026-05-07 · Deadline: Summer '27 · Email sent to Tim + Andrew
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
Apr 10 · Awaiting Tim's approval
Queued — On the Radar 16 active
QueuedRent Manager — New Vertical Target
Property management backend (residential, commercial, storage, MH, student, vacation). Open Access API + ODBC = same connector pattern. Lane is horizontal agentic ops layer, NOT another AI leasing chatbot. Andrew has internal contact gathering intel — 8 questions sent Apr 9. HOLD until intel lands.
Rent Manager
Intel ask sent Apr 9 · Waiting on Andrew's contact
QueuedMulti-Cloud Redundancy
Single Modal deployment, single region (us-west). Fine for 10 clients. At 50+ need multi-region or multi-cloud failover.
Scale concern
QueuedPapa's Turf — AGM-Native Prospect
Brand new startup. Contact: Scott. papasturf.com (not live yet). Discovery: confirm platform, service area, timeline.
Prospect · Added Mar 26
QueuedTurf Prep — Method:CRM Integration
API assessment done. Andrew emailed Tiffany Mar 20 — awaiting Method API key.
Blocked · Awaiting API key
QueuedAGM Wednesday Ask Us Anything
Weekly 30-45 min live Q&A. Client retention + engagement. Not launched yet.
Content flywheel
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.
Not scheduled
QueuedMac Mini Visual Dashboard
Single-pane-of-glass view of system health, client status, event flow, alerts.
Concept only
QueuedAndrew MacBook Air — Clone AGM Instance
Turn Andrew's MacBook Air into 4th Tailscale mesh node with full AGM dev environment. 5 layers: mesh setup, agent identity (.andrew marker), scoped credentials, memory bootstrap, handoff integration.
Clone Guide
Guide ready · Needs Troy decisions
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.
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.
Office iMac only · Home + Mini needed
QueuedATE Newsletter Template
Monthly newsletter for Artificial Turf Express. Same pipeline as HG newsletter.
Recurring · Template TBD
QueuedATE Square Backend Migration
Complete backend changeover to use Square for products and new photo integration for ATE.
Not started
QueuedFind Video Producer
Source and hire a video producer for HG content. Upwork and network referrals.
Not started
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.
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.
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.
Designed · Not built
Waiting On Others 6 active
WaitingAndrew — Review Workflow SMS/Email Copy
Needs to finalize SMS + email copy for the 'Completed - Paid' review request.
Andrew
WaitingGolden Mailer — API Credentials
Need Housecall Pro API creds and AGM target instance from the client to begin integration build.
Client
WaitingTurf Prep — Method API Key
Andrew emailed Tiffany Mar 20. Need Method:CRM API key to build the integration.
Tiffany
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.
Draft ready · Follow up week of Apr 13
WaitingRent Manager — Andrew Intel
8 questions sent to Andrew's internal contact Apr 9. HOLD on all build/outreach/sandbox until intel lands.
Andrew's contact · Sent Apr 9
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.
Sent May 5 · Follow up by May 12
Recurring / Ongoing 4 active · 1 done
NowWeekly 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
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
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 29 expand ↓
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
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
DoneLaunchpad Build Workbook — Google Doc
Complete status tracker: what's built, tested, missing, and remaining work with owners + time estimates. 701 formatting requests.
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.
Apr 4-5
DoneScout Intelligence Bridge — Operational
Claude web search, RSS feed ingestion, Reddit monitoring (9 subreddits, 12 terms). First real run: 12 sourced signals.
Apr 5
DoneAutomation Score Backend — Deployed & Tested
End-to-end pipeline verified: quiz, scoring, AGM lead, email/PDF, Slack, Sheet. Critical bugs fixed.
Live
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