← back to AbramsEgo
queue: monetization build-out tasks 30-42 (research sweep, 4 revenue engines to one-switch-from-live, design application, officer go-live memo, convergence audit)
26df849e3fe6d59cc939d42767943f6c3a5f3997 · 2026-07-01 15:58:39 -0700 · Steve
Files touched
A build-queue/tasks/30-research-androoagi.mdA build-queue/tasks/31-research-links-norma.mdA build-queue/tasks/33-stripe-test-checkout.mdA build-queue/tasks/34-landing-cta-publicflag.mdA build-queue/tasks/35-demo-video-fulfillment.mdA build-queue/tasks/36-affiliate-engine.mdA build-queue/tasks/37-billable-report.mdA build-queue/tasks/38-ads-slot.mdA build-queue/tasks/40-design-application.mdA build-queue/tasks/41-golive-memo.mdA build-queue/tasks/42-replenish.md
Diff
commit 26df849e3fe6d59cc939d42767943f6c3a5f3997
Author: Steve <steve@designerwallcoverings.com>
Date: Wed Jul 1 15:58:39 2026 -0700
queue: monetization build-out tasks 30-42 (research sweep, 4 revenue engines to one-switch-from-live, design application, officer go-live memo, convergence audit)
---
build-queue/tasks/30-research-androoagi.md | 17 +++++++++++++++++
build-queue/tasks/31-research-links-norma.md | 19 +++++++++++++++++++
build-queue/tasks/33-stripe-test-checkout.md | 20 ++++++++++++++++++++
build-queue/tasks/34-landing-cta-publicflag.md | 15 +++++++++++++++
build-queue/tasks/35-demo-video-fulfillment.md | 14 ++++++++++++++
build-queue/tasks/36-affiliate-engine.md | 17 +++++++++++++++++
build-queue/tasks/37-billable-report.md | 14 ++++++++++++++
build-queue/tasks/38-ads-slot.md | 12 ++++++++++++
build-queue/tasks/40-design-application.md | 12 ++++++++++++
build-queue/tasks/41-golive-memo.md | 17 +++++++++++++++++
build-queue/tasks/42-replenish.md | 14 ++++++++++++++
11 files changed, 171 insertions(+)
diff --git a/build-queue/tasks/30-research-androoagi.md b/build-queue/tasks/30-research-androoagi.md
new file mode 100644
index 0000000..37e0b90
--- /dev/null
+++ b/build-queue/tasks/30-research-androoagi.md
@@ -0,0 +1,17 @@
+# Task 30 — RESEARCH: @androoagi design north-star (videos + posts)
+
+Read SPEC.md + ~/.claude/skills/abramsego-design-research/SKILL.md. Steve directive: "look into
+every site and every post" of the design north-star. Budget-aware: cap this task at ~15 min; it's
+best-effort research, not perfection.
+
+1. Ensure yt-dlp: `command -v yt-dlp || brew install yt-dlp` ($0, local).
+2. Try pulling @androoagi's TikTok profile videos (newest ~5-8) to ~/Videos/design-research/androoagi/
+ via yt-dlp. Also try their X profile (x.com/androoagi) posts via WebFetch. If TikTok blocks local
+ IP: note it in the memo and move on — do NOT burn the budget fighting anti-bot (Browserbase
+ fallback is task-31's owner if needed, ≤$0.50 total, log to cost-tracker).
+3. For any videos obtained: `ffmpeg -vf fps=1/3` frames → read 6-10 frames → describe panel layout,
+ palette, density, motion patterns of the "AI Agent Environment Tour" mission-control style.
+4. Write findings to memos/design-research.md (create; section "androoagi"): what it shows, 3-7
+ concrete patterns worth copying mapped to AbramsEgo panels, what NOT to copy, an "Apply next" list.
+ State every cost line ($0 (local) or the metered charge).
+5. Commit `research: androoagi design north-star notes`. Local only, read-only web, no posting.
diff --git a/build-queue/tasks/31-research-links-norma.md b/build-queue/tasks/31-research-links-norma.md
new file mode 100644
index 0000000..d033dab
--- /dev/null
+++ b/build-queue/tasks/31-research-links-norma.md
@@ -0,0 +1,19 @@
+# Task 31 — RESEARCH: Steve's dropped links + Norma panel-tour videos
+
+Read memos/design-research.md (task 30's output) + ~/.claude/skills/abramsego-design-research/SKILL.md.
+Digest the remaining "every site and every post" sources; append to memos/design-research.md. ~15 min.
+
+1. WebFetch these X posts (use nitter/xcancel mirrors or Exa if X blocks; Exa ≤$1 total, log to
+ cost-tracker + show $):
+ - x.com/nousresearch/status/2071974809609605224 (Hermes Agent web search & extraction)
+ - x.com/0xraduan/status/2038922136375492835 and x.com/0xraduan/status/2043291064149438661
+ ("study it with deep wiki" + the linked repo). If a repo is identified, skim it via
+ deepwiki.com/<org>/<repo> — extract agent-environment architecture ideas only.
+2. Steve's own Norma panel-tour videos (free, own server): fetch the index at
+ http://45.61.58.125:9891/ and note the per-panel tour video pattern (norma-panels-tour/*,
+ norma-analyzer-deep-usage). These are the proven in-house demo format — record what transfers
+ (per-panel MP4 tours as the landing's demo asset; task 35 consumes this).
+3. Append sections "dropped-links" + "norma-videos" to memos/design-research.md with the same
+ pattern→panel mapping + updated "Apply next" list. Also copy the final memo to
+ ~/.claude/skills/abramsego-design-research/references/design-notes.md (create dir if needed).
+4. Commit `research: dropped links + norma tour patterns`. Read-only web; costs labeled.
diff --git a/build-queue/tasks/33-stripe-test-checkout.md b/build-queue/tasks/33-stripe-test-checkout.md
new file mode 100644
index 0000000..801d225
--- /dev/null
+++ b/build-queue/tasks/33-stripe-test-checkout.md
@@ -0,0 +1,20 @@
+# Task 33 — sell_product: Stripe TEST-mode checkout + webhook (engine 1 core)
+
+Read SPEC.md + ~/.claude/skills/abramsego-golive/SKILL.md. Build the checkout rail in TEST mode.
+NO live keys, NO real charges — refuse sk_live_ keys.
+
+1. Run /dtd (preset DTD_DIR=/tmp/dtd-$$-$RANDOM) on: "Option A: Stripe Payment Links (near-zero
+ code, link per tier). Option B: Stripe Checkout Sessions via /api/checkout (server-created,
+ more control). Pick exactly one for AbramsEgo's $19/$49 tiers." Record the verdict in the commit.
+2. Implement the winner in server.js, env-driven: STRIPE_SECRET_KEY (must start sk_test_ — if
+ absent, endpoints return 503 {error:"stripe not configured"} and the UI shows a "test keys not
+ yet installed" note; if it starts sk_live_, REFUSE to boot the money routes and log loudly),
+ STRIPE_WEBHOOK_SECRET. `npm i stripe`. Create .env.example documenting the vars (.env stays
+ gitignored — verify .gitignore covers it).
+3. Add POST /api/stripe/webhook (raw-body signature verify): on checkout.session.completed append
+ {ts, engine:"sell_product", amount, source:"stripe:"+session.id} to data/revenue-ledger.jsonl
+ (same shape as /api/revenue/record) and trigger the snapshot rebuild.
+4. If test keys ARE present in .env, verify end-to-end with Stripe CLI or a signed test event;
+ otherwise verify the 503-graceful path + webhook signature rejection with curl.
+5. `pm2 restart abramsego`; curl checks; commit `feat(sell): stripe TEST checkout + webhook (dtd: <verdict>)`.
+Local only. If no test keys exist yet, that's EXPECTED — build it keys-ready, note it for the memo.
diff --git a/build-queue/tasks/34-landing-cta-publicflag.md b/build-queue/tasks/34-landing-cta-publicflag.md
new file mode 100644
index 0000000..1c0f7fa
--- /dev/null
+++ b/build-queue/tasks/34-landing-cta-publicflag.md
@@ -0,0 +1,15 @@
+# Task 34 — sell_product: landing CTAs wired + PUBLIC_LANDING flag (default OFF)
+
+Read SPEC.md. Depends on task 33 (checkout rail exists). ~12 min, surgical.
+
+1. public/landing.html: wire the tier CTAs — Hosted $19 + Pro $49 buttons open the task-33 checkout
+ path when Stripe is configured (fetch a config endpoint e.g. GET /api/sell/config →
+ {checkoutReady:bool, mode:"test"|"none", links/urls}); when not configured they fall back to the
+ existing #waitlist anchor. Show a small "TEST MODE — no real charges" badge whenever mode=test.
+2. server.js: add PUBLIC_LANDING env flag (default 0). When "1", the Basic-Auth middleware
+ allowlists GET /landing, /api/waitlist POST, /api/sell/config, and the static assets the landing
+ needs — NOTHING else. When 0 (now), behavior unchanged. Do NOT set it to 1 anywhere — flipping
+ it is Steve's gated switch.
+3. Verify: pm2 restart; curl / (still auth-gated), /landing (still auth-gated with flag off);
+ with BasicAuth the landing renders and CTAs show the correct state.
+4. Commit `feat(sell): landing CTAs + PUBLIC_LANDING flag (default off)`. Local only.
diff --git a/build-queue/tasks/35-demo-video-fulfillment.md b/build-queue/tasks/35-demo-video-fulfillment.md
new file mode 100644
index 0000000..b2a86a7
--- /dev/null
+++ b/build-queue/tasks/35-demo-video-fulfillment.md
@@ -0,0 +1,14 @@
+# Task 35 — sell_product: dashboard demo video (Norma pattern) + fulfillment runbook
+
+Read memos/design-research.md ("norma-videos" section). ~15 min.
+
+1. Produce a short (~30-60s) click-through demo MP4 of the :9773 dashboard using the app-demo-video
+ skill pattern (Playwright capture of the panels; TTS optional — skip narration if it risks the
+ budget). Save to public/assets/demo/abramsego-tour.mp4 (keep it <10MB; 720p ok). $0 (local)
+ unless TTS is used — label costs.
+2. Embed it on public/landing.html in the features section (muted, loop, poster frame, lazy).
+3. Write memos/fulfillment.md: exactly what happens when a Hosted/$19 or Pro/$49 test (later live)
+ checkout completes — manual-first provisioning steps (Steve provisions), what the customer
+ receives, refund path. Plain English, one page.
+4. pm2 restart; verify the landing renders the video. Commit `feat(sell): landing demo video + fulfillment runbook`.
+Local only; no deploy.
diff --git a/build-queue/tasks/36-affiliate-engine.md b/build-queue/tasks/36-affiliate-engine.md
new file mode 100644
index 0000000..a78183f
--- /dev/null
+++ b/build-queue/tasks/36-affiliate-engine.md
@@ -0,0 +1,17 @@
+# Task 36 — affiliate engine: /go/:slug tracked redirects + registry (engine 2)
+
+Read SPEC.md. ~12 min, surgical.
+
+1. Create data/affiliates.json registry: [{slug, label, url, program, note, added}] — seed with
+ 3-5 DRAFT candidates relevant to the fleet-ops audience (e.g. hosting, monitoring, AI-tools
+ affiliate programs); mark each `"status":"draft"` — Steve joins programs later (gated), so the
+ urls are the products' plain pages for now.
+2. server.js: GET /go/:slug → look up registry → append {ts, slug, ua, ref} to
+ data/affiliate-clicks.jsonl → 302 to the url. Unknown slug → 404. Include /go/ in the
+ PUBLIC_LANDING allowlist (only when the flag is 1).
+3. Landing: a small tasteful "tools we run on" strip using /go/ links (renders only when the
+ registry has non-draft entries — so nothing customer-facing changes now).
+4. Engine pill: affiliate flips to "live" ONLY when ≥1 registry entry has status:"active" (Steve's
+ switch = editing the entry after joining the program).
+5. pm2 restart; curl /go/<seed-slug> → 302 + click row appended. Commit
+ `feat(affiliate): tracked /go redirects + draft registry`. No program signups — draft only.
diff --git a/build-queue/tasks/37-billable-report.md b/build-queue/tasks/37-billable-report.md
new file mode 100644
index 0000000..88bf23b
--- /dev/null
+++ b/build-queue/tasks/37-billable-report.md
@@ -0,0 +1,14 @@
+# Task 37 — billable_work engine: sellable Fleet Health Report generator (engine 3)
+
+Read SPEC.md. The dashboard's own data is the product. ~15 min.
+
+1. server.js: GET /api/report/fleet-health → generates a polished self-contained HTML report from
+ the current snapshot (fleet up/down, canary verdicts, cost trend, P&L, uptime notes) with an
+ AbramsEgo brand header + generated-at 🕓 timestamp + "$<price>" price tag from env
+ REPORT_PRICE_USD (default 29). Auth-gated like everything else.
+2. Add a "Sample report" link on the landing (renders a redacted/demo variant at
+ /api/report/sample so prospects see the artifact; include in PUBLIC_LANDING allowlist).
+3. If Stripe test keys are configured (task 33), register a test product/price for the report and
+ note the id in data/revenue.json's billable_work note; else leave a TODO note in the engine note.
+4. pm2 restart; curl both report routes render non-empty HTML. Commit
+ `feat(billable): fleet health report generator + sample`. Local only.
diff --git a/build-queue/tasks/38-ads-slot.md b/build-queue/tasks/38-ads-slot.md
new file mode 100644
index 0000000..644a16a
--- /dev/null
+++ b/build-queue/tasks/38-ads-slot.md
@@ -0,0 +1,12 @@
+# Task 38 — ads engine: house-ad slot + ads.txt stub (engine 4)
+
+Read SPEC.md. Smallest engine — placeholder-to-live scaffolding only. ~8 min.
+
+1. public/landing.html: add ONE tasteful ad-slot component (footer area) that renders a HOUSE ad
+ (self-promo card for the Fleet Health Report / waitlist) unless env AD_NETWORK_PUB_ID is set —
+ when set, it renders the network's snippet instead (write the generic container + comment where
+ the pub id goes; joining a network is Steve's gated switch).
+2. Add public/ads.txt stub with a comment header (populated when a network account exists); serve
+ it at /ads.txt (PUBLIC_LANDING allowlist).
+3. Engine pill: ads flips "live" only when AD_NETWORK_PUB_ID is present.
+4. pm2 restart; verify the house ad renders on /landing. Commit `feat(ads): house-ad slot + ads.txt stub`.
diff --git a/build-queue/tasks/40-design-application.md b/build-queue/tasks/40-design-application.md
new file mode 100644
index 0000000..bd3d5c0
--- /dev/null
+++ b/build-queue/tasks/40-design-application.md
@@ -0,0 +1,12 @@
+# Task 40 — apply the design research to dashboard + landing
+
+Read memos/design-research.md "Apply next" list (tasks 30-31 output). ~15 min, pick the TOP 3-5
+highest-impact items only — this is polish, not a rebuild.
+
+1. Apply the chosen patterns to public/index.html (dashboard) and/or public/landing.html — e.g.
+ mission-control layout touches, motion/status affordances, palette/type refinements the research
+ flagged. Steve's hard rules ALWAYS win: keep 🕓 chips, sort+density+infinite scroll, cost labels
+ intact (spot-check after).
+2. Mark each applied item ✅ in memos/design-research.md with one line on what changed.
+3. pm2 restart; load both pages; confirm nothing regressed (curl /api/data still healthy).
+4. Commit `style: apply design-research top items (androoagi/norma patterns)`. Local only.
diff --git a/build-queue/tasks/41-golive-memo.md b/build-queue/tasks/41-golive-memo.md
new file mode 100644
index 0000000..cea069d
--- /dev/null
+++ b/build-queue/tasks/41-golive-memo.md
@@ -0,0 +1,17 @@
+# Task 41 — THE APPROVAL ENDGAME: consolidated go-live memo (officer-signed)
+
+Read ~/.claude/skills/abramsego-golive/SKILL.md + memos/070126A-abramsego-sellit-golive.md (superseded
+by reference). Everything is built; write the ONE memo Steve approves to turn it all on. ~12 min.
+
+Write ~/.claude/yolo-queue/pending-approval/abramsego-golive-260701.md:
+- **Owned by:** vp-abramsego · Drafted: <ISO now> · Status: NEEDS STEVE INPUT
+- One section per engine (sell_product, affiliate, billable_work, ads): what's BUILT + the test
+ evidence (curl output / ledger rows / screenshots refs), the EXACT one-switch turn-on
+ (1. create AbramsEgo Stripe acct + paste live keys via /secrets; 2. PUBLIC_LANDING=1 + deploy to
+ Kamatera + subdomain DNS — run /dtd to shortlist 3 subdomain candidates under agentabrams.com and
+ present them; 3. edit affiliates.json entries to active after joining programs; 4. paste
+ AD_NETWORK_PUB_ID), rollback per switch, and vp-abramsego's APPROVE/REVISE/BLOCK line per item.
+- End with a numbered "**Steve: to turn it all on**" list — each item ONE action.
+- Note: supersedes memos/070126A (reference it; don't delete).
+Also update data/revenue.json engine notes to point at the memo. Commit
+`docs: consolidated go-live approval memo (officer-signed)`. DRAFT ONLY — execute nothing gated.
diff --git a/build-queue/tasks/42-replenish.md b/build-queue/tasks/42-replenish.md
new file mode 100644
index 0000000..eecb0d3
--- /dev/null
+++ b/build-queue/tasks/42-replenish.md
@@ -0,0 +1,14 @@
+# Task 42 — REPLENISH: full build-out convergence audit
+
+You are the queue replenisher. Read SPEC.md + the plan intent: EVERYTHING built to one-switch-from-
+live, gated switches drafted in ~/.claude/yolo-queue/pending-approval/abramsego-golive-260701.md.
+
+1. Audit the RUNNING :9773 instance: all 4 revenue engines scaffolded per tasks 33-38 (checkout rail
+ keys-ready or test-verified, landing CTAs + PUBLIC_LANDING=0, demo video, /go redirects, report
+ generator, ad slot), design research applied (task 40), go-live memo exists + is complete
+ (task 41), hard rules intact (🕓/sort+density/cost labels), NOTHING gated executed (landing still
+ auth-gated, no live keys, no deploy).
+2. Each REAL gap → one surgical <15-min task file (NN from 43), max 3, then re-enqueue this
+ replenisher as the last number ONLY if you enqueued ≥1.
+3. No real gaps → enqueue nothing; the build is at full completion pending Steve's switches.
+4. Move this file to done/; commit `chore: replenish audit (fable) — <verdict>`. Local only.
← 2ce7aff chore: stage tasks 28+29 (task 27 split into <15-min chunks)
·
back to AbramsEgo
·
auto-save: 2026-07-01T16:07:22 (4 files) — build-queue/stage ccc07ec →