Portfolio/CrossCourtMonday, June 29 at 8:12 AM EST
⌘KNotifications
Cy
C
Paid media· started 2026-04-16· $2.0k/mo

CrossCourtPAYING

Charles Seltzer <charles@cross-court.com> · Last touched 1mo ago
Open analysis ↗
North starImplement the analysis recommendations + lift purchase conversion from 0.06% toward industry standard 1-3%.

Timeline

15 events · newest first
Jun 2026
Jun 28EVENT
Adult ManyChat welcome flow prepared for Charles

Created Gmail draft r-8315721057481612573 to Charles Seltzer with the adult IG ManyChat welcome flow: opening message, content/play/member/question branches, qualifiers, FAQ/objection handling, $20 intro CTA, membership bridge, tags/fields, and human handoff rules. Placeholder links remain for [BOOKING_LINK] and [MEMBERSHIP_LINK].

Jun 10ANALYSIS
AC-as-SMS-layer feasibility verdict for the AI SDR

YES with conditions: inbound sms_reply webhook + reply-trigger exist in the product but are NOT active on crosscourt's account (empirically verified — test webhook stripped the event; SMS add-on lapsed since Aug 2023, Helios took over). Outbound has NO 1:1 send API — requires the custom-field + relay-automation workaround (160-char truncation, UI-built automation). Full analysis: analyses/2026-06-10-ac-sms-sdr-feasibility.md. Alternatives: Salesmsg/ClickSend or original Helios plan (queue CALL-20260604-01).

Jun 10MILESTONE
Fail2ban ops-IP whitelist applied + AC-SMS SDR scoping vs Ben's agent

SSH to the box was timing out repeatedly (TCP accepted, banner never came; 14 total sshd bans on record). Applied the fleet-standard /etc/fail2ban/jail.local ignoreip (5.161.58.141) + unban + restart — box was provisioned 2026-04-29, before the 2026-05-21 template fix. Surveyed the box for the planned AC-SMS SDR build: Hermes gateway running (PM2 crosscourt-hermes-gateway, Slack platform only — NO webhook platform, NO webhook_subscriptions, NO nginx sites, no ~/services). Existing skill = productivity/crosscourt-revenue-ops (analysis/read-only stance, AC+Metabase+Stripe+Meta patterns). Comparison vs Ben Daugherty's ghl-sdr-basketball agent + duplication plan delivered to Ricki/Joshua in session.

Jun 4CALL
Maven daily agent setup and $20 intro funnel optimization

$20 intro funnel is the bottleneck — May dropped to 13 sessions vs ~30/mo target

May 2026
May 20MILESTONE
Meta system-user token verified + confirmed saved on server

Ricki provided a Meta Graph API token to control Charles's ad account. Verified live against Graph API: valid, type: SYSTEM_USER, app "Crosscourt MCP" (app_id 1669293167606845), system user cynthia / 122101755243320911, scopes ads_management + public_profile. Issued 2026-05-20 15:19 UTC, expires 2026-07-19 (60-day token, not permanent). Confirmed already saved on the box at /home/cynthia/credentials/facebook.env as FACEBOOK_ACCESS_TOKEN (SHA-256 matched the provided token — no value exposure). Closes the 2026-05-07 "Facebook OAuth not yet captured" gap. Open gaps: (1) the system user has zero ad accounts assignedme/adaccounts + me/assigned_ad_accounts both empty, so the token can't touch any campaign yet; the Crosscourt ad account must be assigned to this system user in Business Settings (ads_management task). (2) Hermes's crosscourt-revenue-ops skill still reaches Meta via Pipedream Connect (external_user_id=charles_crosscourt), not the direct token — needs a skill pointer to facebook.env before the agent will actually use it.

May 7MILESTONE
Stripe + AC credentials replicated to cynthia-crosscourt server

Copied stripe.env and activecampaign.env to ~/credentials/ on cynthia-crosscourt (5.161.181.167), chmod 600, md5-verified vs local. Facebook OAuth not yet captured anywhere — pending source/format from Ricki. Cred dir on server is chmod 700, only the cynthia user.

May 7MILESTONE
Stripe + ActiveCampaign pullers wired up

Lean pullers at ~/scripts/crosscourt-pullers/ write to data/stripe/ and data/activecampaign/. First snapshot (2026-05-07): MRR $51,608 across 233 active subs, $41,142 / 314 charges / 212 unique buyers in the last 30d, 15,820 AC contacts, 10/44 active automations. Skips full customer history by default — set CC_FULL=1 if needed. No cron yet; run manually with pull-all.sh. Summary lives at data/summary.md, time-series snapshots at data/snapshots/.

May 5MILESTONE
Crosscourt ActiveCampaign credentials saved

Stored at credentials/activecampaign.env. URL https://crosscourt.api-us1.com, REST API key, plus remote MCP endpoint https://crosscourt.activehosted.com/api/agents/mcp/http. Auth header for REST is Api-Token: {key}.

May 5MILESTONE
Crosscourt Stripe API key saved

Stored at credentials/stripe.env (chmod 600, gitignored). Restricted live key (rk_live_), not a full secret key — scoped permissions per Stripe restricted-key model. First in a planned set of API connections; Metabase next pending URL + auth method from Charles.

May 1MILESTONE
Upgraded to $2K/mo recurring

Confirmed by Ricki: original engagement was $500 one-time (2026-04-16), now upgraded to $2K/mo recurring. Updated state.yaml mrr: 1000 → 2000, README status line, and clients/README.md index entry.

Apr 2026
Apr 28MILESTONE
Analysis source archived

Created analyses/crosscourt-2026-04-source.md capturing the published page's cover line, headline stats, section h2s, and components used. Reference example for the design system per analysis-pipeline.md memory.

Apr 28MILESTONE
Folder created in clients/ structure

No prior vault folder existed. Backfill is incomplete — README has TBD fields that need to be confirmed. Source artifacts: analysis page (~/analysis/crosscourt.html) and the 2026-04-14 commit referencing the $1K/mo proposal.

Apr 14DECISION
Proposal updated to $1K/mo + 50% off first month

Per commit 16c302b: "Add success page, fix Stripe payment flows, update CrossCourt proposal with $1K/mo + 50% off first month". Confirms a proposal exists at $1K/mo with 50% off month-1.

Apr 1ANALYSIS
CrossCourt analysis published

Page live at https://analysis.cynthiaconcierge.com/crosscourt. HTML source at ~/analysis/crosscourt.html. (Need to read the HTML to extract what was analyzed.)

Apr 30APPROVED
Approved [CC-WK17-01] — [CC-WK17-01] Implementation status with Charles