Funnel copy inventory (appendix A to the attorney review packet for #4835)
Status: research-only. This document does NOT constitute legal advice. It is an inventory of customer-facing strings, prepared for review by a securities/investment-adviser regulatory attorney and a consumer-protection (advertising and subscription billing) attorney; the privacy rows also need a privacy attorney. Last updated: 2026-10-31 UTC. Snapshot:
origin/developat78b417d24. Verify freshness with the staleness check in the main packet.
Main packet: docs/legal/research/funnel-and-tools-copy-attorney-packet-2026-10-31.md. Tools appendix: docs/legal/research/tools-copy-inventory-2026-10-31.md.
How this inventory was produced
- Funnel copy modules were loaded and evaluated (not grep-scraped), so every sentence below is the exact text a customer sees, including price and date sentences that the code builds from
lib/paywall/priceConfig.ts. Functions in the modules were called with sample arguments; the call appears in the Key column (for exampledisclosure.proTrial("month")). Date samples use 2026-11-07. - Where each fact sits. The per-row columns are ID, Key, String and Touches. The source file, owner, route and flags, and status are stated once per group, in the group header above its table (group granularity), except in the held-strings table below, which carries a file and a reason per row. Look up a row's file and status in the header of its group.
- Strings that live inline in a component rather than in a copy module are listed separately (groups WIZ, RSK, IOS, PRV, EML, BIL) and are the drift risk: a copy-module edit is caught by the staleness check, an inline edit is caught only if the file is on the check list.
- Touches is a mechanical, pattern-based triage column, not a legal conclusion. Codes are defined in the main packet, section "Guardrail map": G1 hold categories (edge, leak-to-rule, "your plan", numeric goal) including the word "plan" and benchmark/goal/habit/rule wording; G1p the word "plan" used as a billing noun; G2 forward-looking, promise or retrospective-marker wording; G3 a vendor name; G4 instruments, tickers or symbols; G5 recommendation, suggestion, template or advisory wording; G6 sizing and risk wording; G7 price, trial, renewal, cancellation or "free" wording; G8 privacy and data-handling claims; G9 disclaimer or not-advice wording; G10 EU, EEA or Quebec. A dash means no pattern matched. Counsel reviews every string regardless of its tags.
- Status vocabulary: HELD (tagged in code, not rendered, blocks the flag); RENDERED-NEUTRAL (rendered, behind a default-OFF flag, not counsel-cleared); CLEARED (none yet: no counsel sign-off is recorded for any string).
Counts
| Prefix | Group | Rows |
|---|---|---|
PRM |
Promise | 24 |
QZ |
Quiz questions, options, buttons | 60 |
QN |
Quiz notices | 17 |
QW |
Quiz signed-in steps | 14 |
QS |
Signup and sign-in hand-off | 14 |
PLN |
Plan | 38 |
PAY |
Paywall (web) | 77 (78 listed; PAY-059 is the held string HELD-09 and is not counted) |
CNF |
Confirmation | 81 |
SET |
Settings: Setup answers | 46 |
WIZ |
Wizard inline | 12 |
RSK |
Risk profile (existing) | 8 |
IOS |
iOS paywall | 71 |
PRV |
Privacy policy rows | 8 |
EML |
Trial reminder email (pre-staged) | 7 |
BIL |
Billing notices (pre-staged) | 3 |
HELD |
Held (not rendered) | 9 |
Rendered or pre-staged rows (excluding HELD): 480. The journal line HELD-09 is also listed in group A7 as PAY-059, in the position where the paywall code keeps it. That row is marked HELD in the row itself and is excluded from this count and from the mechanical scan in the main packet (section 4.1). Some rows summarize a family of strings (for example the iOS "terms" rows and the email HTML), so the row count is a lower bound on distinct sentences.
Held strings (not rendered)
These are tagged counsel-hold-4835 in code, are never imported by a component (only by tests that prove they do not render), and block onboarding_plan_v1 (Promise and Plan strings) until counsel clearance is recorded. The held wording of the Plan screen is a stand-in that names the category, not counsel's wording; see the main packet, section "Hold list".
| ID | File | Key | Held string | Reason | Rendered instead |
|---|---|---|---|---|---|
| HELD-01 | lib/promise/promiseCopy.ts |
PROMISE_HELD_COPY.headline_know_your_edge |
Know your edge |
edge-as-a-promise wording | Trade by your own rules. |
| HELD-02 | lib/promise/promiseCopy.ts |
PROMISE_HELD_COPY.cta_build_my_plan |
Build my plan |
"your plan" framing | Get started |
| HELD-03 | lib/promise/promiseCopy.ts |
PROMISE_HELD_COPY.sub_plan_you_can_follow |
Raxx turns the rules you write into a plan you can follow and a record you can review. |
"a plan you can follow" framing | Raxx keeps the rules you write in view when you trade, and keeps a record you can review afterwards. |
| HELD-04 | lib/plan/planCopy.ts |
PLAN_HELD_COPY.plan_heading_your_plan |
Your plan |
"your plan" framing | Your starting setup |
| HELD-05 | lib/plan/planCopy.ts |
PLAN_HELD_COPY.plan_sub_plan_built_for_you |
Here is the plan built for you. |
"your plan" framing | Built from the answers you gave. Nothing here is a recommendation. You can change any of it later in Settings. |
| HELD-06 | lib/plan/planCopy.ts |
PLAN_HELD_COPY.plan_habit_leak_to_rule |
The leak this rule closes |
leak-to-rule mapping (habit to rule copy) | You chose to track: |
| HELD-07 | lib/plan/planCopy.ts |
PLAN_HELD_COPY.plan_edge_statement |
Your edge, written down |
edge-as-a-promise wording | How you trade |
| HELD-08 | lib/plan/planCopy.ts |
PLAN_HELD_COPY.plan_goal_numeric_target |
Your monthly target |
numeric goal target | Benchmark you set |
| HELD-09 | lib/paywall/paywallCopy.ts |
PAYWALL_COPY.journalLine (gated by JOURNAL_LINE_CONFIRMED = false) |
Your journal and history always stay yours and stay viewable on Free. |
retention claim held by the #4821 audit (PR #4884), not a counsel hold; listed so counsel sees it; also listed in group A7 as PAY-059, marked HELD | (nothing: the line is absent) |
Inventory by surface
A1. Promise screen
- Source:
frontend/raxx-next/lib/promise/promiseCopy.ts(PROMISE_COPY); rendered bycomponents/promise/PromiseScreen.tsx(no inline copy) - Route and flags:
/start(anonymous). Visible only whileonboarding_quiz_v1ANDonboarding_plan_v1are both ON (both default OFF); otherwise 404. Hidden during the closed beta. - Card and PR: #4825 (#4904)
- Owner: Copy:
marketing-strategist(drafts; ADR-0152 section 2.7). Decision authority: Kristerpher. Legal clearance: counsel via #3141. Built by engineering from the frozen design (docs/design/funnel-v2/). - Status of every row below: RENDERED-NEUTRAL: ships behind a default-OFF flag, not counsel-cleared, parallel review requested
- Note: Step 2 and step 3 describe the personal-rule reminder and the benchmark comparison. The rule store (#4828) and the dashboard benchmark tile are not on develop; see main packet, "Not on develop".
| ID | Key | String as shown | Touches |
|---|---|---|---|
| PRM-001 | PROMISE_COPY.metaTitle |
Get started — Raxx |
- |
| PRM-002 | PROMISE_COPY.headline |
Trade by your own rules. |
G1 |
| PRM-003 | PROMISE_COPY.sub |
Raxx keeps the rules you write in view when you trade, and keeps a record you can review afterwards. |
- |
| PRM-004 | PROMISE_COPY.cta.start |
Get started |
- |
| PRM-005 | PROMISE_COPY.cta.continue |
Continue |
- |
| PRM-006 | PROMISE_COPY.cta.pending |
Opening the questions |
- |
| PRM-007 | PROMISE_COPY.cta.startOver |
Start over |
- |
| PRM-008 | PROMISE_COPY.fine |
Free to start. Every question is optional. |
G7 |
| PRM-009 | PROMISE_COPY.saved.answers(1) |
You have 1 saved answer in this browser tab. |
G8 |
| PRM-010 | PROMISE_COPY.saved.answers(2) |
You have 2 saved answers in this browser tab. |
G8 |
| PRM-011 | PROMISE_COPY.saved.skippedOnly |
Your skipped questions use default settings in this browser tab. |
G8 |
| PRM-012 | PROMISE_COPY.header.homeLabel |
Raxx home |
- |
| PRM-013 | PROMISE_COPY.header.signIn |
Sign in |
- |
| PRM-014 | PROMISE_COPY.stepsLabel |
How it works |
- |
| PRM-015 | PROMISE_COPY.steps[0].eyebrow |
Step 1 |
- |
| PRM-016 | PROMISE_COPY.steps[0].title |
Write your rules |
G1 |
| PRM-017 | PROMISE_COPY.steps[0].body |
Choose the habit you want to track in your own trades. You enter every number. |
G1 |
| PRM-018 | PROMISE_COPY.steps[1].eyebrow |
Step 2 |
- |
| PRM-019 | PROMISE_COPY.steps[1].title |
Trade with them in view |
- |
| PRM-020 | PROMISE_COPY.steps[1].body |
Your rule shows as a reminder when you place an order. It never blocks or changes an order. |
G1, G5 |
| PRM-021 | PROMISE_COPY.steps[2].eyebrow |
Step 3 |
- |
| PRM-022 | PROMISE_COPY.steps[2].title |
Review afterwards |
- |
| PRM-023 | PROMISE_COPY.steps[2].body |
See how your recorded trades compare with your rule and benchmark, after the fact. |
G1, G2 |
| PRM-024 | PROMISE_COPY.copyright(2026) |
© 2026 MooseQuest LLC dba Raxx |
- |
A2. Quiz: questions, options, buttons
- Source:
frontend/raxx-next/lib/quiz/quizCopy.ts(QUIZ_COPY.questions,.options,.goal,.nav,.defaultSetting); question ids and option ids fromlib/quiz/quizQuestions.tsandlib/traderProfileRegistry.ts - Route and flags:
/start/quiz/1to/start/quiz/5(anonymous) and the signed-in quiz steps inside/wizard. Flagonboarding_quiz_v1(default OFF). - Card and PR: #4823 (#4903)
- Owner: Copy:
marketing-strategist(drafts; ADR-0152 section 2.7). Decision authority: Kristerpher. Legal clearance: counsel via #3141. Built by engineering from the frozen design (docs/design/funnel-v2/). - Status of every row below: RENDERED-NEUTRAL: ships behind a default-OFF flag, not counsel-cleared, parallel review requested
- Note: Stored answers are registry ids, never these labels. No ticker or symbol field exists on any screen; instruments are a fixed list of supported classes.
| ID | Key | String as shown | Touches |
|---|---|---|---|
| QZ-001 | QUIZ_COPY.questions.instruments.stem |
Which kinds of instruments do you trade? |
G4 |
| QZ-002 | QUIZ_COPY.questions.instruments.hint |
Choose all that apply. Raxx lists only what it supports today. |
- |
| QZ-003 | QUIZ_COPY.questions.instruments.stepName |
Instruments |
G4 |
| QZ-004 | QUIZ_COPY.questions.experience.stem |
How long have you been trading? |
- |
| QZ-005 | QUIZ_COPY.questions.experience.stepName |
Experience |
- |
| QZ-006 | QUIZ_COPY.questions.style.stem |
How long do you usually hold a position? |
- |
| QZ-007 | QUIZ_COPY.questions.style.stepName |
Style |
- |
| QZ-008 | QUIZ_COPY.questions.habit.stem |
Which habit would you most like to track in your own trades? |
G1 |
| QZ-009 | QUIZ_COPY.questions.habit.hint |
Pick one. It stays your choice: Raxx records it and never judges it. |
G1 |
| QZ-010 | QUIZ_COPY.questions.habit.stepName |
Habit |
G1 |
| QZ-011 | QUIZ_COPY.questions.goal.stem |
Is there a number you want to compare your results with, after the fact? |
G1, G2 |
| QZ-012 | QUIZ_COPY.questions.goal.hint |
Optional. A number you choose. Raxx shows how your recorded results compare with it, after the fact. |
G1, G2 |
| QZ-013 | QUIZ_COPY.questions.goal.stepName |
Benchmark |
G1 |
| QZ-014 | QUIZ_COPY.options.instruments.us_equity.title |
US stocks and ETFs |
G4 |
| QZ-015 | QUIZ_COPY.options.instruments.us_equity.desc |
Shares you buy and sell |
- |
| QZ-016 | QUIZ_COPY.options.instruments.option.title |
Options |
G4 |
| QZ-017 | QUIZ_COPY.options.instruments.option.desc |
Calls, puts and multi-leg structures |
- |
| QZ-018 | QUIZ_COPY.options.experience.just_starting.title |
Just starting out |
- |
| QZ-019 | QUIZ_COPY.options.experience.under_1y.title |
Less than 1 year |
- |
| QZ-020 | QUIZ_COPY.options.experience.1_to_3y.title |
1 to 3 years |
- |
| QZ-021 | QUIZ_COPY.options.experience.over_3y.title |
More than 3 years |
- |
| QZ-022 | QUIZ_COPY.options.experience.not_sure.title |
Not sure yet |
- |
| QZ-023 | QUIZ_COPY.options.style.intraday.title |
Intraday |
- |
| QZ-024 | QUIZ_COPY.options.style.intraday.desc |
Opened and closed the same day |
- |
| QZ-025 | QUIZ_COPY.options.style.swing.title |
Swing |
- |
| QZ-026 | QUIZ_COPY.options.style.swing.desc |
Held for days to weeks |
- |
| QZ-027 | QUIZ_COPY.options.style.position.title |
Position |
- |
| QZ-028 | QUIZ_COPY.options.style.position.desc |
Held for weeks to months |
- |
| QZ-029 | QUIZ_COPY.options.style.long_term.title |
Long term |
- |
| QZ-030 | QUIZ_COPY.options.style.long_term.desc |
Held for months to years |
- |
| QZ-031 | QUIZ_COPY.options.style.not_sure.title |
Not sure yet |
- |
| QZ-032 | QUIZ_COPY.options.habit.position_sizing.title |
How much I put into each position |
G1 |
| QZ-033 | QUIZ_COPY.options.habit.exit_rules.title |
When and how I exit |
G1 |
| QZ-034 | QUIZ_COPY.options.habit.entry_timing.title |
When I enter |
G1 |
| QZ-035 | QUIZ_COPY.options.habit.trade_frequency.title |
How often I trade |
G1 |
| QZ-036 | QUIZ_COPY.options.habit.rule_adherence.title |
Whether I follow my own rules |
G1 |
| QZ-037 | QUIZ_COPY.options.habit.not_sure.title |
Not sure yet |
G1 |
| QZ-038 | QUIZ_COPY.goal.numberLabel |
Benchmark |
G1 |
| QZ-039 | QUIZ_COPY.goal.unitLabel |
Unit |
G1 |
| QZ-040 | QUIZ_COPY.goal.unitPlaceholder |
Choose a unit |
G1 |
| QZ-041 | QUIZ_COPY.goal.units.pct_month |
percent per month |
G1, G7 |
| QZ-042 | QUIZ_COPY.goal.units.pct_year |
percent per year |
G1, G7 |
| QZ-043 | QUIZ_COPY.goal.units.usd_month |
dollars per month |
G1, G7 |
| QZ-044 | QUIZ_COPY.goal.units.usd_year |
dollars per year |
G1, G7 |
| QZ-045 | QUIZ_COPY.goal.numberError |
Enter a number greater than zero. |
G1 |
| QZ-046 | QUIZ_COPY.goal.unitError |
Choose a unit for your number. |
G1 |
| QZ-047 | QUIZ_COPY.nav.back |
Back |
- |
| QZ-048 | QUIZ_COPY.nav.progressGroup |
Quiz progress |
- |
| QZ-049 | QUIZ_COPY.nav.next |
Next |
- |
| QZ-050 | QUIZ_COPY.nav.skipQuestion |
Skip question |
- |
| QZ-051 | QUIZ_COPY.nav.seeSetup |
See starting setup |
- |
| QZ-052 | QUIZ_COPY.nav.skipAndSeeSetup |
Skip and see setup |
- |
| QZ-053 | QUIZ_COPY.nav.createAccount |
Create account |
- |
| QZ-054 | QUIZ_COPY.nav.skipAndCreateAccount |
Skip and create account |
- |
| QZ-055 | QUIZ_COPY.nav.finish |
Finish |
- |
| QZ-056 | QUIZ_COPY.nav.skipAndFinish |
Skip and finish |
- |
| QZ-057 | QUIZ_COPY.nav.skipAll |
Skip all questions |
- |
| QZ-058 | QUIZ_COPY.nav.skipAllMeaning |
Uses default settings. Answers you have already given are kept. |
- |
| QZ-059 | QUIZ_COPY.nav.saving |
Saving |
- |
| QZ-060 | QUIZ_COPY.defaultSetting |
Default setting - change anytime. |
- |
A3. Quiz: consent and data-handling notices
- Source:
frontend/raxx-next/lib/quiz/quizCopy.ts(QUIZ_COPY.noticeFull,.noticeSignedInFull,.noticeLine,.noticeSignedIn,.resume,.storageBlocked) - Route and flags: Question 1 (full notice), questions 2 to 5 (one line), resume banner, storage-blocked banner. Flag
onboarding_quiz_v1. - Card and PR: #4823 (#4903); claims table in
docs/design/funnel-v2/mockups/11-consent-copy.html - Owner: Copy:
marketing-strategist(drafts; ADR-0152 section 2.7). Decision authority: Kristerpher. Legal clearance: counsel via #3141. Built by engineering from the frozen design (docs/design/funnel-v2/). - Status of every row below: RENDERED-NEUTRAL: ships behind a default-OFF flag, not counsel-cleared, parallel review requested
- Note: These are the consent-adjacent claims. Each claim is backed by code listed in the main packet (section "Claims to verify"). Counsel decides whether a notice is enough or an explicit consent is needed (design open question 2).
| ID | Key | String as shown | Touches |
|---|---|---|---|
| QN-001 | QUIZ_COPY.noticeFull.title |
How your answers are used |
- |
| QN-002 | QUIZ_COPY.noticeFull.body |
Every question is optional. Your answers are held in this browser tab until you create an account or close the tab. If you have allowed analytics, Raxx also records which options you choose, but never a number you type. After you create an account they are stored on your profile, where you can change or delete them in Settings. Deleting your account removes them. |
G4, G8 |
| QN-003 | QUIZ_COPY.noticeFull.link |
Read the privacy policy |
G8 |
| QN-004 | QUIZ_COPY.noticeSignedInFull.title |
How your answers are used |
- |
| QN-005 | QUIZ_COPY.noticeSignedInFull.body |
Every question is optional. Your answers are stored on your profile, where you can change or delete them in Settings. If you have allowed analytics, Raxx also records which options you choose, but never a number you type. Deleting your account removes them. |
G4, G8 |
| QN-006 | QUIZ_COPY.noticeSignedInFull.link |
Read the privacy policy |
G8 |
| QN-007 | QUIZ_COPY.noticeLine.text |
Held in this browser tab until you create an account. |
G8 |
| QN-008 | QUIZ_COPY.noticeLine.link |
Privacy policy |
G8 |
| QN-009 | QUIZ_COPY.noticeSignedIn.text |
Stored on your profile. Deleting your account removes them. |
G8 |
| QN-010 | QUIZ_COPY.noticeSignedIn.link |
Privacy policy |
G8 |
| QN-011 | QUIZ_COPY.resume.title |
Picking up where you left off. |
- |
| QN-012 | QUIZ_COPY.resume.answers(1) |
1 answer is saved in this tab. |
G8 |
| QN-013 | QUIZ_COPY.resume.answers(2) |
2 answers are saved in this tab. |
G8 |
| QN-014 | QUIZ_COPY.resume.skippedOnly |
Your skipped questions use default settings. |
- |
| QN-015 | QUIZ_COPY.resume.startOver |
Start over |
- |
| QN-016 | QUIZ_COPY.storageBlocked.title |
This browser is not keeping answers. |
G8 |
| QN-017 | QUIZ_COPY.storageBlocked.body |
They stay on this page until you create an account or leave it. You can still answer, skip, or continue. |
- |
A4. Quiz: signed-in steps (inside the onboarding wizard)
- Source:
frontend/raxx-next/lib/quiz/quizCopy.ts(QUIZ_COPY.wizard,.signedIn) - Route and flags:
/wizardwhileonboarding_quiz_v1is ON and the user is not a closed-beta tester. - Card and PR: #4823 (#4903), #4826 (#4907)
- Owner: Copy:
marketing-strategist(drafts; ADR-0152 section 2.7). Decision authority: Kristerpher. Legal clearance: counsel via #3141. Built by engineering from the frozen design (docs/design/funnel-v2/). - Status of every row below: RENDERED-NEUTRAL: ships behind a default-OFF flag, not counsel-cleared, parallel review requested
| ID | Key | String as shown | Touches |
|---|---|---|---|
| QW-001 | QUIZ_COPY.wizard.welcomeSub |
A few short questions set up your starting preferences. Every one is optional. |
- |
| QW-002 | QUIZ_COPY.signedIn.pageTitle |
Setup questions |
- |
| QW-003 | QUIZ_COPY.signedIn.loadingLabel |
Loading your saved answers |
G8 |
| QW-004 | QUIZ_COPY.signedIn.loadErrorTitle |
Your saved answers could not be loaded. |
G8 |
| QW-005 | QUIZ_COPY.signedIn.loadErrorBody |
Nothing was changed. Try again, or continue with default settings. |
- |
| QW-006 | QUIZ_COPY.signedIn.continueDefaults |
Continue with default settings |
- |
| QW-007 | QUIZ_COPY.signedIn.answerNotSavedTitle |
That answer did not save. |
G8 |
| QW-008 | QUIZ_COPY.signedIn.answerNotSavedBody |
Your answers are kept on this page. Try again, or continue. |
- |
| QW-009 | QUIZ_COPY.signedIn.welcomeNotSavedTitle |
Your progress did not save. |
G8 |
| QW-010 | QUIZ_COPY.signedIn.welcomeNotSavedBody |
Try again, or continue. |
- |
| QW-011 | QUIZ_COPY.signedIn.notSavedTitle |
Your setup is not saved yet. |
G8 |
| QW-012 | QUIZ_COPY.signedIn.notSavedBody |
Your answers are kept with your setup progress. Try again, or continue. |
- |
| QW-013 | QUIZ_COPY.signedIn.tryAgain |
Try again |
- |
| QW-014 | QUIZ_COPY.signedIn.continueAnyway |
Continue |
- |
A5. Signup and sign-in hand-off notices
- Source:
frontend/raxx-next/lib/quiz/quizCopy.ts(QUIZ_COPY.signup,.login); drawn bycomponents/auth/SignupForm.tsxandLoginForm.tsx - Route and flags:
/signup?from=startand/loginwhen answers are held in the tab. Flagonboarding_quiz_v1. - Card and PR: #4823 (#4903), #4826 (#4907)
- Owner: Copy:
marketing-strategist(drafts; ADR-0152 section 2.7). Decision authority: Kristerpher. Legal clearance: counsel via #3141. Built by engineering from the frozen design (docs/design/funnel-v2/). - Status of every row below: RENDERED-NEUTRAL: ships behind a default-OFF flag, not counsel-cleared, parallel review requested
- Note: The rest of the signup and sign-in copy (passkey steps, backup codes, recovery warnings) pre-dates the funnel and is not part of this inventory.
| ID | Key | String as shown | Touches |
|---|---|---|---|
| QS-001 | QUIZ_COPY.signup.readyTitle |
Your answers are ready. |
- |
| QS-002 | QUIZ_COPY.signup.readyBody |
They are held in this browser tab and stored on your profile once your account exists. |
G2, G8 |
| QS-003 | QUIZ_COPY.signup.noneTitle |
No saved answers found in this browser. |
G8 |
| QS-004 | QUIZ_COPY.signup.noneBody |
Your setup uses default settings. You can change it any time in Settings. |
- |
| QS-005 | QUIZ_COPY.signup.privacyLink |
Privacy policy |
G8 |
| QS-006 | QUIZ_COPY.signup.passkeyLine |
Your answers stay in this tab while you finish. |
G8 |
| QS-007 | QUIZ_COPY.signup.saving |
Saving your setup to your profile... |
G8 |
| QS-008 | QUIZ_COPY.signup.failedTitle |
Your setup is not saved yet. |
G8 |
| QS-009 | QUIZ_COPY.signup.failedBody |
Your answers are still in this tab. Try again, or continue. Continuing keeps them here until they are saved. |
G8 |
| QS-010 | QUIZ_COPY.signup.tryAgain |
Try again |
- |
| QS-011 | QUIZ_COPY.signup.continueAnyway |
Continue |
- |
| QS-012 | QUIZ_COPY.login.title |
You have answers saved in this tab. |
G8 |
| QS-013 | QUIZ_COPY.login.body |
Signing in keeps this account's own saved answers and clears the ones held here. Nothing is overwritten. |
G8 |
| QS-014 | QUIZ_COPY.login.createdHereBody |
Signing in to the account you just created stores them on its profile. Signing in to any other account clears them. |
G8 |
A6. Plan screen ("Your starting setup")
- Source:
frontend/raxx-next/lib/plan/planCopy.ts(PLAN_COPY) and display helpers inlib/plan/planModel.ts; rendered bycomponents/plan/PlanScreen.tsx(one inlinearia-label, "Raxx home") - Route and flags:
/start/plan(anonymous). Flagonboarding_plan_v1(default OFF; its flag comment lists #4835, #4828 and the dashboard benchmark tile as ON prerequisites). - Card and PR: #4827 (#4910)
- Owner: Copy:
marketing-strategist(drafts; ADR-0152 section 2.7). Decision authority: Kristerpher. Legal clearance: counsel via #3141. Built by engineering from the frozen design (docs/design/funnel-v2/). - Status of every row below: RENDERED-NEUTRAL: ships behind a default-OFF flag, not counsel-cleared, parallel review requested
- Note: The screen echoes the visitor's own quiz answers in templated text. The five journal prompts are chosen by the style answer id; nothing is generated. The "Pinned to your dashboard" section describes a benchmark tile that is not built yet (second PR on #4827).
| ID | Key | String as shown | Touches |
|---|---|---|---|
| PLN-001 | PLAN_COPY.metaTitle |
Your starting setup — Raxx |
- |
| PLN-002 | PLAN_COPY.title |
Your starting setup |
- |
| PLN-003 | PLAN_COPY.sub |
Built from the answers you gave. Nothing here is a recommendation. You can change any of it later in Settings. |
G5, G9 |
| PLN-004 | PLAN_COPY.back |
Back to questions |
- |
| PLN-005 | PLAN_COPY.sections.instruments |
Instruments |
G4 |
| PLN-006 | PLAN_COPY.sections.howYouTrade |
How you trade |
- |
| PLN-007 | PLAN_COPY.sections.journal |
Journal prompt |
- |
| PLN-008 | PLAN_COPY.sections.habit |
Habit you chose to track |
G1 |
| PLN-009 | PLAN_COPY.sections.pinned |
Pinned to your dashboard |
- |
| PLN-010 | PLAN_COPY.rows.experience |
Experience |
- |
| PLN-011 | PLAN_COPY.rows.style |
Style |
- |
| PLN-012 | PLAN_COPY.notAnswered |
Not answered yet. |
- |
| PLN-013 | PLAN_COPY.defaultSetting |
Default setting - change anytime. |
- |
| PLN-014 | PLAN_COPY.journal.templates.intraday |
At the end of each day, record the trades you closed and whether each matched your own rule. |
G1 |
| PLN-015 | PLAN_COPY.journal.templates.swing |
When you close a position, record how long you held it and whether it matched your own rule. |
G1, G8 |
| PLN-016 | PLAN_COPY.journal.templates.position |
Each week, review the positions you hold and record any changes you made and why. |
- |
| PLN-017 | PLAN_COPY.journal.templates.long_term |
Each month, review the positions you hold and record any changes you made and why. |
- |
| PLN-018 | PLAN_COPY.journal.templates.not_sure |
After you close a trade, record what you did and whether it matched your own rule. |
G1 |
| PLN-019 | PLAN_COPY.journal.note |
Chosen from your style answer. |
- |
| PLN-020 | PLAN_COPY.habit.chose |
You chose to track: |
G1 |
| PLN-021 | PLAN_COPY.habit.notSure |
Not sure yet. |
G1 |
| PLN-022 | PLAN_COPY.benchmark.label |
Benchmark you set |
G1 |
| PLN-023 | PLAN_COPY.benchmark.compare |
How your results compare to the benchmark you set, after the fact. No trades are recorded yet, so there is nothing to compare. The comparison appears here once trades are recorded. |
G1, G2 |
| PLN-024 | PLAN_COPY.actions.createAccount |
Create account |
- |
| PLN-025 | PLAN_COPY.actions.editAnswers |
Edit answers |
- |
| PLN-026 | PLAN_COPY.stored.line |
Your answers are stored on your profile when you create an account. |
G8 |
| PLN-027 | PLAN_COPY.stored.privacyLink |
Privacy policy |
G8 |
| PLN-028 | PLAN_COPY.signIn.prompt |
Have an account? |
- |
| PLN-029 | PLAN_COPY.signIn.link |
Sign in |
- |
| PLN-030 | PLAN_COPY.signIn.after |
Signing in keeps that account's saved answers. |
G8 |
| PLN-031 | PLAN_COPY.empty.sub |
You have not answered any questions yet, so there is nothing to show here. |
- |
| PLN-032 | PLAN_COPY.empty.answer |
Answer the questions |
- |
| PLN-033 | PLAN_COPY.empty.continueDefaults |
Continue with default settings |
- |
| PLN-034 | PLAN_COPY.loading.label |
Reading your answers from this tab |
G8 |
| PLN-035 | PLAN_COPY.unreadable.title |
Your saved answers could not be read. |
G8 |
| PLN-036 | PLAN_COPY.unreadable.body |
They may have been cleared or changed in this browser. Nothing was sent anywhere. |
G8 |
| PLN-037 | planModel.benchmarkLabel({value: 2.5, unit: "pct_month"}) -- shape of the echoed number |
2.5 percent per month |
G1, G7 |
| PLN-038 | planModel.styleLabel("swing") -- label shape |
Swing: held for days to weeks |
- |
A7. Paywall (web)
- Source:
frontend/raxx-next/lib/paywall/paywallCopy.ts(PAYWALL_COPY); every amount and day count comes fromlib/paywall/priceConfig.ts(Pro $39 per month or $390 per year, 7-day trial, reminder on day 5, Pro+ $79, Founders $29 for 6 months) - Route and flags:
/start/paywall(signed in). Shown only whenonboarding_paywall_v1ANDFLAG_ANTLERS_BILLING_SELF_SERVICEare ON; otherwise skipped and the user continues as Free. Theonboarding_paywall_v1Raptor flag and its console migration are in the open PR for #4831, not on develop. - Card and PR: #4830 (#4909); numbers and mechanics from ADR-0152 (#4820, #4878)
- Owner: Wording:
marketing-strategist(the Pro feature-list slot is absent until they supply copy). Prices, trial length and Founders rate: Kristerpher, final decisions 2026-10-29 (epic #4818, ADR-0152). Legal clearance: counsel via #3141. - Status of every row below: RENDERED-NEUTRAL: ships behind a default-OFF flag, not counsel-cleared, parallel review requested. One exception: PAY-059 is HELD (see HELD-09) and is not rendered.
- Note: Trial rows, the "7 days free" tag and the trial button render only when the entitlement state backs a trial (
trial_eligible). That field is added by the open #4831 PRs, so on develop the trial wording is not reachable end to end. The journal line is absent from the screen: PAY-059 below lists the string in its code position only so the key is not lost, and it is the same string as HELD-09.
| ID | Key | String as shown | Touches |
|---|---|---|---|
| PAY-001 | PAYWALL_COPY.metaTitle |
Choose a plan — Raxx |
G1p |
| PAY-002 | PAYWALL_COPY.title |
Choose a plan |
G1p |
| PAY-003 | PAYWALL_COPY.sub |
Choose a plan, or continue on Free. You can change this any time in Settings. |
G1p, G7 |
| PAY-004 | PAYWALL_COPY.homeLabel |
Raxx home |
- |
| PAY-005 | PAYWALL_COPY.closeLabel |
Close and continue with Free |
G7 |
| PAY-006 | PAYWALL_COPY.planGroup |
Plan |
G1p |
| PAY-007 | PAYWALL_COPY.billingGroup |
Billing |
G7 |
| PAY-008 | PAYWALL_COPY.monthly |
Monthly |
G7 |
| PAY-009 | PAYWALL_COPY.annual |
Annual |
G7 |
| PAY-010 | PAYWALL_COPY.annualSub() |
About 2 months free |
G7 |
| PAY-011 | PAYWALL_COPY.annualNote() |
Equal to 10 months of $39. About 2 months free. |
G7 |
| PAY-012 | PAYWALL_COPY.pro.name |
Pro |
G7 |
| PAY-013 | PAYWALL_COPY.pro.trialTag |
7 days free |
G7 |
| PAY-014 | PAYWALL_COPY.pro.price("month").amount |
$39 |
G7 |
| PAY-015 | PAYWALL_COPY.pro.price("month").unit |
per month |
G7 |
| PAY-016 | PAYWALL_COPY.pro.price("year").amount |
$390 |
G7 |
| PAY-017 | PAYWALL_COPY.pro.price("year").unit |
per year |
G7 |
| PAY-018 | PAYWALL_COPY.pro.trialLabel |
Pro trial timeline |
G7 |
| PAY-019 | PAYWALL_COPY.pro.plainLabel |
Pro billing |
G7 |
| PAY-020 | PAYWALL_COPY.trialTimeline.todayLabel |
Today |
- |
| PAY-021 | PAYWALL_COPY.trialTimeline.todayBody |
Pro features unlock. |
G2, G7 |
| PAY-022 | PAYWALL_COPY.trialTimeline.reminderLabel |
Day 5 |
- |
| PAY-023 | PAYWALL_COPY.trialTimeline.reminderBody |
We email you before your trial ends. |
G7 |
| PAY-024 | PAYWALL_COPY.trialTimeline.chargeLabel |
Day 7 |
- |
| PAY-025 | PAYWALL_COPY.trialTimeline.chargeBody("month") |
Pro begins at $39 per month. Renews monthly until canceled. |
G7 |
| PAY-026 | PAYWALL_COPY.trialTimeline.chargeBody("year") |
Pro begins at $390 per year. Renews yearly until canceled. |
G7 |
| PAY-027 | PAYWALL_COPY.plainPro("month") |
Pro begins today at $39 per month. Renews monthly until canceled. |
G7 |
| PAY-028 | PAYWALL_COPY.plainPro("year") |
Pro begins today at $390 per year. Renews yearly until canceled. |
G7 |
| PAY-029 | PAYWALL_COPY.cancel.lead |
Cancel anytime in |
G7 |
| PAY-030 | PAYWALL_COPY.cancel.link |
Settings > Billing |
G7 |
| PAY-031 | PAYWALL_COPY.proPlus.name |
Pro+ |
G7 |
| PAY-032 | PAYWALL_COPY.proPlus.price.amount |
$79 |
G7 |
| PAY-033 | PAYWALL_COPY.proPlus.price.unit |
per month |
G7 |
| PAY-034 | PAYWALL_COPY.proPlus.foundersTag |
Founders |
G7 |
| PAY-035 | PAYWALL_COPY.proPlus.foundersNote |
$29 per month for the first 6 months, then $79 per month. |
G7 |
| PAY-036 | PAYWALL_COPY.proPlus.summaryLabel |
Pro+ billing summary |
G7 |
| PAY-037 | PAYWALL_COPY.proPlus.rows(true)[0].label |
Today |
- |
| PAY-038 | PAYWALL_COPY.proPlus.rows(true)[0].body |
Pro+ begins. $29 is charged. |
G7 |
| PAY-039 | PAYWALL_COPY.proPlus.rows(true)[1].label |
6 months |
- |
| PAY-040 | PAYWALL_COPY.proPlus.rows(true)[1].body |
$79 per month from the seventh month. Renews monthly until canceled. |
G7 |
| PAY-041 | PAYWALL_COPY.proPlus.rows(false)[0].label |
Today |
- |
| PAY-042 | PAYWALL_COPY.proPlus.rows(false)[0].body |
Pro+ begins. $79 is charged. |
G7 |
| PAY-043 | PAYWALL_COPY.proPlus.rows(false)[1].label |
Monthly |
G7 |
| PAY-044 | PAYWALL_COPY.proPlus.rows(false)[1].body |
Renews at $79 per month until canceled. |
G7 |
| PAY-045 | PAYWALL_COPY.proPlus.anytimeLabel |
Anytime |
- |
| PAY-046 | PAYWALL_COPY.proPlus.anytimeLead |
Cancel in |
G7 |
| PAY-047 | PAYWALL_COPY.choice.startTrial |
Start 7-day free trial |
G7 |
| PAY-048 | PAYWALL_COPY.choice.subscribePro |
Subscribe to Pro |
G7 |
| PAY-049 | PAYWALL_COPY.choice.subscribeProPlus |
Subscribe to Pro+ |
G7 |
| PAY-050 | PAYWALL_COPY.choice.free |
Continue with Free |
G7 |
| PAY-051 | PAYWALL_COPY.choice.continue |
Continue |
- |
| PAY-052 | PAYWALL_COPY.choice.opening |
Opening checkout |
G7 |
| PAY-053 | PAYWALL_COPY.disclosure.proTrial("month") |
7 days free, then $39 per month. Card required to start. Nothing is charged today. Renews until canceled. Cancel anytime. |
G7 |
| PAY-054 | PAYWALL_COPY.disclosure.proTrial("year") |
7 days free, then $390 per year. Card required to start. Nothing is charged today. Renews until canceled. Cancel anytime. |
G7 |
| PAY-055 | PAYWALL_COPY.disclosure.proPlain("month") |
$39 per month. Renews until canceled. Cancel anytime. |
G7 |
| PAY-056 | PAYWALL_COPY.disclosure.proPlain("year") |
$390 per year. Renews until canceled. Cancel anytime. |
G7 |
| PAY-057 | PAYWALL_COPY.disclosure.proPlus(true) |
$29 per month for the first 6 months, then $79 per month. Renews until canceled. Cancel anytime. |
G7 |
| PAY-058 | PAYWALL_COPY.disclosure.proPlus(false) |
$79 per month. Renews until canceled. Cancel anytime. |
G7 |
| PAY-059 | PAYWALL_COPY.journalLine (gated by JOURNAL_LINE_CONFIRMED = false) |
HELD (see HELD-09), not rendered, not counted. Your journal and history always stay yours and stay viewable on Free. |
G7 |
| PAY-060 | PAYWALL_COPY.links.terms |
Terms |
- |
| PAY-061 | PAYWALL_COPY.links.privacy |
Privacy |
G8 |
| PAY-062 | PAYWALL_COPY.loadingLabel |
Loading plans and prices |
G1p, G7 |
| PAY-063 | PAYWALL_COPY.readFailed.title |
Prices could not be loaded. |
G7 |
| PAY-064 | PAYWALL_COPY.readFailed.body |
Nothing was charged. Try again, or continue on Free. |
G7 |
| PAY-065 | PAYWALL_COPY.readFailed.retry |
Try again |
- |
| PAY-066 | PAYWALL_COPY.checkoutError.pro |
Pro checkout is not available right now. |
G7 |
| PAY-067 | PAYWALL_COPY.checkoutError.proPlus |
Pro+ checkout is not available right now. |
G7 |
| PAY-068 | PAYWALL_COPY.checkoutError.network |
Checkout could not be reached. |
G7 |
| PAY-069 | PAYWALL_COPY.checkoutError.body |
Nothing was charged. Try again, or continue on Free. |
G7 |
| PAY-070 | PAYWALL_COPY.checkoutError.retry |
Try again |
- |
| PAY-071 | PAYWALL_COPY.returned.title |
Checkout was canceled. |
G7 |
| PAY-072 | PAYWALL_COPY.returned.body |
Nothing was charged. Your selection is kept. |
G7 |
| PAY-073 | PAYWALL_COPY.priceUpdated.title |
The plan details were updated. |
G1p |
| PAY-074 | PAYWALL_COPY.priceUpdated.body |
Nothing was charged. Check the price below, then subscribe or continue on Free. |
G7 |
| PAY-075 | PAYWALL_COPY.subscribed.title(null) |
You already have a plan |
G1p |
| PAY-076 | PAYWALL_COPY.subscribed.title("Pro") |
You already have Pro |
G7 |
| PAY-077 | PAYWALL_COPY.subscribed.body(null) |
This account has an active subscription, so there is nothing to choose. |
G7 |
| PAY-078 | PAYWALL_COPY.subscribed.body("Pro") |
This account has an active Pro subscription, so there is nothing to choose. |
G7 |
A8. Confirmation
- Source:
frontend/raxx-next/lib/confirmation/confirmationCopy.ts(CONFIRMATION_COPY,planStatusText); plan sentences are built from the billing read, shown here for each phase - Route and flags:
/start/done(signed in). 404 when the funnel is not live; skipped whenonboarding_paywall_v1is OFF or first run is finished. - Card and PR: #4834 (#4911)
- Owner: Copy:
marketing-strategist(drafts; ADR-0152 section 2.7). Decision authority: Kristerpher. Legal clearance: counsel via #3141. Built by engineering from the frozen design (docs/design/funnel-v2/). - Status of every row below: RENDERED-NEUTRAL: ships behind a default-OFF flag, not counsel-cleared, parallel review requested
- Note: The module deliberately avoids "your plan" ("subscription", not "plan", in the confirming line) but still uses "Plan status" and "payment issue with this plan". See main packet question on the scope of the "plan" hold.
| ID | Key | String as shown | Touches |
|---|---|---|---|
| CNF-001 | CONFIRMATION_COPY.metaTitle |
You are in — Raxx |
- |
| CNF-002 | CONFIRMATION_COPY.title |
You are in |
- |
| CNF-003 | CONFIRMATION_COPY.homeLabel |
Raxx home |
- |
| CNF-004 | CONFIRMATION_COPY.setup.label |
Setup |
- |
| CNF-005 | CONFIRMATION_COPY.setup.lead |
Your setup is ready: |
- |
| CNF-006 | CONFIRMATION_COPY.setup.rows.instruments |
Instruments |
G4 |
| CNF-007 | CONFIRMATION_COPY.setup.rows.style |
Style |
- |
| CNF-008 | CONFIRMATION_COPY.setup.rows.rule |
Personal rule |
G1 |
| CNF-009 | CONFIRMATION_COPY.setup.defaultSetting |
Default setting - change anytime. |
- |
| CNF-010 | CONFIRMATION_COPY.setup.loadingLabel |
Reading your setup |
- |
| CNF-011 | CONFIRMATION_COPY.setup.notSaved.title |
Your setup is not saved yet. |
G8 |
| CNF-012 | CONFIRMATION_COPY.setup.notSaved.body |
Your answers are still in this tab. Try again, or continue. |
G8 |
| CNF-013 | CONFIRMATION_COPY.setup.notSaved.retry |
Try again |
- |
| CNF-014 | CONFIRMATION_COPY.setup.unavailable.title |
Your setup could not be read right now. |
- |
| CNF-015 | CONFIRMATION_COPY.setup.unavailable.body |
Your account is active. Try again, or open the dashboard. |
- |
| CNF-016 | CONFIRMATION_COPY.setup.unavailable.retry |
Try again |
- |
| CNF-017 | CONFIRMATION_COPY.plan.heading |
Plan status |
G1p |
| CNF-018 | CONFIRMATION_COPY.plan.free |
Free |
G7 |
| CNF-019 | CONFIRMATION_COPY.plan.pro |
Pro |
G7 |
| CNF-020 | CONFIRMATION_COPY.plan.proPlus |
Pro+ |
G7 |
| CNF-021 | CONFIRMATION_COPY.plan.proTrial |
Pro trial |
G7 |
| CNF-022 | CONFIRMATION_COPY.plan.trialCanceled |
Trial canceled |
G7 |
| CNF-023 | CONFIRMATION_COPY.plan.founders |
Founders |
G7 |
| CNF-024 | CONFIRMATION_COPY.plan.loadingLabel |
Reading plan status |
G1p |
| CNF-025 | CONFIRMATION_COPY.plan.unavailable.title |
Plan status is not available right now. |
G1p |
| CNF-026 | CONFIRMATION_COPY.plan.unavailable.body |
Your account is active. Try again, or open the dashboard. |
- |
| CNF-027 | CONFIRMATION_COPY.plan.unavailable.retry |
Try again |
- |
| CNF-028 | CONFIRMATION_COPY.plan.confirming("pro") |
Confirming your Pro subscription... |
G7 |
| CNF-029 | CONFIRMATION_COPY.plan.confirming("pro_plus") |
Confirming your Pro+ subscription... |
G7 |
| CNF-030 | CONFIRMATION_COPY.plan.confirming(null) |
Confirming your subscription... |
G7 |
| CNF-031 | CONFIRMATION_COPY.plan.stillConfirming.title |
Still confirming. |
- |
| CNF-032 | CONFIRMATION_COPY.plan.stillConfirming.lead |
The dashboard is open to you. Plan status appears in |
G1p |
| CNF-033 | CONFIRMATION_COPY.plan.stillConfirming.tail |
once it is confirmed. |
G2 |
| CNF-034 | CONFIRMATION_COPY.plan.stillConfirming.bodyNoLink |
The dashboard is open to you. Plan status is not confirmed yet. |
G1p |
| CNF-035 | CONFIRMATION_COPY.plan.billingLeads.cancel |
Cancel anytime in |
G7 |
| CNF-036 | CONFIRMATION_COPY.plan.billingLeads.manage |
Manage in |
- |
| CNF-037 | CONFIRMATION_COPY.plan.billingLeads.payment |
Update your payment method in |
G7 |
| CNF-038 | CONFIRMATION_COPY.unverified.sub |
Your email address is not confirmed yet. The dashboard opens after you confirm it. |
- |
| CNF-039 | CONFIRMATION_COPY.unverified.confirm |
Confirm your email |
- |
| CNF-040 | CONFIRMATION_COPY.actions.dashboard |
Open dashboard |
- |
| CNF-041 | CONFIRMATION_COPY.actions.settings |
Review setup in Settings |
- |
| CNF-042 | planStatusText(free).tag |
Free |
G7 |
| CNF-043 | planStatusText(trial, monthly, with end date).tag |
Pro trial |
G7 |
| CNF-044 | planStatusText(trial, monthly, with end date).line |
Ends Nov 7, 2026. On that date Pro begins at $39 per month unless you cancel before then. |
G7 |
| CNF-045 | planStatusText(trial, monthly, with end date).billingLead |
Cancel anytime in Settings > Billing |
G7 |
| CNF-046 | planStatusText(trial, annual, with end date).tag |
Pro trial |
G7 |
| CNF-047 | planStatusText(trial, annual, with end date).line |
Ends Nov 7, 2026. On that date Pro begins at $390 per year unless you cancel before then. |
G7 |
| CNF-048 | planStatusText(trial, annual, with end date).billingLead |
Cancel anytime in Settings > Billing |
G7 |
| CNF-049 | planStatusText(trial, no end date).tag |
Pro trial |
G7 |
| CNF-050 | planStatusText(trial, no end date).line |
Your Pro trial is active. Pro begins when it ends unless you cancel before then. |
G7 |
| CNF-051 | planStatusText(trial, no end date).billingLead |
Cancel anytime in Settings > Billing |
G7 |
| CNF-052 | planStatusText(trial canceled, with date).tag |
Trial canceled |
G7 |
| CNF-053 | planStatusText(trial canceled, with date).line |
Pro access continues until Nov 7, 2026. You are not charged. |
G7 |
| CNF-054 | planStatusText(trial canceled, with date).billingLead |
Manage in Settings > Billing |
G7 |
| CNF-055 | planStatusText(trial canceled, no date).tag |
Trial canceled |
G7 |
| CNF-056 | planStatusText(trial canceled, no date).line |
Pro access continues until the trial ends. You are not charged. |
G7 |
| CNF-057 | planStatusText(trial canceled, no date).billingLead |
Manage in Settings > Billing |
G7 |
| CNF-058 | planStatusText(Pro active, monthly, with date).tag |
Pro |
G7 |
| CNF-059 | planStatusText(Pro active, monthly, with date).line |
Renews Nov 7, 2026 at $39 per month. |
G7 |
| CNF-060 | planStatusText(Pro active, monthly, with date).billingLead |
Manage in Settings > Billing |
G7 |
| CNF-061 | planStatusText(Pro active, annual, with date).tag |
Pro |
G7 |
| CNF-062 | planStatusText(Pro active, annual, with date).line |
Renews Nov 7, 2026 at $390 per year. |
G7 |
| CNF-063 | planStatusText(Pro active, annual, with date).billingLead |
Manage in Settings > Billing |
G7 |
| CNF-064 | planStatusText(Pro active, no interval, with date).tag |
Pro |
G7 |
| CNF-065 | planStatusText(Pro active, no interval, with date).line |
Renews Nov 7, 2026. |
G7 |
| CNF-066 | planStatusText(Pro active, no interval, with date).billingLead |
Manage in Settings > Billing |
G7 |
| CNF-067 | planStatusText(Pro+ active, with date).tag |
Pro+ |
G7 |
| CNF-068 | planStatusText(Pro+ active, with date).line |
Renews Nov 7, 2026 at $79 per month. |
G7 |
| CNF-069 | planStatusText(Pro+ active, with date).billingLead |
Manage in Settings > Billing |
G7 |
| CNF-070 | planStatusText(Pro+ Founders active).tag |
Pro+ |
G7 |
| CNF-071 | planStatusText(Pro+ Founders active).line |
$29 per month for the first 6 months, then $79 per month. |
G7 |
| CNF-072 | planStatusText(Pro+ Founders active).billingLead |
Manage in Settings > Billing |
G7 |
| CNF-073 | planStatusText(Pro canceled, with date).tag |
Pro |
G7 |
| CNF-074 | planStatusText(Pro canceled, with date).line |
Pro access continues until Nov 7, 2026. It does not renew. |
G7 |
| CNF-075 | planStatusText(Pro canceled, with date).billingLead |
Manage in Settings > Billing |
G7 |
| CNF-076 | planStatusText(Pro+ canceled, no date).tag |
Pro+ |
G7 |
| CNF-077 | planStatusText(Pro+ canceled, no date).line |
Pro+ access continues until the end of the billing period. It does not renew. |
G7 |
| CNF-078 | planStatusText(Pro+ canceled, no date).billingLead |
Manage in Settings > Billing |
G7 |
| CNF-079 | planStatusText(payment issue).tag |
Pro |
G7 |
| CNF-080 | planStatusText(payment issue).line |
There is a payment issue with this plan. |
G1p, G7 |
| CNF-081 | planStatusText(payment issue).billingLead |
Update your payment method in Settings > Billing |
G7 |
A9. Settings: Setup answers tab
- Source:
frontend/raxx-next/lib/quiz/setupAnswersCopy.ts(SETUP_ANSWERS_COPY); option labels reuseQUIZ_COPY - Route and flags:
/settings?tab=setup-answers. Tab hidden entirely whileonboarding_quiz_v1is OFF. - Card and PR: #4824 (#4905)
- Owner: Copy:
marketing-strategist(drafts; ADR-0152 section 2.7). Decision authority: Kristerpher. Legal clearance: counsel via #3141. Built by engineering from the frozen design (docs/design/funnel-v2/). - Status of every row below: RENDERED-NEUTRAL: ships behind a default-OFF flag, not counsel-cleared, parallel review requested
| ID | Key | String as shown | Touches |
|---|---|---|---|
| SET-001 | SETUP_ANSWERS_COPY.tabLabel |
Setup answers |
- |
| SET-002 | SETUP_ANSWERS_COPY.loadingLabel |
Loading your setup answers |
- |
| SET-003 | SETUP_ANSWERS_COPY.intro |
These answers describe how you set up Raxx. They are stored on your profile so you can change them any time. Changing them does not change your risk settings. |
G8 |
| SET-004 | SETUP_ANSWERS_COPY.introEmpty |
No setup answers yet. Add any you like; each is optional. |
- |
| SET-005 | SETUP_ANSWERS_COPY.deletion |
Deleting your account removes them. |
G8 |
| SET-006 | SETUP_ANSWERS_COPY.privacyLink |
Privacy policy |
G8 |
| SET-007 | SETUP_ANSWERS_COPY.rows.instruments |
Instruments |
G4 |
| SET-008 | SETUP_ANSWERS_COPY.rows.experience |
Experience |
- |
| SET-009 | SETUP_ANSWERS_COPY.rows.style |
Style |
- |
| SET-010 | SETUP_ANSWERS_COPY.rows.habit |
Habit to track |
G1 |
| SET-011 | SETUP_ANSWERS_COPY.rows.goal |
Benchmark |
G1 |
| SET-012 | SETUP_ANSWERS_COPY.notSet |
Not set |
- |
| SET-013 | SETUP_ANSWERS_COPY.benchmarkNote |
Your own number. Raxx shows how your recorded results compare with it, after the fact. |
G1, G2 |
| SET-014 | SETUP_ANSWERS_COPY.actions.edit |
Edit |
- |
| SET-015 | SETUP_ANSWERS_COPY.actions.add |
Add |
- |
| SET-016 | SETUP_ANSWERS_COPY.actions.clear |
Clear |
- |
| SET-017 | SETUP_ANSWERS_COPY.actions.save |
Save |
G8 |
| SET-018 | SETUP_ANSWERS_COPY.actions.saving |
Saving |
- |
| SET-019 | SETUP_ANSWERS_COPY.actions.cancel |
Cancel |
G7 |
| SET-020 | SETUP_ANSWERS_COPY.actions.clearAll |
Clear all answers |
- |
| SET-021 | SETUP_ANSWERS_COPY.editor.chooseOne |
Choose an option, or cancel. |
G7 |
| SET-022 | SETUP_ANSWERS_COPY.editor.chooseAtLeastOne |
Choose at least one, or cancel. |
G7 |
| SET-023 | SETUP_ANSWERS_COPY.saved("Style").title |
Saved. |
G8 |
| SET-024 | SETUP_ANSWERS_COPY.saved("Style").body |
Style updated. |
- |
| SET-025 | SETUP_ANSWERS_COPY.cleared("Style").title |
Cleared. |
- |
| SET-026 | SETUP_ANSWERS_COPY.cleared("Style").body |
Style removed from your profile. Add it again any time. |
G8 |
| SET-027 | SETUP_ANSWERS_COPY.saveFailed.title |
That change did not save. |
G8 |
| SET-028 | SETUP_ANSWERS_COPY.saveFailed.body |
Nothing was changed. Try again. |
- |
| SET-029 | SETUP_ANSWERS_COPY.clearFailed.title |
That answer was not cleared. |
- |
| SET-030 | SETUP_ANSWERS_COPY.clearFailed.body |
Nothing was changed. Try again. |
- |
| SET-031 | SETUP_ANSWERS_COPY.clearAll.title |
Clear all setup answers? |
- |
| SET-032 | SETUP_ANSWERS_COPY.clearAll.body |
This removes them from your profile. Your risk settings are not changed. |
G8 |
| SET-033 | SETUP_ANSWERS_COPY.clearAll.confirm |
Clear all answers |
- |
| SET-034 | SETUP_ANSWERS_COPY.clearAll.cancel |
Cancel |
G7 |
| SET-035 | SETUP_ANSWERS_COPY.clearAll.done.title |
Cleared. |
- |
| SET-036 | SETUP_ANSWERS_COPY.clearAll.done.body |
Your setup answers were removed from your profile. |
G8 |
| SET-037 | SETUP_ANSWERS_COPY.clearAll.failed.title |
The answers were not cleared. |
- |
| SET-038 | SETUP_ANSWERS_COPY.clearAll.failed.body |
Nothing was changed. Try again. |
- |
| SET-039 | SETUP_ANSWERS_COPY.loadError.title |
Your setup answers could not be loaded. |
- |
| SET-040 | SETUP_ANSWERS_COPY.loadError.body |
Nothing was changed. |
- |
| SET-041 | SETUP_ANSWERS_COPY.loadError.retry |
Try again |
- |
| SET-042 | SETUP_ANSWERS_COPY.reference("RAX-ONB-1a2b3c4d") |
Reference RAX-ONB-1a2b3c4d. |
- |
| SET-043 | SETUP_ANSWERS_COPY.reasonBody.offline |
Raxx could not be reached. Nothing was changed. Check your connection, then try again. |
- |
| SET-044 | SETUP_ANSWERS_COPY.reasonBody.rateLimited |
Too many requests in a short time. Nothing was changed. Wait a moment, then try again. |
- |
| SET-045 | SETUP_ANSWERS_COPY.reasonBody.signedOut |
Your session has ended. Nothing was changed. |
- |
| SET-046 | SETUP_ANSWERS_COPY.signIn |
Sign in |
- |
A10. Inline strings in the funnel wizard steps (not in a copy module)
- Source:
frontend/raxx-next/components/wizard/steps/WelcomeStep.tsx,DoneStep.tsx,frontend/raxx-next/components/wizard/WizardShell.tsx,app/(public)/start/quiz/[n]/page.tsx - Route and flags:
/wizardwhile the funnel quiz is live. - Card and PR: #4823 (#4903), #4826 (#4907)
- Owner: Copy:
marketing-strategist(drafts; ADR-0152 section 2.7). Decision authority: Kristerpher. Legal clearance: counsel via #3141. Built by engineering from the frozen design (docs/design/funnel-v2/). - Status of every row below: RENDERED-NEUTRAL: ships behind a default-OFF flag, not counsel-cleared, parallel review requested
- Note: Inline copy: an edit here is not caught by a copy-module test. These files, and
app/(public)/start, are on the staleness check list in the main packet (section 11).WizardShell.tsxalso holds the existing wizard's own progress label, loading text and save banner; those pre-date the funnel and are not inventoried here.
| ID | Key | String as shown | Touches |
|---|---|---|---|
| WIZ-001 | WelcomeStep (funnel variant) h1 |
Welcome to Raxx |
- |
| WIZ-002 | WelcomeStep (funnel variant) sub |
(QUIZ_COPY.wizard.welcomeSub, see QW rows) |
- |
| WIZ-003 | WelcomeStep (funnel variant) button |
Get started |
- |
| WIZ-004 | DoneStep (funnel variant) h1 |
You are all set |
- |
| WIZ-005 | DoneStep (funnel variant) sub |
Your account is configured. Head to the dashboard to explore. |
- |
| WIZ-006 | DoneStep (funnel variant) status |
Taking you to the dashboard… |
- |
| WIZ-007 | DoneStep (funnel variant) button |
Go to dashboard now |
- |
| WIZ-008 | DoneStep recap chips |
(the user's own non-default answers, shown with the QUIZ_COPY option labels: instruments, experience, style) |
G4 |
| WIZ-009 | app/(public)/start/quiz/[n]/page.tsx metadata.title |
Setup questions |
- |
| WIZ-010 | components/wizard/WizardShell.tsx:374 LOAD_ERROR payload (drawn at :660 in a danger alert when the saved setup progress cannot be read) |
Could not load your setup progress. Refresh to try again. |
G8 |
| WIZ-011 | components/wizard/WizardShell.tsx:420 save error message when the server returns a coded error |
Save failed (<code>) (<code> is the server error code, or unknown). Held in wizard state; the funnel's save alert shows QW-007 and QW-008 instead, and no component draws this text today. |
G8 |
| WIZ-012 | components/wizard/WizardShell.tsx:423 save error fallback |
Save failed (used when the thrown value is not an Error; when it is an Error without a server code, its own message is used instead. Held in wizard state and not drawn today, as WIZ-011) |
G8 |
A11. Existing risk-profile step, now on the single first-run path
- Source:
frontend/raxx-next/components/onboarding/RiskProfileView.tsx,RiskProfilePage.tsx - Route and flags:
/onboarding/risk(standalone, optional, never forced). FlagFLAG_RISK_PROFILE_CE_PORT. - Card and PR: Pre-existing copy. #4826 (#4907) changed only the sub line, the heading level and the loading status. Included because the funnel now routes through this page and its option descriptions describe sizing and "variance".
- Owner: Pre-existing; no funnel owner. Flagged for counsel because the Aggressive/Conservative descriptions read as sizing guidance.
- Status of every row below: EXISTING-COPY: not added by the funnel; not counsel-cleared
| ID | Key | String as shown | Touches |
|---|---|---|---|
| RSK-001 | RiskProfileView h1 |
Risk profile |
G8 |
| RSK-002 | RiskProfileView sub (replaced in #4826) |
This tells Raxx how to size positions relative to your account. |
G6 |
| RSK-003 | RiskProfileView RISK_OPTIONS.conservative |
Conservative: Smaller position sizes, tighter stops, fewer trades per session. |
G6 |
| RSK-004 | RiskProfileView RISK_OPTIONS.moderate |
Moderate: Balanced sizing with defined entry and exit rules applied consistently. |
G6 |
| RSK-005 | RiskProfileView RISK_OPTIONS.aggressive |
Aggressive: Larger allocations, wider stops, higher variance between outcomes. |
- |
| RSK-006 | RiskProfileView buttons |
Back; Skip for now; Continue; Saving… |
- |
| RSK-007 | RiskProfilePage status (added in #4826) |
Checking your saved answers… |
G8 |
| RSK-008 | RiskProfilePage error |
Could not save your selection. Your choice is noted for this session. |
G8 |
A12. iOS paywall
- Source:
ios/Raxx/Features/Billing/PaywallCopy.swift(every string derived from a price, period or offer is a pure function of the App Store product; fixed strings arestatic let), plus short literals inPaywallComponents.swift,PaywallScreen.swift,BillingView.swiftandStoreKitManager.swift - Route and flags: iOS app paywall and Billing screen. No web flag; the intro offer appears only when the App Store reports the account eligible.
- Card and PR: #4832 (#4908)
- Owner: Wording:
marketing-strategist; subscription terms in the "terms" rows are the platform-required wording (App Store Review Guideline 3.1.2). Apple is named only in that required wording (ADR-0152 section 2.7). - Status of every row below: RENDERED-NEUTRAL: ships behind a default-OFF flag, not counsel-cleared, parallel review requested
- Note: Prices in the samples are illustrative storefront values; the real strings are localized by the App Store. Spelling is "cancelled" on iOS and "canceled" on web.
| ID | Key | String as shown | Touches |
|---|---|---|---|
| IOS-001 | PaywallCopy.title |
Raxx Pro |
G7 |
| IOS-002 | PaywallCopy.lede |
Choose a plan, or continue on Free. You can change this later in Settings. |
G1p, G7 |
| IOS-003 | PaywallCopy.moreHeading |
More |
- |
| IOS-004 | PaywallCopy.otherPlansHeading |
Other plans |
G1p |
| IOS-005 | PaywallCopy.summaryHeading |
What happens |
- |
| IOS-006 | PaywallCopy.continueWithFree |
Continue with Free |
G7 |
| IOS-007 | PaywallCopy.restorePurchases |
Restore Purchases |
- |
| IOS-008 | PaywallCopy.termsOfUse |
Terms of Use |
- |
| IOS-009 | PaywallCopy.privacyPolicy |
Privacy Policy |
G8 |
| IOS-010 | PaywallCopy.manageSubscription |
Manage subscription |
G7 |
| IOS-011 | PaywallCopy.loadFailedTitle |
Plans could not be loaded. |
G1p |
| IOS-012 | PaywallCopy.loadFailedDetail |
Check your connection and try again. You can continue on Free in the meantime. |
G7 |
| IOS-013 | PaywallCopy.tryAgain |
Try again |
- |
| IOS-014 | PaywallCopy.noPlansTitle |
Plans are not available right now. |
G1p |
| IOS-015 | PaywallCopy.noPlansDetail |
You can continue on Free. |
G7 |
| IOS-016 | PaywallCopy.checkAgain |
Check again |
- |
| IOS-017 | PaywallCopy.restrictedTitle |
Purchases are turned off on this device. |
- |
| IOS-018 | PaywallCopy.restrictedDetail |
You can continue on Free. Restore Purchases is still available. |
G7 |
| IOS-019 | PaywallCopy.pendingTitle |
Waiting for approval. |
- |
| IOS-020 | PaywallCopy.pendingDetail |
Raxx stays on Free until the purchase is approved. You can keep using Raxx on Free meanwhile. |
G7 |
| IOS-021 | PaywallCopy.purchaseFailedTitle |
The purchase did not complete. |
- |
| IOS-022 | PaywallCopy.purchaseFailedDetail |
Nothing changed on your account. You can try again or continue on Free. |
G7 |
| IOS-023 | PaywallCopy.restoreFailedTitle |
Restore did not finish. |
- |
| IOS-024 | PaywallCopy.restoreNothingTitle |
No active subscription found. |
G7 |
| IOS-025 | PaywallCopy.restoreRunning |
Restoring |
- |
| IOS-026 | PaywallCopy.purchaseRunning |
Processing |
- |
| IOS-027 | PaywallCopy.continueButton |
Continue |
- |
| IOS-028 | PaywallCopy.trialStartedTitle |
Your free trial has started |
G7 |
| IOS-029 | PaywallCopy.restoredTitle |
Subscription restored |
G7 |
| IOS-030 | PaywallCopy.linkPendingTitle |
Purchase complete |
- |
| IOS-031 | PaywallCopy.linkPendingHeadline(tier) |
Pro is active on this device. (tier label: Pro or Pro+) |
G7 |
| IOS-032 | PaywallCopy.linkPendingDetail |
Linking it to your Raxx account did not finish. |
- |
| IOS-033 | PaywallCopy.linkChecking |
Checking |
- |
| IOS-034 | PaywallCopy.linkStillPending |
Still not linked to your Raxx account. |
- |
| IOS-035 | PaywallCopy.manageFootnote |
Manage or cancel in your Apple Account settings. |
G7 |
| IOS-036 | PaywallCopy.manageSheetHint |
Manage subscription opens your Apple Account subscription settings. |
G7 |
| IOS-037 | PaywallCopy.linkedAnnouncement |
Linked to your Raxx account. |
- |
| IOS-038 | PaywallCopy.planTitle(offer) |
Pro · Monthly; Pro · Annual; Pro+ · Monthly |
G7 |
| IOS-039 | PaywallCopy.priceLine(product) |
$39.00 per month (price and period come from the App Store product, storefront currency) |
G7, G8 |
| IOS-040 | PaywallCopy.renewsLine(product) |
Renews monthly until cancelled. |
G7 |
| IOS-041 | PaywallCopy.introLine(freeTrial) |
7 days free, then $39.00 per month |
G7 |
| IOS-042 | PaywallCopy.introLine(payAsYouGo) |
$29.00 per month for your first 6 months, then $79.00 per month |
G7 |
| IOS-043 | PaywallCopy.introLine(payUpFront) |
$9.00 for the first 2 months, then $39.00 per month |
G7 |
| IOS-044 | PaywallCopy.rowDetail(trial, annual) |
7 days free, then $390.00 per year ($32.50 per month) |
G7 |
| IOS-045 | PaywallCopy.rowDetail(no offer, annual) |
Renews yearly until cancelled. $32.50 per month. |
G7 |
| IOS-046 | PaywallCopy.foundersNote(offer) |
Founders offer: $29.00 per month for your first 6 months, then $79.00 per month. |
G7 |
| IOS-047 | PaywallCopy.perMonthEquivalent / monthsFree |
annual price divided by 12; a "months free" badge only when 12 minus annual/monthly is within 0.15 of a whole number of at least 1 |
G7 |
| IOS-048 | PaywallCopy.ctaTitle(trial) |
Start 7 days free |
G7 |
| IOS-049 | PaywallCopy.ctaTitle(no trial) |
Subscribe to Pro; Subscribe to Pro+ |
G7 |
| IOS-050 | PaywallCopy.pinnedLine(offer) |
7 days free, then $39.00 per month. Renews until cancelled. Cancel anytime. |
G7 |
| IOS-051 | PaywallCopy.summaryRows(trial)[0] |
Today \| Free trial starts \| Pro features are available for 7 days. |
G7 |
| IOS-052 | PaywallCopy.summaryRows(trial)[1] |
After 7 days \| $39.00 per month \| Charged to your Apple Account. Renews monthly until cancelled. |
G7 |
| IOS-053 | PaywallCopy.summaryRows(trial)[2] |
Anytime \| Cancel \| In your Apple Account settings, at least 24 hours before the trial ends or a renewal. |
G7 |
| IOS-054 | PaywallCopy.summaryRows(founders)[0] |
Today \| Founders price begins \| $29.00 per month for your first 6 months. |
G7 |
| IOS-055 | PaywallCopy.summaryRows(founders)[1] |
After 6 months \| $79.00 per month \| Renews monthly until cancelled. |
G7 |
| IOS-056 | PaywallCopy.summaryRows(founders)[2] |
Anytime \| Cancel \| In your Apple Account settings, at least 24 hours before a renewal. |
G7 |
| IOS-057 | PaywallCopy.summaryRows(plain)[0] |
Today \| Pro begins \| $39.00 is charged to your Apple Account. |
G7 |
| IOS-058 | PaywallCopy.summaryRows(plain)[1] |
Each month \| $39.00 per month \| Renews monthly until cancelled. |
G7 |
| IOS-059 | PaywallCopy.summaryRows(plain)[2] |
Anytime \| Cancel \| In your Apple Account settings, at least 24 hours before a renewal. |
G7 |
| IOS-060 | PaywallCopy.terms(trial) |
Payment is charged to your Apple Account at confirmation of purchase. The free trial lasts 7 days. The subscription renews automatically unless it is cancelled at least 24 hours before the end of the current period. Your account is charged for renewal within 24 hours before the end of the current period, at the price shown. You can manage or cancel in your Apple Account settings after purchase. |
G7 |
| IOS-061 | PaywallCopy.terms(no trial) |
The same text without the sentence "The free trial lasts 7 days." |
G7 |
| IOS-062 | PaywallCopy.completionRows |
Plan \| Pro · Monthly; Trial ends \| <date>; Then \| $39.00 per month; Renews \| <date>; Price \| $39.00 per month |
G1p, G7 |
| IOS-063 | PaywallCopy.completionTitle(subscribed, linked) |
Raxx Pro is active |
G7 |
| IOS-064 | PaywallCopy.PaywallComponents wordmark |
RAXX (placeholder wordmark, data-brand-placeholder="wordmark") |
- |
| IOS-065 | PaywallCopy.PaywallComponents accessibility labels |
Purchase links; Plans; Loading plans |
G1p |
| IOS-066 | PaywallCopy.PaywallScreen accessibility label |
Choose how to continue |
- |
| IOS-067 | PaywallCopy.BillingView |
Choose a plan; Billing (navigation title); Loading…; Raxx <tier> is active |
G1p, G7 |
| IOS-068 | StoreKitManager.swift:132 PurchaseError.notSignedIn.errorDescription |
You must be signed in to your Raxx account to make a purchase. |
- |
| IOS-069 | BillingView.swift:102 restore confirmation (account entitled) |
Subscription restored. (a literal of its own with a final period; IOS-029 is the different PaywallCopy.restoredTitle and has no period) |
G7 |
| IOS-070 | BillingView.swift:103 restore confirmation (account not entitled) |
No active subscription found. (a literal of its own in BillingView; the same text as IOS-024) |
G7 |
| IOS-071 | PaywallScreen.swift:69, :111 (zone accessibility labels read by VoiceOver on folding and wide devices) |
Plans; Summary and choices; Confirmation (Plans repeats a label already in IOS-065 but is its own literal at :111) |
G1p |
A13. Privacy policy: setup answers (already counsel-gated)
- Source:
docs/legal/policies/privacy-policy-v1.md(policy record, version 1.0.1); the live pages arefrontend/raxx-next/components/legal/PrivacyPolicyContent.tsxandfrontend/getraxx-landing/src/pages/legal/PrivacyPolicy.jsx, kept identical by a verbatim-port guard - Route and flags:
/privacyon raxx.app and getraxx.com. The setup-answers text shows only whileonboarding_quiz_v1is ON (two build-time switches, kept equal byscripts/ci/check_quiz_privacy_switch_parity.py). - Card and PR: #4837 (#4906)
- Owner: Final wording is counsel's (policy record header). Drafted by
raxx-dev-bot; published by the operator. - Status of every row below: DRAFT: plain-language text awaiting counsel; includes the open Section 2.3 versus Section 6 point (main packet question D1)
| ID | Key | String as shown | Touches |
|---|---|---|---|
| PRV-001 | privacy-policy-v1.md Section 2.1 table row "Setup answers" |
Optional answers to the setup questions: the instruments you trade (US stocks and ETFs, options), how long you have been trading, how long you usually hold a position, the habit you chose to track, and a benchmark number with its unit. Stored as the options you picked; no ticker symbols and no free text. A skipped question stores a default setting, marked as a default \| Purpose: Building and editing your starting setup. Not used to propose trades or ticker symbols \| Legal basis: Contract performance (Art. 6(1)(b)); counsel to confirm (#4835) |
G1, G4, G7, G8 |
| PRV-002 | privacy-policy-v1.md Section 2.2 sources row |
You, through the optional setup questions \| Setup answers (see Section 2.3) |
- |
| PRV-003 | privacy-policy-v1.md Section 2.3 paragraph 1 |
The setup questions are optional. If you answer them, we store the instruments you trade, how long you have been trading, how long you usually hold a position, the habit you chose to track and, if you enter one, a benchmark number with its unit. Answers are stored as the options you picked; we do not ask for ticker symbols or free text. A skipped question stores a default setting marked as a default; a skipped benchmark stays empty. |
G1, G4, G7, G8 |
| PRV-004 | privacy-policy-v1.md Section 2.3 paragraph 2 |
Before you create an account your answers are held only in your browser tab. Apart from the analytics event described next, they are not sent to us until your account exists, and they are gone if you close the tab. When your account is created they are stored with your account, in your profile and your setup progress. |
G8 |
| PRV-005 | privacy-policy-v1.md Section 2.3 paragraph 3 |
If you have allowed analytics, we also record which option you choose for each question, or that you skipped it. For the benchmark we record only whether you gave one, never the number or its unit. |
G1, G8 |
| PRV-006 | privacy-policy-v1.md Section 2.3 paragraph 4 |
We use setup answers to build and edit your starting setup. We do not use them to propose trades or ticker symbols. |
G4 |
| PRV-007 | privacy-policy-v1.md Section 2.3 paragraph 5 |
We keep setup answers until you change or clear them in Settings (Setup answers) or until your account is deleted, which removes them. To ask us to delete your account, use the process in Section 8. |
G8 |
| PRV-008 | privacy-policy-v1.md Section 5 retention table row |
Setup answers \| Until changed or cleared by the user, or until the account is deleted \| Service delivery; not needed for record-keeping, so removed with the account and not held after it |
G8 |
A14. Day-5 trial reminder email (PRE-STAGED: not on develop)
- Source:
backend_v2/api/templates/email/billing/billing_trial_ending/{subject.txt,body.txt,body.html}at the head of the open PR #4892 (feature/4831-queue-trial-reminder, commit7b8f950fd) - Route and flags: Sent once per web Pro trial, on day 5, if the trial was not canceled. Placeholders are filled by the billing service from the subscription.
- Card and PR: #4831 (open PRs #4887, #4891, #4892)
- Owner: Engineering under #4831; sender is the customer-facing sender, not the ops sender (acceptance criterion).
- Status of every row below: PRE-STAGED: read from an open PR, not from develop. Re-inventory from develop when it lands.
- Note: The email says "Review or cancel your plan" (billing noun; see main packet question on the "plan" hold). The footer address is the registered-agent address.
| ID | Key | String as shown | Touches |
|---|---|---|---|
| EML-001 | billing_trial_ending/subject.txt |
Your Raxx {{plan_name}} trial ends on {{charge_date}} |
G7 |
| EML-002 | billing_trial_ending/body.txt line 1 |
Your {{plan_name}} trial ends on {{charge_date}}. |
G7 |
| EML-003 | billing_trial_ending/body.txt line 2 |
At that time the card on file is charged {{price}} {{interval_label}} for {{plan_name}}. If you cancel before then, you are not charged. |
G7 |
| EML-004 | billing_trial_ending/body.txt line 3 |
Review or cancel your plan: {{cancel_url}} |
G1p, G7 |
| EML-005 | billing_trial_ending/body.txt line 4 |
Questions? support@raxx.app |
- |
| EML-006 | billing_trial_ending/body.txt footer |
MooseQuest LLC, 502 W 7th St, Ste 100, Erie, PA 16502-1333 |
- |
| EML-007 | billing_trial_ending/body.html |
Same text as body.txt, plus the button label "Review or cancel your plan", the line "Or copy this link into your browser:", and the wordmark line "Raxx" |
G1p, G7, G8 |
A15. Billing page: direct cancel link notices (PRE-STAGED: not on develop)
- Source:
frontend/raxx-next/components/billing/BillingView.tsxat the head of the open PR #4887 (feature/4831-pro-trial-raptor) - Route and flags:
/account/billing?action=cancel, the target of the reminder email's cancel link. - Card and PR: #4831 (open PR #4887)
- Owner: Engineering under #4831
- Status of every row below: PRE-STAGED: read from an open PR, not from develop.
| ID | Key | String as shown | Touches |
|---|---|---|---|
| BIL-001 | BillingView.tsx notice (cancel link opening) |
Opening the cancellation step… |
G7 |
| BIL-002 | BillingView.tsx notice (nothing to cancel) |
There is nothing to cancel on your plan right now. |
G1p, G7 |
| BIL-003 | BillingView.tsx (neutral error) |
(the portal error message from the server, shown with a reference code; wording not in the diff) |
G8 |