← back to AbramsEgo

memos/070126A-abramsego-sellit-golive.md

53 lines

# GATED — Take "Sell AbramsEgo" from local preview to a real, paid product

> **NOTE:** This memo was meant for `~/.claude/yolo-queue/pending-approval/070126A-abramsego-sellit-golive.md`,
> but the harness blocks autonomous writes to that sensitive path. It lives here in-repo instead.
> Steve: copy it into the approval queue, or just act on it here.

**Created:** 2026-07-01 · **Owner:** vp-special-projects (product-builder side) · **Repo:** `~/Projects/AbramsEgo/`

## Where it stands (DONE — local, non-gated, committed)
The sell-it surface is built and running behind Basic Auth on pm2 `abramsego` (:9773):
- `public/landing.html` — polished dark-theme marketing page: hero ("the dashboard that pays for itself"), the self-funding P&L angle, 6-feature grid, **3-tier pricing ($0 self-host / $19/mo hosted / $49/mo Pro)**, and a waitlist capture. The proof-strip pulls REAL numbers from `/api/data` (fleet count, 30d cost, self-funding %, canary count) so it isn't mocked.
- `GET /landing` route (still auth-gated) + `POST /api/waitlist` → appends to `data/waitlist.jsonl` (gitignored — it's PII).
- **No Stripe, no public exposure, no charge, no domain.** Nothing customer-facing yet.

Verified: `/landing` returns 200 with auth / 401 without; waitlist POST validates email, appends a row, rejects bad input.

## GATED — the steps to actually sell (each needs Steve: APPROVE / REVISE / BLOCK)

### 1. Stripe product + prices
Create in Stripe: one **Product "AbramsEgo Hosted"** with two recurring prices — **$19/mo** and **$49/mo (Pro)** — and treat **$0 Self-host** as a no-charge tier (template download / repo access, no Stripe object). Capture the price IDs into the secrets registry (`STRIPE_PRICE_HOSTED`, `STRIPE_PRICE_PRO`) via the `secrets` skill.
- Cost to set up: **$0** (Stripe fees are per-transaction, 2.9% + 30¢, on real sales only).
- Why gated: creating live Stripe pricing = money/identity + a pricing decision that's yours.
- **Decision for Steve:** confirm the $19 / $49 numbers; monthly-only or add annual? Which Stripe account (DW vs a new AbramsEgo account)?
- Officer rec: **APPROVE** (with final prices confirmed) — [ ] APPROVE  [ ] REVISE  [ ] BLOCK

### 2. Public, unauthenticated landing
Serve `/landing` (and only `/landing` + `/api/waitlist`) WITHOUT Basic Auth so real prospects can see it, while the dashboard itself (`/`, `/api/*`) stays gated. Requires a small middleware change (allowlist `/landing` + `/api/waitlist` like `/api/healthz` already is) and a public host to be reachable.
- Why gated: exposing anything to the open internet is customer-facing + indexable.
- **Decision for Steve:** host on Kamatera behind nginx at a subdomain, or keep it Mac2-local via a tunnel? Indexed (SEO) or unlisted at first?
- Officer rec: **REVISE** — soft launch: public landing at an unlisted subdomain, `noindex`, waitlist-only, no checkout yet. [ ] APPROVE  [ ] REVISE  [ ] BLOCK

### 3. Checkout
Wire the pricing CTAs to **Stripe Checkout** (hosted payment page) or Payment Links — cheapest correct path is a Stripe **Payment Link** per price (no server code, no card handling on our box). Success/cancel URLs return to `/landing`.
- Cost: **$0** to wire; Stripe's per-sale fee only.
- Why gated: takes real payment = money. Needs #1 first.
- **Decision for Steve:** Payment Links (zero-code, fastest) vs a `/api/checkout` session endpoint (more control, more surface)? Recommend Payment Links to start.
- Officer rec: **APPROVE** (Payment Links, after #1) — [ ] APPROVE  [ ] REVISE  [ ] BLOCK

### 4. Fulfillment
Define what a paying customer gets and automate delivery:
- **Self-host ($0):** access to the template (private repo invite or a zip download link).
- **Hosted ($19) / Pro ($49):** provision a hosted instance (pm2 process + subdomain per customer, or a shared multi-tenant instance) and email credentials. On a Stripe `checkout.session.completed` webhook → create the account + send the welcome email via George.
- Why gated: sends real email to real customers + provisions infra + spend (hosting). Needs #1–#3.
- **Decision for Steve:** manual fulfillment for the first N customers (I email you each new paid signup, you provision), or build the webhook→provision automation up front? Recommend **manual-first** — validate demand before automating.
- Officer rec: **REVISE** — manual fulfillment for launch, automate once there's real volume. [ ] APPROVE  [ ] REVISE  [ ] BLOCK

## Suggested sequence
Soft launch first: **#2 (public waitlist-only landing, noindex)** to gauge interest with zero payment risk. Only once there's a real waitlist do #1 → #3 → #4. Every irreversible/money step stays behind demand you can see in `data/waitlist.jsonl`.

## Cost summary
- Build so far: **$0 (local)**.
- Go-live: **$0 setup** across Stripe + landing + checkout; ongoing = Stripe 2.9%+30¢ per real sale + whatever hosting the Hosted/Pro tiers consume (only if sold).