📚 Operating Docs Hub 🎯 Content Engine 🎬 Video Plan 🚨 Launch Pre-Mortem 🎯 Foundation Cohort
Today's launch sprint · everything in one place
Site map · funnel flow · tracking · interactive

PostureVision · every page, every funnel.

The complete map of how users find PostureVision and move through it — rendered as a single architecture canvas. Prospect landing is the gateway; Today is the daily-product hub; a fat conversion arc connects them. Inbound channels feed in from the left, in-app cross-flows weave between surfaces, and email-triggered links thread across the canvas. Read by edge color, not by reading order. Below the canvas: skinned registration variants, tracking layer, and open decisions. Every pill is clickable — opens the page in a new tab.

Acquisition Registration Onboarding Daily core Deeper modules Personal data Legal · Support Dev · Internal

System architecture Inbound · primary funnel · in-app cross-flow · email-driven · 1 unified view

Data refreshed: never · placeholder
Edge types
Inbound traffic
Primary flow
Conversion arc
Cross-flow (in-app)
Email-triggered
Conditional / branch
Inbound channels
Acquisition gateway
Auth fast-lane
Registration
Onboarding
Daily core hub
Deeper modules
Personal data
Legal · Support · Dev
Source · organic
Organic search
SEO · branded
Source · direct
Direct & branded
typed URL
Source · owned
Owned channels
YT · IG · TikTok
Source · partner
Affiliates & partners
Creator · clinical
Source · mobile
App Store / Play
native install
Gateway · entry
Prospect / Returning landing
posture.vision/
Acquisition
Pricing
/pricing
Trial picker
Trial choice
/trial
Register · free
Register · Free
/register-free
Register · paid
Register · Paid
/register-paid
Register · 14-day
Register · 14-day Trial
/register-trial
Returning · auth
Login
/login
Aux · auth
Forgot password
/forgot-password
Aux · auth
Reset password
/reset-password
Aux · auth
Verify email
/verify-email
Onboarding · 8-step
Onboarding flow
/onboarding
Capture harness
30s capture
internal
Onboarding · mobile
Native cam onboard
iOS / Android
WS test harness
Apr29 WS harness
internal · dev
Hub · home (web)
Today (web)
/home
Hub · home (mobile)
Today (iOS / Android)
native /home
Reveal
Daily Check reveal
/dailycheck/result
Mirror Mode
Mirror Mode
/mirror
Exercises
Activations
/activations
ROM
ROM module
/rom
Tests
Functional tests
/functional-tests
Social
Circle (Rise Together)
/circle
Invite · mobile
Native contacts picker
share / SMS
Insights
Insights
/insights
Achievements
Achievements
/achievements
React only
Progress
/progress
React only
Dashboard
/dashboard
Legal
Terms
/terms
Legal
Privacy
/privacy
Support
Support / FAQ
/support
Email map
Email flow appendix
internal
Internal
Prototype flow
/prototypes
Spec
Master Plan
internal
How to read this canvas: follow edge color (see legend above). Arrows show direction · double-headed arrows = round-trip (e.g. Today ⇄ Daily Check). The fat teal arc is the high-level conversion story · prospect → today. Each destination pill carries small ← chips below its name listing every source that reaches it.
Toggles: + Live data shows real PostHog visitor counts on each pill (click a metric chip → detail drawer). + Tracking overlay reveals PostHog events + GHL/Stripe write annotations on edges. + Workflows (purple diamonds) shows GHL / Resend / FCM automations that fire from each surface — hover for owner + action.

Skinned registration variants Per-campaign and per-partner co-branded landings

The skin model

Each major campaign and named partnership gets its own skinned registration page — same underlying form, but voice/photo/copy adapted to the source. Drives stronger conversion (audience sees their trusted creator's framing) and clean attribution. Typically branches off one of the 4 base templates below.

Base templates · live

FreeCream + teal · low-friction · default landing for organic
Live CMP-FREE-BASE
PaidDark teal · Premium upfront · for high-intent traffic
Live CMP-PAID-BASE
14-day TrialCoral banner · card on file · "our promise" trust card
Live CMP-T14-BASE
3-day No-cardLower friction · live within Trial Choice page as alt path
Live CMP-T3NC-BASE

Partner-skinned · proposed

Rib Eye Rach (nervous-system framing)Same Free/Paid form · co-branded hero · her photo, her voice, her story · "regulate the nervous system through posture"
Proposed CMP-REVR-T14
Clinical creator partner (Dr. Jen Esquer / Squat Univ tier)Movement-quality framing · co-branded · clinical credibility hook
Proposed CMP-DPT-T14
Productivity creator partner (Ali Abdaal / Thomas Frank)"Feel better while working" framing · knowledge-worker pitch
Proposed CMP-PROD-T14
Wellness brand partner (WHOOP / Eight Sleep / Levels)Cross-promo skin · ecosystem framing · combined offer
TBD CMP-WELLP-T14
Practitioner ambassador (FCA / ICA / local clinics)Patient referral skin · "your clinician recommended" framing · 12-month rev-share
Proposed CMP-PA-T14
Paid social retargeting (Meta / Google / TikTok)One per major creative · audience-specific copy
TBD CMP-RT-{n}

Tracking & attribution layer CMP codes · promo codes · attribution IDs · ownership

The tracking spine

Every page in the funnel needs a clean attribution chain — from the first click on a creator's link all the way through paid signup and beyond. Decisions on this layer drive how many skin variants we actually need. One promo code with many landing pages? Or fewer pages with promo codes per audience? Locked here once decided.

CMP codes · per tactic + skin

Every tactic-page combination gets a unique CMP-{TACTIC}-{SKIN}-{N} code, threaded through UTM and stored in contact.first_touch_cmp.

Naming convention proposal: CMP-{CHANNEL}-{PARTNER|CAMPAIGN}-{VARIANT}-{REV}. E.g. CMP-IG-RIB-T14-V2.

Owner: TBD — most likely the lead-seg session (since they own CRM identity) with marketing reviewing per-campaign assignments.

Dedicated promo codes

Stripe coupon codes for first-month-free or % off. Each campaign gets its own (e.g. RIB10, HUBERMAN20) so attribution at checkout is clean.

Decision needed: fewer landing pages with one shared promo each, OR many pages each with a unique promo? The skin-variant explosion above implies the latter — confirm with marketing.

Owner: Stripe admin (Brian) creates the codes; lead-seg session attaches to email + landing.

Attribution IDs we need

Already implemented: utm_source, utm_medium, utm_campaign, utm_content, utm_term.

Need to add: cmp (campaign code), aff_id (affiliate partner ID for rev-share), fbclid/gclid/ttclid for paid platforms, posthog_distinct_id for cross-domain identity.

Owner: Frontend captures + persists in localStorage; backend reads on signup; lead-seg writes to GHL.

Identity chain · anonymous → identified → conversion

1. Anonymous: PostHog assigns distinct_id; UTM + first-touch CMP captured to localStorage.

2. Identified at signup: posthog.identify(ghl_contact_id); alias the anon id; first-touch CMP becomes a custom field on GHL.

3. Conversion at paid: Stripe customer.metadata gets the GHL contact ID + first-touch CMP; promo code attribution applied.

Surface
Tracking required
Status
Prospect landingUTMs in URL · first-touch CMP capture · PostHog page_viewed eventLive
PricingUTMs preserve · pricing_viewed event · plan_clicked event with plan_idLive
Registration (any variant)UTMs preserve · CMP attached to signup payload · registration_started + registration_completed eventsLive
Trial choicetrial_path_chosen event with {3day_no_card | 14day_card}Live
Onboardingstep_completed × N events with step_id; flow_completed at endPartial · Apr29 rebuild has uncommitted changes
Daily Check / Mirror Modesession_started · session_completed with metrics; cue events duringLive
Insights / Achievementsinsights_viewed · achievement_unlocked events; share_clicked trackingPending · React-only pages
Email linksUTM per email × variant · first-click event posted to PostHog via Resend webhookPending · Resend webhook spec'd not built
Stripe checkoutcustomer.metadata = {ghl_contact_id, first_touch_cmp, promo_code}Pending · spec'd in BACKEND_SYNC

Open team decisions Lock these to simplify the funnel

Questions that shape the page count

Each decision below influences how many pages the team actually has to build, maintain, and update. Lock these before we go wide on partner-skinned variants.

1
How many partner-skinned registration pages do we actually build?

Easy to commit to 8-10 partner skins. Reality: each one needs creative review, UTM/CMP wiring, ongoing maintenance. Proposal: only build skins for partners whose audience is >100K AND who commit to dedicated promo with us. Below that threshold, route to a base template with their UTM in the URL — no separate page.

Owner: Brian + lead-seg session · decide before launch
2
Promo code strategy: one-per-page or many-per-campaign?

Option A — one Stripe promo per skinned landing (clean attribution, more codes to manage). Option B — fewer codes, manual UTM-based attribution post-checkout (simpler ops, fuzzier attribution). Recommend Option A for partner-skins (rev-share clarity), Option B for paid social retargeting where Meta/Google have their own attribution.

Owner: Brian · Christiane to weigh in
3
Who owns the CMP code registry?

Need a single source of truth — likely a spreadsheet or Notion table — listing every CMP code, when it was issued, the campaign + skin variant + promo code it ties to, and current status (active/expired). Recommend lead-seg session owns the registry; marketing requests new codes; frontend ensures landing pages capture them.

Owner: lead-seg session · build registry before first partner launch
4
First-touch attribution duration — 30 days, 90 days, lifetime?

If a user clicks a Rib Eye Rach link in May, signs up free, and converts to Premium in November, does Rib still earn attribution? Industry standard: 30-day cookie + 90-day persistence on identified users. For affiliate rev-share, this directly affects partner payouts.

Owner: Brian + counsel · lock in affiliate program terms
5
When do landing routes that exist in email URLs need to actually exist as pages?

The email flow appendix references /verify-email, /household/claim, /household/consent, /feedback/cancellation, /forgot-password, /reset-password — most of these are React routes that haven't been built. Need an audit pass: which emails are scheduled to send before each route is live?

Owner: frontend session + backend session · audit before first email batch sends
6
Should every page have its own dedicated PostHog feature flag for A/B?

Easy to over-engineer here. Proposal: only A/B test the 3 highest-leverage pages (prospect landing, pricing, register-trial-choice). Other pages stay single-version until we have data. Adds complexity without proportional learning otherwise.

Owner: lead-seg session · decide post-launch

Complete page index Every page · alphabetical · click to open

Screenshot & preview pipeline: the architecture canvas above uses compact pills (no thumbnails) so the whole system fits on one screen. The page index below remains the full text inventory. When we want hero previews — capture each page at 1280×800 into screenshots/{filename}.png; build-team-handoff-zip.ps1 can extend to a screenshot capture step (chromedp / Playwright). Loom screen-recordings of full flows can also be embedded later for living documentation.
#
Page
Route / file
Stage
Open
01
AchievementsGrove + Discovery cards + Timeline
pages/posturevision_achievements.html
Data
Open
02
ActivationsExercise / corrective-action library
pages/posturevision_activations.html
Deep
Open
03
Circle (Rise Together)Social / friends / Arena leaderboards · v0.1 wireframe
pages/posturevision_circle_skeleton.html
Deep
Open
04
Daily Check reveal v2Score reveal after 60-second daily check
pages/posturevision_daily_check_results_v2.html
Core
Open
05
Email flow appendixEvery email · trigger · subject · landing URL
pages/posturevision_email_flow.html
Dev
Open
06
Functional Tests v2Self-administered capability tests
pages/posturevision_functional_tests_v2.html
Deep
Open
07
InsightsPatterns we noticed + Poise trend chart with Y-axis
pages/posturevision_insights.html
Data
Open
08
iOS TodayMobile equivalent of Today / home
pages/posturevision_ios_today.html
Core
Open
09
Master PlanInternal product architecture & roadmap doc
specs/POSTUREVISION_MASTER_PLAN.html
Dev
Open
10
Mirror Mode v2Real-time posture correction with Eye Health card
pages/posturevision_mirror_mode_v2.html
Core
Open
11
Module 3 — ROMRange-of-motion intelligence module
pages/posturevision_module3_rom.html
Deep
Open
12
Onboarding flow8-step welcome → license → camera → capture → reveal → invite
pages/posturevision_onboarding_flow.html
Onb
Open
13
Onboarding 30s harnessTest harness for the 30-second baseline + rotation capture
pages/posturevision_onboarding_30s_harness.html
Onb
Open
14
Onboarding Apr29 harnessNewer WebSocket pipeline test harness
pages/posturevision_onboarding_apr29_harness.html
Onb
Open
15
PricingFree vs. Premium · monthly $9.99 / annual $99 / couples / family
pages/posturevision_pricing.html
Acq
Open
16
Privacy PolicyCamera-only architecture · no video stored · HIPAA boundaries
legal/posturevision_privacy.html
Legal
Open
17
Prospect landing pageFirst-touch from organic, direct, owned content · was "Marketing landing"
pages/posturevision_prospect_landing.html
Acq
Open
18
Prototype flow indexInternal navigator linking all prototypes
pages/posturevision_prototype_flow.html
Dev
Open
19
Register · FreeCream + teal · less prominent variant
pages/posturevision_register_free.html
Reg
Open
20
Register · PaidDark teal Premium variant — $9.99/mo
pages/posturevision_register_paid.html
Reg
Open
21
Register · 14-day TrialCoral trial banner · card on file · "our promise" trust card · 3-day no-card alt
pages/posturevision_register_paid_trial.html
Reg
Open
22
Register · Trial ChoiceDual trial picker — 14-day vs. 3-day no-card
pages/posturevision_register_trial_choice.html
Reg
Open
23
Support / FAQContact, account help, troubleshooting
legal/posturevision_support.html
Legal
Open
24
Terms of ServiceLicense agreement · wellness tool not medical device
legal/posturevision_terms.html
Legal
Open
25
Today (web v3)Daily home / dashboard · web version
pages/posturevision_today_webapp_v3.html
Core
Open