Raxx · internal docs

internal · gated ↑ index

getraxx.com — Launch Readiness Audit

Status: PM audit, 2026-04-29 UTC. Pre-launch. Drafted against code on main as of this date. This document does not constitute legal advice. All compliance observations are product-PM assessments pending attorney review.


1. Site-as-Shipped Summary

The marketing site for getraxx.com is implemented as the React route /marketing/getraxx inside the Antlers SPA (frontend/trademaster_ui). It builds and deploys to the Cloudflare Pages project raxx-app.pages.dev, with a custom domain expected to be raxx.app on production pushes (tag-triggered). There is no dedicated getraxx.com CF Pages project found in the repository — the marketing landing page and the product app share a single Pages deployment. Whether getraxx.com is separately CNAME'd to that project or redirected there is unverified from the codebase alone; DNS is managed outside the repo.

Components present (all in frontend/trademaster_ui/src/pages/getraxx/)

File Purpose Launch-critical issues
GetRaxxLanding.js Page assembly / layout Route is /marketing/getraxx — not /; if getraxx.com root is CNAME'd to raxx.app, the 404 needs a redirect rule
LandingNav.js Top nav #docs and #signin are hash-only stubs; no live pages behind them
HeroSection.js Hero + CTAs Hero tagline is "Stack raxx. Trust the tape." — messaging.md locked tagline is "Stack raxx. No guessing." — copy divergence
PillarsSection.js Three feature pillars Pillar 03 names Alpaca and Alpha Vantage directly — brand violation per project_no_backend_branding
PricingTeaser.js Pricing strip Shows hard prices ($29/mo Pro, $79/mo Pro+) — pricing unfinalized, no attorney review
WaitlistSection.js Email capture Form is a no-op (JS-only fake submit); no backend endpoint; no consent disclosure; no privacy link
LandingFooter.js Footer #privacy and #terms are hash stubs — no Privacy Policy or Terms of Service pages exist; contact is hello@getraxx.com (wrong domain — should be support@raxx.app)

global index.html issues

Cloudflare / DNS reachability

The deploy workflow (deploy.yml) deploys the Antlers SPA to raxx-app.pages.dev and maps to raxx.app on production tag pushes. No CF Pages project or DNS record for getraxx.com is wired in the repo. Whether getraxx.com is live, dead, or redirecting is unverifiable from source alone. This is an infrastructure gap requiring human verification.


2. Blocker Inventory

Severity: P0 = launch-blocking hard stop | P1 = launch-blocking, workaround possible | P2 = must ship before first paid customer | P3 = polish, can follow

P0 — Hard Blockers (nothing ships until resolved)

# Issue Owner Effort
P0-A Securities-attorney copy review — Issue #197 is open and blocked. Investment Advisers Act §202(a)(11) publisher-exception posture is not confirmed. No copy on the site can be publicly indexed until either (a) attorney signs off on the publisher-exception framing or (b) Kristerpher explicitly waives and documents the reasoning. Matthew Crosby (IP) → referral to securities attorney still pending Blocker on attorney; 1-2 days prep when attorney engaged
P0-B Privacy attorney not yet engaged — The waitlist email capture, cookie-setting behavior, and any analytics are all data-collection that requires a privacy notice and (for EU/CA) consent. No privacy attorney is engaged. Docs/legal/research/demo-session-email-gating-2026-04-29.md has the research framework; an attorney must review before launch. Kristerpher to engage privacy attorney Blocker on engagement; ~1 sprint once engaged
P0-C Privacy Policy and Terms of Service pages do not exist — Footer links #privacy and #terms are hash stubs. Clicking them scrolls nowhere. Shipping a site with broken legal links is a disqualifier. Privacy attorney + feature-developer 1 sprint (draft) + attorney review
P0-D Waitlist form is a no-opWaitlistSection.js catches the submit event and calls setSubmitted(true) with no API call. Visitor emails are silently discarded. Every lead captured in beta is lost. feature-developer + backend 1 sprint (wire endpoint + storage)

P1 — Launch-Blocking (ship before any public traffic)

# Issue Owner Effort
P1-A Broker names in customer-facing copyPillarsSection.js Pillar 03 body reads "Alpaca, Alpha Vantage, your own feeds…" Violates project_no_backend_branding constraint. Must be scrubbed before any public access. feature-developer / ux-polisher < 1 day
P1-B Hero tagline copy divergence — Hero reads "Trust the tape." Locked tagline per messaging.md is "No guessing." These are not synonyms; "trust the tape" is ambiguous and not on-brand. ux-polisher < 1 day
P1-C index.html still reads "TradeMaster API" — The <meta name="description"> carries the old product name. Any crawler, Slack unfurl, or social share will show wrong copy. feature-developer < 1 day
P1-D X-Robots-Tag: noindex must be removed before launchpublic/_headers sets noindex globally. Comment in file acknowledges this. Leaving it on at launch means zero organic indexability. feature-developer < 1 day
P1-E Cookie consent / analytics consent banner absent — If PostHog (#219) or any analytics is wired, EU/UK/CA visitors must receive a consent banner before non-essential cookies fire. CPRA in-scope once CCPA threshold is crossed. This gates analytics wiring. Privacy attorney + feature-developer 1 sprint
P1-F getraxx.com DNS / CF Pages binding unverified — No terraform or workflow code confirms that getraxx.com resolves to the correct CF Pages project. Must be verified and documented. If the domain is cold-parked, the entire site is unreachable on launch. Kristerpher (CF dashboard) Human verification + 1 hr if wiring needed
P1-G LLC not formed; footer corporate attribution is missing/wrong — Footer reads "A MooseQuest product." PA LLC formation is in-flight. Cannot claim LLC status that doesn't yet exist, but also cannot use a random attribution on a commercial site. Footer wording must be intentional and attorney-approved. Kristerpher + Crosby Human decision

P2 — Must ship before first paid customer

# Issue Owner Effort
P2-A OG / Twitter meta tags absent — No og:title, og:description, og:image, og:url, no Twitter card. Any social share or link preview will render blank or with wrong content. feature-developer 1 day
P2-B Pricing numbers on site without finalizationPricingTeaser.js hard-codes "$29/mo Pro. $79/mo Pro+." Pricing-v2.md documents this as unverified-anchor-only. Showing prices without a finalized model invites immediate objections from early visitors and may need to be pulled back. Needs explicit Kristerpher sign-off or replacement with tier-overview copy (no numbers). Kristerpher decision Human decision
P2-C Trademark + copyright footer notice absent — No © 2026 [Entity], no RAXX™ or RAXX® notice. Trademark application is in flight (Class 42 + 9). Standard practice is to use (not ®) until registration confirms. feature-developer < 1 day
P2-D status.raxx.app footer link absent — No link to the status page. Standard for SaaS pre-launch. If status.raxx.app is not yet live, the link should be deferred rather than wired to a dead URL. Kristerpher to confirm status page URL; feature-developer < 1 day
P2-E Nav dead links#docs and #signin are hash stubs that scroll nowhere. #docs should go to docs.raxx.app once that's live; #signin should go to app.raxx.app or the auth entry point. feature-developer < 1 day
P2-F Contact email is hello@getraxx.com — Memory project_email_addresses.md specifies the sender domain is raxx.app; support queue is support@raxx.app. The footer contact link points at a different domain/inbox that may not be monitored. feature-developer < 1 day
P2-G Demo CTA is "Join the waitlist" / "See pricing" — Epic #482 (demo.raxx.app) is in-flight; #488 (Antlers demo UI) is blocked. Until the demo is ready, the primary CTA is correctly the waitlist. Once demo ships, hero CTA should become "Try the demo." This card needs a decision on launch sequencing. Kristerpher decision Human decision

P3 — Polish (follow-on sprint)

# Issue Owner Effort
P3-A robots.txt is allow-all with no sitemap reference — Robots.txt should point to sitemap.xml once sitemap is built. feature-developer < 1 day
P3-B Sitemap.xml absent — No sitemap.xml. Should enumerate landing, pricing (when built), about (when built). feature-developer < 1 day
P3-C Mobile QA pass not documented — GetRaxxLanding.js comment says "Responsive: mobile-first, tested at 375/768/1440 px" but no documented test run on iOS Safari 17 exists. QA / Kristerpher 1 day
P3-D theme-color meta tag is Bootstrap blue — Should be #0f172a (ink) per Antlers design direction. feature-developer < 30 min
P3-E Founders Promo scrub — No orphan $19/mo references found in the getraxx pages, but PricingTeaser.js shows $29/mo hard-coded without any Founders Promo context. The retirement (pricing-v2.md, 2026-04-23) is reflected in that there is no $19 reference. No action needed here unless a separate Founders Promo entry point on the marketing site is planned.
P3-F Wordmark integrationGetRaxxLanding.js comment at line 9-15 references issue #165 (refined wordmark) as a pending swap. Once #165 ships, integrate the Wordmark component. feature-developer < 1 day after #165

3. Human-Decision Queue

The following items require Kristerpher's decision before any implementation card can be fully resolved. No agent should unilaterally decide these.

HD-1: Pricing display on marketing site

Question: Do we show the $29/$79 numbers on the marketing site at launch? Options: - A. Show the numbers (current state — hard-coded in PricingTeaser.js) - B. Show tier names + feature matrix only, no numbers ("Free / Pro / Pro+") - C. Replace pricing section with a "pricing coming soon" teaser Constraint: Pricing-v2.md documents anchors as "unverified from training cutoff" and competitor pricing has not been live-verified. The numbers are also not covered by attorney review yet. Recommendation: Option B until attorney review closes. Showing prices without any legal posture creates the implicit representation that these are final.

Question: PA LLC formation is in-flight. How do we attribute the product in the footer before LLC is formed? Options: - A. "A MooseQuest product." (current state — informal, no legal entity claim) - B. "© 2026 Raxx. All rights reserved." (uses brand name, no entity claim) - C. "© 2026 [LLC Name], LLC." (blocked until formation completes) - D. No copyright line until formation completes Recommendation: Option B is defensible pre-formation — it asserts the brand name without claiming a legal entity that doesn't yet exist. Attorney should confirm. Do not use Option C before formation is on paper.

Question: What type of cookie/analytics consent is required for getraxx.com visitors? Options: - A. Soft banner (informational only, no checkbox) — acceptable for US visitors only - B. Full consent-gated banner (opt-in before non-essential cookies fire) — required for EU/UK/CA - C. No analytics pre-launch (removes the consent problem entirely) Constraint: PostHog issue (#219) is "needs-grooming" — analytics are not yet wired. Privacy attorney must advise on GDPR/CCPA posture before any analytics go live. Until attorney is engaged, Option C is the lowest-risk default.

HD-4: Demo CTA copy + timing

Question: The hero has two CTAs: "Join the waitlist" (primary, moss button) and "See pricing" (secondary). Once demo.raxx.app is live (#482/#488), the primary CTA should change to "Try the demo" or similar. Should launch proceed with the waitlist CTA as primary, or gate launch on demo being ready? Options: - A. Launch with waitlist CTA — simplest, no dependency on #482 - B. Gate public launch until demo is minimally viable — stronger conversion but delays timeline Recommendation: Option A. Launch with waitlist CTA, swap to demo CTA in a follow-on sprint when #482 closes.

HD-5: getraxx.com DNS verification

Question: Is getraxx.com currently pointed at raxx-app.pages.dev (or a redirect)? The repository has no DNS records or CF Pages project config for this domain. This needs manual verification in the Cloudflare dashboard. Action required: Kristerpher to confirm whether getraxx.com CNAME/redirect is live and that raxx-app.pages.dev serves the React SPA at the root. If getraxx.com is not wired, a CF Pages custom domain config and a redirect rule from / to /marketing/getraxx are needed.


Gate 1 — Legal posture (in parallel, owner: Kristerpher) Engage securities attorney and privacy attorney. Both need ~1-2 weeks for review. No public indexing before Gate 1 closes. The noindex header buys time here — site can be "live" in structure but not publicly crawlable.

Gate 2 — P0 blockers (1-2 sprints, owner: feature-developer) Wire waitlist backend (#107), draft Privacy Policy + ToS pages (can be legal-placeholder stubs pending attorney redline), scrub broker names from Pillar 03, fix hero tagline, fix index.html meta description.

Gate 3 — P1 infrastructure (1 sprint) Remove noindex header. Verify getraxx.com DNS. Add OG/Twitter meta tags. Fix nav dead links. Fix footer contact email. Add trademark notice.

Gate 4 — Cookie consent + analytics (after privacy attorney review) Wire PostHog (#219) with consent-gated banner. Do not instrument before attorney blesses the consent implementation.

Gate 5 — Demo CTA swap (after #482 closes) Swap hero CTA from "Join the waitlist" to "Try the demo."

Estimated earliest public-indexable launch: ~3-4 weeks out, gated primarily on attorney engagement speed.


5. Brand + Compliance Quick Reference

Check Status
No broker names in copy FAIL — Alpaca + Alpha Vantage in PillarsSection.js Pillar 03
No forward-looking framing PASS — no "will," "predict," "guarantee" language found
AI is never the headline PASS — no "AI-powered" standalone claims found
Deterministic execution language PASS — copy does not imply autonomous order firing
Locked tagline ("No guessing") FAIL — HeroSection.js reads "Trust the tape."
No "investment advice" claim PASS — footer reads "Not investment advice."
No LLC claim before formation PASS — "A MooseQuest product." makes no entity claim
Cream/moss/ink palette (Direction C) PASS — CSS vars are --raxx-ink, --raxx-moss, --raxx-snow throughout
No TradeMaster product name in UI FAIL — index.html meta description still reads "TradeMaster API"
No Founders Promo $19 orphans PASS — no $19 references found in getraxx pages