Pulse Account Holder Features — Spec v1
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
| Tier | Price | Gets |
|---|---|---|
| Free | $0 | Public briefs, stock pages, search, podcast |
| Member | TBC (e.g. $19/mo) | + Private daily briefs, personal Watchlist, weekly sector reports |
| Premium | TBC (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.dbnew tablesaccounts(id, email, pass_hash, tier, created)andwatchlist(account_id, ticker, added_at) /accountpage 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:
/reportsindex (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-bookreading 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)
/membershippage: tier comparison table, CTA buttons, FAQ- Upgrade flow v1 = manual: contact form / Telegram deep-link to Young (no payment gateway yet)
accounts.tierflips manually via admin API (server/api/adminexists)- 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=premiumhint (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)
- DB migration + auth extension (accounts/tier/watchlist) — foundation
- F1 Watchlist (highest visible value, small)
- F4 Membership page (sells the rest)
- F2 Reports pipeline (needs Min/Mira writer step wired)
- F3 Desk Book read-only (needs publisher sanitiser rule: never vendor cost basis for non-premium)
- 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?
Paper Trading — Content & Reporting Design
Owner: Mira (content + reporting) · Automation: Min's engine (ledger/fills/journal/risk) Capital: $50,000 paper · Styles: Trend / Range / Breakout / Momentum Core thesis: Theme-first, uranium at the core · Tranched entries · Level alerts Audience: General — teaches as it reports. CommSec-brokerage tone.
Pulse Content Calendar & Growth Plan
Status: Freemium launch | Owner: Mira (structure) + Echo (execution) Based on: Min → Young directive: content-driven user acquisition for Pulse

