Publish the Flight School Elite calendar landing page at go.topreptraining.com/fsecalender.
Scope: Point the page/funnel at the go.topreptraining.com/fsecalender path (create the redirect/domain mapping as needed). Page includes the embedded FSE Google Calendar and the LeadConnector chat widget (widget id 668553431123b183b69aa4e0). Member-facing page — no pricing or sales CTAs. Confirm on desktop and mobile: calendar loads, "Add to Google Calendar" works, chat widget loads (bottom left).
Parent: https://app.clickup.com/t/86e33z4x3
Due 2026-09-04
Build the "FSE Active Members" Smart List from Mich's CSV
Objective: Turn Mich's 231-person "Active Flight School Elite Users" CSV into a canonical, tag-keyed GHL smart list in the Top Rep location (dTYhTEq6MOhUBvzfpCyp) that the FSE 2.0 Live Events workflows (task 86e31tabe) can enroll from.
Context / what the CSV actually is
- 231 records, email-only (0 phones), grouped across ~30 roofing/exterior companies (DMW, Signature Home Services, Nelson Exteriors, Arnold Roofing, Indy Roof & Restoration, etc.).
- Columns:
Phone, Email, First Name, Last Name, Business Name, Source, Additional Emails, Additional Phones, Notes, Tags. Only Email / First / Last / Business are populated. - The
Tags cell is identical on every row — a 7-item legend, NOT per-contact data: [event] office-hours, [event] advanced-selling, [event] wed-leadership, [event] sales-accelerator, [invite] bourbon-business, [event] popup-{city} (garbled � = en-dash/bullet mojibake), [event] popup-nonmember. - There is no tier/membership tag (
[customer] fse *, [member], etc.) in the file, so nothing existing in GHL keys this exact set of 231 people. A dedicated membership tag must be applied to create a stable smart-list key.
The Plan
- Discovery (read-only) first. In location
dTYhTEq6MOhUBvzfpCyp: list_tags to confirm whether [member] fse-active already exists; and inspect the existing "Elite Members" smart list (T5yHRU4jPVaj6c7C…, referenced in the 86e31tabe as-built) to see how it is filtered. Do not duplicate a list that already does this — reconcile (see Risks). - Build a clean import CSV from Mich's file: keep only
Email, First Name, Last Name, Business Name. Drop the Tags column entirely so the � mojibake and the 7 event tags never get written to contacts. Save as C:\Paul AI\_builds\fse-active-import.csv. - Import + tag in one pass via GHL Contacts → Import (playwright-toprep UI): upload the clean CSV, map the 4 fields, set "Update existing contacts" (dedup by email), and apply tag
[member] fse-active on import. This upserts by email so pre-existing FSE contacts are matched, not duplicated. (Fallback if the import UI misbehaves: MCP upsert_contact per row with tags:["[member] fse-active"], 231 calls, then verify.) - Create the smart list "FSE Active Members" (Contacts → filter → Save as Smart List, playwright-toprep): filter Tag is
[member] fse-active AND NOT any of the 4 cancelled tags ([canceled] fse, [cancelled] flight school - elite, [fs] elite - cancelled, [churned] fse) — the exclude is belt-and-suspenders for future churn (Mich's list is already active-only). Capture the smart-list ID. - Verify counts with MCP
search_contacts_v2 (tag = [member] fse-active): report exact matched-existing / newly-created / total-tagged breakdown; the smart list should return that same count (~231, minus any GHL email dedups). - Hand back to 86e31tabe: record the smart-list ID + membership tag so Launch (
1fe19358) and Weekly (39d0b60f) triggers can be wired off it once Mich/Jet confirm the enrollment mapping. Do not publish those workflows or apply any [event] tag in this task.
Build Primitives
- Tags:
[member] fse-active — NEW, neutral membership marker applied to all 231. It is not a trigger on any workflow, so applying it fires nothing. Do NOT apply the 7 [event]/[invite] legend tags in this task (those ARE workflow triggers and their audiences are gated/unconfirmed — see Risks). - Smart list: "FSE Active Members" =
Tag is [member] fse-active AND NOT the 4 cancelled tags.
Definition of Done
- Clean import CSV (Email/First/Last/Business only, no Tags column) generated from Mich's 231 rows.
- All 231 contacts exist in GHL (matched-or-created, email-deduped) and carry
[member] fse-active; matched/created/tagged breakdown reported with real numbers. - Smart list "FSE Active Members" exists in
dTYhTEq6MOhUBvzfpCyp, filtered [member] fse-active AND NOT the 4 cancelled tags; its member count equals the tagged-contact count; smart-list ID captured. - Verified via MCP
search_contacts_v2 (not just the UI count). - Zero
[event]/[invite] legend tags applied to any contact by this task; no FSE 2.0 workflow published or triggered.
Risks & decisions
- Canonical-list reconciliation (Paul/Jet decision): an "Elite Members" smart list (
T5yHRU4jPVaj6c7C…) already exists for 86e31tabe. If it is keyed on [customer] fse * tier tags it may not equal Mich's authoritative 231. Recommend the new [member] fse-active-keyed list becomes the canonical FSE-2.0 enrollment source (it exactly mirrors Mich's set); confirm before retiring/overriding the old one. - SmartEnroll vs GHL (note): Jet's Sep 3 model said smart lists were "Mich's to build in SmartEnroll, do not duplicate in GHL." Mich now handing a CSV to build the GHL smart list supersedes that for THIS list. Proceeding on the explicit ask.
- Email-only, no phones: all 231 lack phone numbers, so the SMS steps in the FSE 2.0 workflows will silently skip these contacts. Only the email steps will reach them. Flag to Jet/Mich; phones needed later if SMS reminders are required.
- Do NOT blanket-apply the 7 legend tags: per Jet's confirmed model only Office Hours + Advanced Selling are all-member open-join; Wednesday Leadership is leaders/owners-only + Mich approval, Sales Accelerator audience is still unconfirmed (holding on Jet), Bourbon & Business is invite-only, Pop-up is city/event-specific for non-members. Event enrollment is a separate, gated step, not part of this smart-list build.
- Tag name
[member] fse-active is a sensible default; confirm with Mich (proceeding unless corrected).
Not built yet.