feat: Tier B operator scaffolding — bundle, copy SoT, posts, emails

Pick up and finish yesterday's cut-off Tier B pass.

- build/: PyInstaller scaffold (datatools.spec + launcher.py +
  hook-streamlit.py + README) — folder-mode bundle, locked
  127.0.0.1, per-OS recipe
- marketing/COPY.md: single source of truth for every customer-facing
  string — landing H1/sub/CTAs, demo CTAs, email subjects, Gumroad
  listing, banned phrases
- marketing/community-posts/: 9 drafts (3 posts × 3 niches:
  bookkeeper, revops, shopify-pet) — story / tip / soft-offer
- marketing/emails/: 18 drafts (Gumroad delivery + 5-touch
  onboarding × 3 niches), per-niche segmentation guidance
- docs/NEXT-STEPS.md: flip 2.2 / 2.4 / 3.1 / 3.4 to done with
  pointers to the new assets; add Phase 0 inventory rows
- .gitignore: narrow `build/` ignore so PyInstaller spec + launcher
  + hooks get tracked, only generated artifacts (build/build/,
  build/__pycache__/, build/dist/) stay ignored

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-02 14:04:37 +00:00
parent 966af8ef94
commit e1f364f010
36 changed files with 1741 additions and 15 deletions

View File

@@ -0,0 +1,60 @@
# Email sequences
Per niche (`bookkeeper/`, `revops/`, `shopify-pet/`):
- **`00-delivery.md`** — Day 0 Gumroad delivery email. Triggered when
Gumroad confirms the purchase. Job #1: get the buyer to download
and open the app inside the first 24h. Buyers who don't open within
72h refund at ~3× the rate of buyers who do.
- **`01-day1.md`** — Day 1 nudge with a sample file matched to the
niche. The Day-1 email is the highest-leverage one in the
sequence; it converts "I bought it" into "I used it".
- **`02-day3.md`** — Day 3 deep-dive on one specific feature the
niche cares about most.
- **`03-day7.md`** — Day 7 workflow framing. "Use it every {month /
campaign / sync}, not as a one-off."
- **`04-day14.md`** — Day 14 power-user tip. Surfaces a non-obvious
feature; converts "I use it" into "I rely on it".
- **`05-day30.md`** — Day 30 referral / review ask.
## Sender setup
- **From:** `support@datatools.app` (single-sender to keep replies in
one inbox; don't fan out to per-niche aliases until volume warrants)
- **Reply-To:** same — every email expects a reply pathway
- **List provider:** Gumroad's built-in for delivery; Buttondown or
ConvertKit for the 5-touch sequence (Gumroad's drip is too crude
for niche segmentation)
- **Segmentation:** customers self-tag at checkout (Gumroad custom
field "What do you do?"). Map: `bookkeeper`, `revops`,
`shopify-pet`, `other`. `other` gets a generic sequence (not
drafted yet — Tier C).
## Variables
All emails use these placeholders. Set them at sequence-import time,
not per-email:
- `{{first_name}}` — Gumroad provides; fall back to "there" if blank
- `{{download_url}}` — niche-specific download URL from Gumroad
- `{{sample_file_url}}` — niche-specific sample CSV (`samples/demo/...`)
- `{{landing_page}}` — niche-specific landing page URL
- `{{support_email}}``support@datatools.app`
## Cadence and quiet rules
- Don't send between 10pm-7am buyer-local-time (Buttondown supports
TZ-aware send; ConvertKit doesn't out of the box)
- If the buyer replies to *any* email in the sequence, pause the
remaining touches until you've replied to them. A drip that
ignores a customer reply reads as worse than no drip.
- If the buyer requests a refund, kill the sequence immediately.
- Day 14 + Day 30 emails are skippable if the buyer has already
emailed support with a feature request or bug report — they're
engaged enough; don't pile on.
## Subject lines
Subjects are owned by `marketing/COPY.md` § 4. Don't edit subjects
in-line in the email files; edit COPY.md and re-propagate. Same
discipline applies to the closing CTA — owned by COPY.md § 0.