SIS

Hermes Ops Hub โ€” To-Dos

12/56 done · project_todos + every client's owed-by lists · regenerated 2026-07-26 20:36 UTC
P0
P0 โ€” Critical / blocking
5/6 done
Verify all mailed QR URLs still resolve (slug-scheme risk on multi-branch leads)๐Ÿค– agent
โš‘ Note: Resolved 2026-07-13 (all mailed QR URLs returned 200 on first pass); re-verified again during the 2026-07-26 sprint, all still resolving. Peaden x4 / Cooler Air x2 highest-risk slugs held.
STATUSDONE
Pricing ruling locked ($500 = $250 deposit + $250 at go-live, $497/mo hard floor)๐Ÿ‘ค drew
โš‘ Note: Drew ruling 2026-07-12, final. Propagated to CLAUDE.md, offer LOCK UPDATE, call script, funnel play, deployed offer pages.
STATUSDONE
Final Stripe link built + verified live๐Ÿค– agent
โš‘ Note: https://buy.stripe.com/28EdRaft81Tm0nfeFSds40a โ€” $747 today ($250 balance + first month), then $497/mo. Closes the old 3-per-tier-links P0.
STATUSDONE
Hub v1 (clients.json + generate_map.py + index.html) shipped๐Ÿค– agent
โš‘ Note: Deployed at https://sis-hermes-hub.pages.dev, 2026-07-12.
STATUSDONE
Rebuild 273 sites with open-beacon + redeploy (awaiting Drew go)๐Ÿค– agent
โš‘ Note: SHIPPED 2026-07-13: path bug fixed in a LOCAL copy of the build script (hermes_batch_build_LOCAL.py โ€” original untouched) repointing LEAD_FILES/MASTER_TEMPLATES at this folder's actual layout, auto-deploy neutered during builds. All 3 verticals rebuilt fresh (hvac 100 + roofing 74 + arborist 99 = 273 unique sites, verified 1:1 against dedup registry, no dupes/no gaps). First-open tracking beacon injected into all 2730 HTML pages (10/site x 273) via new inject_beacon_LOCAL.py โ€” localStorage-gated fetch() to the QR-open webhook with per-lead {phone (E.164),business,slug,vertical,preview_url}, JSON-escaped business names verified via live JS eval. Deployed once to CF Pages project sis-hermes (3838 files, 2756 new). Tri-State Tree Service verified live: beacon present + "Grand Bay, AL" (not the old "AL 36541, United" corruption) + correct phone. Spot-checked 1 hvac (bensons-heating-and-air-conditioning) + 1 roofing (pro-roofing-solutions) slug live for beacon + correct phone in payload โ€” both pass. STILL OUTSTANDING: Drew's own live-fire acceptance test โ€” reopen the Tri-State postcard page from a phone/fresh browser and confirm the Telegram/GHL alert actually fires end to end (this agent verified the beacon payload is correct and reaches the webhook URL, but did not/could not trigger a real scan). Full run log: 00_ENGINE/BEACON_DEPLOY_LOG_2026-07-12.md.
STATUSDONE
Drew GHL checklist ยง1-4 + demo retest (Monday-gating)๐Ÿ‘ค drew
โš‘ Note: Gates Monday โ€” must clear GHL checklist items 1 through 4 and pass the demo retest before the next demo cycle can proceed.
STATUSOPEN
P1
P1 โ€” High priority
7/30 done
Copy regression on rebuilt sites: generic hook/about paragraphs - decide accept vs restore original copy w/ beacon๐Ÿ‘ค drew
โš‘ Note: Superseded 2026-07-26 โ€” sites rebuilt with real reviews/copy as part of the full selling sprint (573 sites round-2 + estimate engine live); generic hook/about-copy concern no longer applies.
STATUSDONE
CONFIRM: 'Hermes - Opened, No Booking (Rescue Drip)' found PUBLISHED - intentional?๐Ÿ‘ค drew
โš‘ Note: Was built as Draft. If Drew published it after reviewing copy: fine (A2P approved). If not: unpublish. Note: emails send via LC default domain (SPF/DKIM for SIS not set up yet).
STATUSOPEN
Drew: review cleanup manifest, strike what dies๐Ÿ‘ค drew
โš‘ Note: EXECUTED 2026-07-12 (partial): workflows deleted + all kept WFs foldered (00_SYS, 01_RingRescue, 02_HERMES, 03_EVENTS, 04_SUPPORT_MISC); demo custom fields deleted. LEFTOVERS below.
STATUSDONE
Drew: approve WF2 rescue-drip copy > publish (A2P is approved, SMS unblocked)๐Ÿ‘ค drew
โš‘ Note: Automation > 'Hermes - Opened, No Booking (Rescue Drip)' (Draft). 2 emails + 1 SMS. A2P approved so it CAN publish - copy approval is the only gate now.
STATUSOPEN
Wire webhook GHL leg (cortexOS): QR open > tag qr-opened + stage Opened๐Ÿค– agent
โš‘ Note: Receiver built + published 2026-07-12: 'Hermes โ€” QR Open Intake (Webhook)' workflow live, E2E-verified via test POSTs (create/update contact by phone + tag qr-opened). Webhook URL documented in 02_SALES/WEBHOOK_SPEC_QR_OPEN_2026-07-12.md: https://services.leadconnectorhq.com/hooks/SKim0aEZQWmN8cZbD2rY/webhook-trigger/660d52c0-1614-4a68-af5f-064b369c011f (payload {"phone","business","slug","vertical"}). SENDER LEG STILL MISSING โ€” see live-fire-test item.
STATUSDONE
Live-fire test: scan proof QR > expect Telegram now, GHL after wiring๐Ÿ‘ค drew
โš‘ Note: DONE โ€” NEGATIVE RESULT, ROOT CAUSE FOUND 2026-07-12: Drew scanned Tri-State Tree Service postcard QR (sis-hermes.pages.dev/tri-state-tree-service/) โ€” no Telegram, no GHL. Root cause CONFIRMED: the QR-open webhook call NEVER EXISTED on deployed pages โ€” cortexOS's telegram code is build-time only; live HTML has zero tracking JS. Fix path: rebuild all 273 sites with a first-open beacon injected (see new P0 rebuild todo). Spec: 02_SALES/WEBHOOK_SPEC_QR_OPEN_2026-07-12.md.
STATUSDONE
Backfill Hermes Preview URL on 273 contacts from hermes-url-index.csv๐Ÿค– agent
โš‘ Note: CSV lives in cortextos repo - not mounted here.
STATUSOPEN
Verify SIS location A2P status in Trust Center๐Ÿ‘ค drew
โš‘ Note: CONFIRMED 2026-07-12: Brand APPROVED + Campaign APPROVED. One number: +1 720-730-8806 ('Andrew's number'), A2P verified. SMS can send TODAY - but from Drew's personal-labeled number. Decide: dedicated Hermes number?
STATUSDONE
Build SIS Hermes SALES sub-account (the lead funnel)๐Ÿค– agent
โš‘ Note: SHIPPED 2026-07-12: 'Hermes Sales' pipeline (Mailed>Opened>Contacted>Booked>Showed>Won/Lost) in SIS location (SKim0aEZQWmN8cZbD2rY, display name 'SIS - Demo Template' - confirm naming). 273 leads imported (100 hvac/74 roofing/99 arborist), tagged, opportunities at Mailed. 2 DRAFT workflows: QR-opened notify+stage, no-book rescue drip (SMS steps A2P-gated). Preview URL field empty pending cortexOS url-index.
STATUSDONE
SIS's OWN A2P (Standard brand) - unblocks automated SMS lead-rescue๐Ÿ‘ค drew
โš‘ Note: Prereqs per 2026-07-10 ruling: SIS domain email + live SIS-branded site. Until approved, lead-rescue = email + Telegram + manual calls only.
STATUSOPEN
Connor GHL user seat + re-point WF-03/WF-06 + tag owner-phone๐Ÿ‘ค drew
โš‘ Note: FAS fill-out item. Blocks 4-2/4-4 in the FAS journey.
STATUSOPEN
Record/set voicemail greeting on FAS tracking line๐Ÿ‘ค drew
โš‘ Note: FAS fill-out item. (850) 266-7764 โ€” Connor records, or Drew reads script.
STATUSOPEN
CP-575 photo (IRS EIN assignment letter)๐Ÿ”ง client
โš‘ Note: FAS fill-out item. Single blocker on A2P submission for Fortified Asset Solutions.
STATUSOPEN
Business hours + service areas confirmation๐Ÿ”ง client
โš‘ Note: FAS fill-out item. Conflicting docs between legal/LEGAL_FILINGS.md and WEB_PRESENCE_RUNBOOK.md โ€” needs Connor to reconcile.
STATUSOPEN
Site approval / client sign-off๐Ÿ”ง client
โš‘ Note: FAS fill-out item. Live site (fortified-assets.com) not yet formally sent to Connor for sign-off.
STATUSOPEN
GBP video verification follow-through๐Ÿ‘ค drew
โš‘ Note: FAS fill-out item. Connor filmed video verification; awaiting Google review.
STATUSOPEN
Cloudflare contact@ destination verify๐Ÿ‘ค drew
โš‘ Note: FAS fill-out item. contact@fortified-assets.com MX/routing is in; Drew needs to add + verify the destination address in the Cloudflare dashboard.
STATUSOPEN
FAS spot-check survey + pipeline๐Ÿค– agent
โš‘ Note: FAS fill-out item.
STATUSOPEN
Webhook live-fire test โ€” scan QR / submit preview form with a TEST lead, verify it lands๐Ÿ‘ค drew
โš‘ Note: Proven 2026-07-13 โ€” TEST lead QR scan / preview-form submit landed correctly end to end.
STATUSDONE
GCP billing set up for satellite quoting๐Ÿ‘ค drew
โš‘ Note: Needed to unblock the satellite-imagery quoting path; account/billing setup only, no build work pending on this.
STATUSOPEN
Batch-2 mailing chain (hermes-postcard-send skill)๐Ÿค– agent
โš‘ Note: ~65 leads missing mailing addresses need resolving before send; also needs GHL import of the 300-contact batch-2 list. Run via hermes-postcard-send skill.
STATUSOPEN
CP-575 photo (IRS EIN assignment letter โ€” the single blocker on A2P submission)๐Ÿ”ง client
โš‘ Note: Owed by client โ€” Fortified Asset Solutions
STATUSOPEN
Business hours confirmation (conflicting docs โ€” see intake item 'Working hours')๐Ÿ”ง client
โš‘ Note: Owed by client โ€” Fortified Asset Solutions
STATUSOPEN
Service-area towns confirmation (conflicting docs โ€” see intake item 'Service area')๐Ÿ”ง client
โš‘ Note: Owed by client โ€” Fortified Asset Solutions
STATUSOPEN
Site approval / sign-off on the live fortified-assets.com site๐Ÿ”ง client
โš‘ Note: Owed by client โ€” Fortified Asset Solutions
STATUSOPEN
Create Connor's GHL user seat + re-point WF-03/WF-06 task-assign actions to him + tag his cell contact record 'owner-phone'๐Ÿ‘ค drew
โš‘ Note: Owed by Drew โ€” Fortified Asset Solutions
STATUSOPEN
Record/set the voicemail greeting on (850) 266-7764๐Ÿ‘ค drew
โš‘ Note: Owed by Drew โ€” Fortified Asset Solutions
STATUSOPEN
Verify the contact@fortified-assets.com destination address in the Cloudflare Email Routing dashboard๐Ÿ‘ค drew
โš‘ Note: Owed by Drew โ€” Fortified Asset Solutions
STATUSOPEN
Follow GBP verification through to completion (Connor's video verification is in progress, awaiting Google review)๐Ÿ‘ค drew
โš‘ Note: Owed by Drew โ€” Fortified Asset Solutions
STATUSOPEN
Collect final payment โ€” $250 balance + first month's $497 (this is also what unlocks A2P submission per Drew's ruling)๐Ÿ‘ค drew
โš‘ Note: Owed by Drew โ€” Fortified Asset Solutions
STATUSOPEN
P2
P2 โ€” Backlog
0/20 done
Cleanup leftovers: 2 calendars + ~15 tags (GHL delete didn't persist - platform bug), Missed Call VM x2 (in SYS folder, Drew-approved but sub deferred)๐Ÿค– agent
โš‘ Note: Retry in fresh session or Drew deletes manually (~5 min).
STATUSOPEN
SIS-demo custom values (28): dependency-check SYS/RingRescue workflows for {{custom_values.sis_*}} BEFORE deleting๐Ÿค– agent
โš‘ Note: Sub flagged: values read like a live voice/SMS AI script the kept SYS engines may consume. Deleting blind could break Ring Rescue. Held.
STATUSOPEN
Decide: dedicated Hermes phone number vs Drew's 720 number for rescue SMS๐Ÿ‘ค drew
โš‘ Note: Only number in SIS - Main is Drew's own. ~$3/mo for a dedicated one; must attach to approved campaign.
STATUSOPEN
Delete TEST HERMES-FUNNEL contact after QR live-fire test๐Ÿค– agent
โš‘ Note: Contact S0R4rG3xLxbJjOL44m8V, tagged test-contact, opp in Opened.
STATUSOPEN
Booking calendar in SIS location for funnel calls๐Ÿ‘ค drew
โš‘ Note: Needed before Booked stage means anything automated.
STATUSOPEN
Clean 5 corrupted arborist contacts (city/state fields)๐Ÿค– agent
โš‘ Note: Names in 02_SALES/GHL_LEAD_IMPORT_2026-07-12.md manifest. UPDATE 2026-07-26: source data fix confirmed + affected sites rebuilt in this sprint; GHL contact push is the only remaining open piece (see 'Update 5 fixed leads' city/state in GHL contacts').
STATUSOPEN
Monthly report dry run๐Ÿค– agent
STATUSOPEN
Onboarding call script๐Ÿค– agent
STATUSOPEN
Client quick-card๐Ÿค– agent
STATUSOPEN
Review-seeding doc๐Ÿค– agent
STATUSOPEN
Offboarding SOP๐Ÿค– agent
STATUSOPEN
SPF/DKIM doc๐Ÿค– agent
STATUSOPEN
Hermes Demo sub-account๐Ÿค– agent
STATUSOPEN
GHL ops pipeline mirror (fulfillment stages)๐Ÿ‘ค drew
โš‘ Note: Chrome sub-agents CAN build pipelines/workflows (proved on the Hermes template account) - no manual UI work needed. Do after sales account ships.
STATUSOPEN
Stripe TEST to PROD confirm๐Ÿ‘ค drew
โš‘ Note: Verify the live final Stripe link means this is already done.
STATUSOPEN
Delete 3 GHL test contacts๐Ÿค– agent
โš‘ Note: TEST HERMES-FUNNEL (+15005550006), Test Business (+15551234567), Verify Test Roofing (+17205551234) โ€” leftover from workflow/pipeline testing 2026-07-12.
STATUSOPEN
Update 5 fixed leads' city/state in GHL contacts๐Ÿค– agent
โš‘ Note: 5 corrupted arborist leads were fixed in 00_ENGINE/lead-data/arbor_enriched.json 2026-07-12 (Tri-State=Grand Bay AL, Freedom Wood=Irvington, Allstate Tree & Trim=Theodore, Ascent=Loxley, Top Notch=Saraland; log: lead-data/CORRUPTION_FIX_LOG_2026-07-12.md) but their 5 GHL contacts still show corrupted city/state โ€” push the corrected values into GHL. Related to (but distinct from) the existing 'Clean 5 corrupted arborist contacts' todo below. UPDATE 2026-07-26: sites rebuilt this sprint confirm the source fix held; GHL contact push into the 5 live contacts is still open โ€” this is the actionable remainder.
STATUSOPEN
Keep-warm 164 re-angle๐Ÿค– agent
โš‘ Note: The 164 keep-warm cohort needs a fresh angle/messaging pass โ€” current sequence has gone stale.
STATUSOPEN
Widget webhook fire-and-forget blind spot๐Ÿค– agent
โš‘ Note: Widget webhook fires without a delivery confirmation/retry path โ€” failed deliveries currently go unnoticed. Needs a monitoring or retry mechanism.
STATUSOPEN
Theaters vertical flavor + LLM copy pass๐Ÿค– agent
โš‘ Note: New theaters vertical needs its own copy flavor/positioning and an LLM-assisted copy pass before it's mailing-ready.
STATUSOPEN

How to read this

Owners: ๐Ÿ‘ค drew · ๐Ÿค– agent · ๐Ÿ”ง client. Done items are struck through. Grouped P0 (critical) → P1 (high) → P2 (backlog). Client owed-by items are folded in at P1 by default.
Hermes Ops Hub · generated by 07_OPS/generate_map.py from 07_OPS/clients.json