Young's Mind
Product Spec

Pulse Account Holder Features — Spec v1

Author: Sol · Requested: Young 2026-08-26 · Implement: Nova (design+build), Min/Mira (content lanes)

Pulse Account Holder Features — Spec v1

Author: Sol · Requested: Young 2026-08-26 · Implement: Nova (design+build), Min/Mira (content lanes)

Goal

Give registered Pulse account holders real product surface: personal tools, gated research, and a path to paid membership. Builds on existing auth (login.ts + verifyToken gate on private-briefs).

Account Tiers

TierPriceGets
Free$0Public briefs, stock pages, search, podcast
MemberTBC (e.g. $19/mo)+ Private daily briefs, personal Watchlist, weekly sector reports
PremiumTBC (e.g. $49/mo)+ Monthly macro deep-dives, paper-trading book view (desk P/L), priority Ask Eve, MA50 alert digests

Feature Specs

F1 — Personal Watchlist (Member+)

  • Add/remove tickers from any stock page ("☆ Add to Watchlist") and search results
  • Stored server-side: pulse.db new tables accounts(id, email, pass_hash, tier, created) and watchlist(account_id, ticker, added_at)
  • /account page gains "My Watchlist" grid: price, day %, MA50 signal chip per row (reuse public-movers data shape)
  • Cap: 20 tickers (Member), 50 (Premium)
  • Acceptance: add/remove persists across sessions; unauthenticated users are prompted to sign up

F2 — Special Reports: Weekly & Monthly Sector (Member+/Premium+)

  • Content lane already exists: Mira's Weekly Market Study cron (Sun 8am) + Monthly Macro Study (1st of month)
  • New output step: writers save to obsidian-vault/Research/Reports/weekly-YYYY-WNN.md / monthly-YYYY-MM.md
  • Publisher vendors them into pulse-site/data/reports/ (gated like private-briefs, mode 600)
  • New pages: /reports index (locked cards w/ blur preview) + /reports/[slug] reader
  • Free tier sees title + 2-line teaser only
  • Acceptance: report appears within 15 min of lane publish; gating enforced at API layer, not just UI

F3 — Paper Trading + P/L Balance (Premium, Phase 1 read-only)

  • Desk engine already journals to workspace/trading/paper_state.json (Eva/Min shared ledger, reason per trade)
  • Premium accounts see a Desk Book page: positions, avg cost vs live price, unrealised P/L %, realised P/L, cash balance, journal entries (why we traded)
  • Served via new gated endpoint /api/account/desk-book reading paper_state.json (sanitised copy vendored by publisher — never raw FS access from web tier)
  • Phase 2 (later): per-user paper accounts with own $100k sandbox, trade from stock page
  • Acceptance: numbers match ledger within 1 refresh cycle; no entry prices leak to non-Premium

F4 — Membership (all tiers)

  • /membership page: tier comparison table, CTA buttons, FAQ
  • Upgrade flow v1 = manual: contact form / Telegram deep-link to Young (no payment gateway yet)
  • accounts.tier flips manually via admin API (server/api/admin exists)
  • v2 (when ready): Stripe/PayPal checkout webhook → auto-tier
  • Acceptance: tier change reflects immediately on next authenticated fetch

F5 — Premium Feature Surface

  • Priority Ask Eve: stock-page chat routes with tier=premium hint (longer context, deeper answers)
  • MA50 Alert Digest: daily personal digest of watchlist MA50 events (email/Telegram)
  • Podcast early access + archive beyond 8 episodes
  • "Ad-free" reserved for future inventory

Implementation Order (Nova)

  1. DB migration + auth extension (accounts/tier/watchlist) — foundation
  2. F1 Watchlist (highest visible value, small)
  3. F4 Membership page (sells the rest)
  4. F2 Reports pipeline (needs Min/Mira writer step wired)
  5. F3 Desk Book read-only (needs publisher sanitiser rule: never vendor cost basis for non-premium)
  6. F5 polish

Security Invariants (non-negotiable)

  • All new endpoints check tier at the API layer; UI hiding is cosmetic only
  • Desk-private data (positions, entries, tranches, cron IDs) NEVER enters public dirs — publisher guard pattern stays
  • Cost-basis figures only ever serve to authenticated Premium via the gated copy

Open Decisions (Young)

  • Pricing numbers for Member/Premium
  • Payment rail for v2 (Stripe vs manual-invoice)
  • Desk Book visibility: full journal text vs summary-only?
Copyright © 2026