Home / Ops / More in this area
Updated Jul 18, 2026 · Affirmology_LostChat_Recovery_BetaInvitesCRM_v1.md
Recovered 2026-07-18 from the transcript of a Cowork chat that vanished after a desktop-app update. Source chat: 3143a017 (dated 7/16, ~1954 messages). Paste this whole block into a NEW chat to bring it fully up to speed. It is self-contained.
This was the AFFIRMOLOGY DATA/Cowork chat that ran the beta launch operations layer: CRM hygiene (email opt-outs), the customer-facing beta funnel copy and dates, the shareable video/demo links, and how The Mirror reading is delivered. It began with a simple request ("Kara asked to be taken off the email list") and grew into three connected workstreams:
The chat ended mid-question. Jeff typed "why do we have an investor email? not computing for me. hold all this, restarting" - that is where it was lost.
Everything below A/B/C was completed and deployed unless flagged. The chat was paused on THREE open decisions (section 4) plus Jeff's confusion about an "investor email."
Live and deployed (verified):
- Kara is fully opted out in all channels (engine file + hold lists + CRM docs + Airtable).
- Video 2 "Mission Fixed" cut is replaced on R2 and serving live (same links).
- OG preview cards are live on the demo + both film links (marble / heart-coherence / cosmic figure).
- The beta funnel dead-end is GATED: founding.html is now a holding page, no TestFlight.
- The whole beta customer flow now says the founding circle opens August 8 (Lion's Gate).
- Affirmology_MirrorDrip_Spec_v1.md was written (spec only, not built).
The very last thing Jeff said: "why do we have an investor email? not computing for me. hold all this, restarting." He was reacting to the FoundingEmail_Preview_emerald.html "Founding Timeline" investor email (see section 4, item 2). He wanted to pause and understand it before continuing. NOTHING was broken; a slow background grep had just finished and confirmed that investor email is NOT wired to any auto-send.
.mirror_hold list is a campaign hold, not a durable opt-out (it lifts and people come back).emailer.send_email() in the studio engine, so it covers render, welcome, Mirror, and demo emails at once without editing each template:affirmology-studio/api/suppression.py: committed opt-out file + runtime disk JSON, HMAC-signed unsubscribe tokens, on-brand footer.api/emailer.py: send_email() drops any opted-out recipient (to AND bcc) and auto-appends a working Unsubscribe footer to single-recipient customer emails. Owners (Jeff/Sol/NOTIFY_EMAILS) are excluded so a test render cannot unsubscribe Jeff from his own notifications.api/main.py: public GET /api/unsubscribe (no bearer needed) verifies the token, records the opt-out, shows a branded confirmation page.affirmology-studio/email_unsubscribed.txt (Kara's address is in it).email_unsubscribed.txt; (2) .beta_invite_hold new UNSUBSCRIBED section + her .mirror_hold line marked "PERMANENT - do not lift"; (3) CRM docs annotated (PermanentLinks Registry, BetaInvited Log, AgreementLinks, TextableLinks); (4) Airtable._CHAT_SYNC.md (2026-07-16 DATA block). One open deploy-time choice: put the unsubscribe link on branded demo.affirmology.ai/api/unsubscribe (needs one small worker route) vs the plain onrender URL (env-only). Recommendation was the branded domain.Video 2 Mission Fixed.mp4 re-encoded (libx264 slow, CRF18, 6.5Mbps cap, High/yuv420p, AAC 192k, faststart), uploaded to R2 bucket affirmology-media, replacing the SAME keys experience/mission-video.mp4 and experience/video-2-mission.mp4, HLS ladder rebuilt (1080/720/480). Old cut archived to experience/mission-video-best.mp4 for rollback. Same links, no site change.media.affirmology.ai/og/, versioned filenames (ended on v4). A ~30-line Worker scoped ONLY to /watch rewrites og:image/og:title per ?v= slug (the two films share one watch.html), wrapped in try/catch so it can never break the site.demo.affirmology.ai): marble figure + gold pill "Hear your Origin Soul Song".watch.affirmology.ai/watch?v=video-1-mission): heart-coherence image (headphones, brain+heart rings, affirmations flowing in), clean no pill, "Where it begins".watch.affirmology.ai/watch?v=video-2-mission): cosmic constellation-human in deep space, clean, "See where this is going".watch.affirmology.ai added as an additive Cloudflare custom domain pointing at the same worker, to drop the "demo." prefix from film links (reads as unfinished to a prospect). Old demo.affirmology.ai/watch?... links still work and show the new cards; both domains update together, nothing separate to maintain./result.html card was deliberately NOT done (it is a redirect stub on a different worker); left as a nice-to-have.founding.html which walked her through TestFlight install (join code nDJacr85 + a 6-digit code) and dead-ended. The auto-confirmation email compounded it by promising "this Friday install the app."founding.html replaced with a holding page ("You're in / home base almost ready / we'll email the launch date"), full app page backed up as founding_full.html to restore at launch. Agreement page copy softened (no "install the app now"). Beta signup still captures founding members; they just land on the holding page.result.html (gold "Opens August 8 - Lion's Gate" pill on the Join our Founding Constellation section), affirmologist.html, in.html, and the studio auto-confirmation email beta_confirmation_email.html.Affirmology_BetaExpectationsEmail_v1.html (was "July 10" -> Aug 8), Beta Invite v2 (was "week of July 7" -> Aug 8), Beta Confirmation v2 (REMOVED the TestFlight steps entirely -> Aug 8 message), Day1 (dropped a stray "this week").api/beta_confirmation_email.html and pushed (Render auto-deploy), deliberately leaving other in-progress studio work (PDF report changes, etc.) untouched.batch_mirror) and is on hold during its rebuild. Jeff wants it to auto-drip a few days after the Origin Soul Song. That is a build item -> spec written (see below).The chat was paused waiting on THREE decisions from Jeff, plus his investor-email question:
Affirmology_MirrorDrip_Spec_v1.md proposes ~3 days after the Origin Soul Song. Jeff to confirm 3 days (default) vs 2 or 4. v1 = Mirror only, but the queue is built to later drip more surprises on their own timers (ties to Jeff's "let them be surprises" idea). Honors holds/opt-outs, kill switch OFF until the Mirror rebuild ships. CODE builds it.FoundingEmail_Preview_emerald.html): this is the thing Jeff was confused about at cutoff. It is a standalone "Founding Timeline" email DRAFT with milestones + a line of astrology under each date + raise context. It is NOT scheduled and nothing auto-sends it; it only goes out if manually sent. It is just outdated (old Aug 11-13 dates, astrology-as-rationale framing). It overlaps the Mission & Opportunity investor-doc work owned by ANOTHER chat (which owns securities rules + "no astrology as investment rationale"). DECISION NEEDED: fix its dates + strip astrology here, OR route it to the investor-doc chat (recommended, for consistency). Jeff's literal last words: "why do we have an investor email? not computing for me. hold all this, restarting."Other flagged-but-untouched items:
- FoundingEmail_Preview_emerald.html still carries Aug 11-13 + astrology framing (same as item 2).
- Older duplicate v1 templates (confirmations/invites) look superseded by v2s; worth retiring so nobody grabs a stale one.
- Deploy the engine unsubscribe/suppression code (built + verified, handed to CODE, not yet pushed at cutoff) and pick the branded vs onrender unsubscribe URL.
- Consider adding the OG card to result.html.
Affirmology docs (this project root):
- Affirmology_PROJECT_STATE.md - source of truth, read first.
- Affirmology_MirrorDrip_Spec_v1.md - the Mirror auto-drip spec (written this chat).
- Affirmology_BetaExpectationsEmail_v1.html - beta expectations email (re-dated to Aug 8).
- _CHAT_SYNC.md - the 2026-07-16 DATA block carries the opt-out/suppression handoff to CODE.
Site (repo affirmology-site, static Cloudflare Workers assets, auto-deploys to demo.affirmology.ai):
- founding.html (now holding page), founding_full.html (backup for launch), agreement page, result.html, affirmologist.html, in.html, index.html, watch.html.
- New ~30-line Worker in front of the static site, scoped to /watch, rewrites OG tags per ?v= slug.
Studio engine (repo affirmology-studio, Render service affirmology-studio-api, pushing = production deploy):
- api/suppression.py (new - opt-out list, HMAC tokens, footer).
- api/emailer.py (send_email() = the single choke point; now drops opt-outs + appends footer).
- api/main.py (public GET /api/unsubscribe).
- api/beta_confirmation_email.html (re-dated to Aug 8, TestFlight promise removed - DEPLOYED).
- email_unsubscribed.txt (durable opt-out list; Kara is in it).
- Hold files: .mirror_hold, .beta_invite_hold.
- Mirror send = manual batch_mirror, currently on hold.
Airtable: base "Affirmology Launch CRM", table "People". New field "Email opt-out" (red checkbox). Kara Baruzzini record = recdwMRqbunEkxfJi (checked true). Kara email: kara.baruzzini@gmail.com.
R2: bucket affirmology-media. Video 2 keys experience/mission-video.mp4 + experience/video-2-mission.mp4 (+ experience/hls/video-2-mission/), old cut archived at experience/mission-video-best.mp4. OG images at media.affirmology.ai/og/ (versioned to v4).
Live links to send (verified):
- Demo: https://demo.affirmology.ai
- Video 1: https://watch.affirmology.ai/watch?v=video-1-mission
- Video 2 / Mission: https://watch.affirmology.ai/watch?v=video-2-mission
- (Old https://demo.affirmology.ai/watch?v=... links still work and now show the new cards.)
People referenced: Kara Baruzzini (opted out), Isis/Isys Alizé (alize.photo@gmail.com - hit the dead-end, emailed + logged), Elmira Shahzeidi (shah_ellie@yahoo.com - not emailed), Amy Grewe (amygrewe8@gmail.com, Lincoln NE, took demo 7/9, report generated). Studio contact number in emails: +1 (205) 331-3007.
Secrets (exist, values NOT printed here): studio bearer STUDIO_AUTH_TOKEN / CLOUD_STUDIO_AUTH_TOKEN, Resend API key, HMAC secret for unsubscribe tokens, Cloudflare API token. Pull from affirmology-studio/.env, ~/.zshrc, or the app .env.local; do not ask Jeff to re-supply them.
Agents bridge: Studio API https://affirmology-studio-api.onrender.com (Bearer token). Any astrology/reading question routes to Hermes, never answered from the chat's own head.