Commit Graph

45 Commits

Author SHA1 Message Date
martbost 106f0fa7bd Training: 'The Textbook Play' coaching video — a real position run by the book
111s in Marty's voice: position #21's ledger, catch-funded climbs, the
pass-over cost, this week's Apex catch-and-climb, and the dashboard/sponsor
next-play close. Chatbot + AI prompt synced.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-03 14:54:06 -05:00
martbost dd6730e82f Training page: replay callout upgraded to a full attention banner
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 07:04:49 -05:00
martbost 2cf11441ff Replays copy: the team meets at least weekly, sometimes twice
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 06:58:42 -05:00
martbost 79470e471c Members area: weekly webinar replay page at /replays
Wallet-gated like the Method lessons: the API returns titles/dates to
everyone (prospects see the shape of the product) and video URLs only with a
member session. List lives in the data volume (replays.json) so the weekly
add never needs a deploy; videos stream from the DO Spaces bucket (CSP
media-src added). Teaser on /training; chatbot + AI prompt updated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 06:46:06 -05:00
martbost 8964dfcf97 Detect in-app browsers — the actual reason #34 could not connect
Janie's screenshot showed the X / chevron / share / kebab chrome of TELEGRAM'S
in-app browser, not Trust's DApp browser. She tapped her sponsor's link in a
Telegram chat, Telegram opened it in its own webview, and that webview can
never hold a wallet. The page said "no wallet in this browser", she said she
was using Trust — both true, completely at cross purposes.

Our advice made it worse: "open your wallet's browser and type the address" is
useless to someone whose whole reason for being on the page is that they
tapped a link.

Now we name the browser they are actually in — Telegram, Facebook, Instagram,
LINE, Messenger, X, or a generic Android WebView — say plainly that it cannot
hold a wallet and that this is not their fault, and give them the one useful
thing: a button that copies the address to the clipboard so they can paste it
into Trust. There is an execCommand fallback because older webviews have no
clipboard API, and leaving a button that silently does nothing would be worse
than not having one.

Detection deliberately requires the absence of window.ethereum before calling
something an in-app browser: wallet browsers ARE WebViews, and those are
exactly the ones that work. Verified against Telegram, Android WebView, Trust
(correctly ignored) and mobile Safari (correctly ignored).

This will hit far more members than Janie — every link tapped inside a chat
app lands in the same trap.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-29 06:18:35 -05:00
martbost 7f289bb495 Policies + tools angle: /privacy and /refunds pages (crypto payments are final, we never hold funds), footer links sitewide, toolkit section on How You Get Paid, toolkit line on Getting Started
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-28 07:32:51 -05:00
martbost 30a5c7237e Training Video 7 'Your level is your reach' (97s, script Marty-approved): catch eligibility + reach rule + pass-over + one-catch funding identity; how-pay-works first-catch line tightened to exact; chatbot + AI prompt synced
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-27 13:23:08 -05:00
martbost a413062c5c Config-driven wallet-connect notice (for the Blockaid false-positive window)
New shared wallet-notice.js on join-now, my, training: if config.walletNotice
is set, shows an admin-authored heads-up right above every connect/unlock
button; empty string hides it everywhere (one PATCH, no deploy). Placed at the
friction point only, not a sitewide banner, so unaffected wallets/Mini App
users are not told about a warning they will never see.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 18:40:32 -05:00
martbost aba3db2938 Doctrine sweep: your link never retires — the moving link auto-routes
Replaced every retire-your-link instruction (8 spots across index, join,
start, my, training FAQ, chat.js core-strategy + qualified + moving-link
answers, and the AI prompt) with the automated doctrine: after 2/2 the same
invite link self-routes each signup to the next position in the leg that
needs a direct; personal effort shifts to coaching your two. Raw-ID dApp
signups on a qualified position stay documented as the bonus path. Video
content already correct (Video 1 rebuild script fixed this framing before
recording; Method lesson scripts never said retire).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 06:48:32 -05:00
martbost 7eb467c07b Lesson 4 callout: link the coaches to the Objection bank (hash-preserving personalization)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 06:16:15 -05:00
martbost ca4b5bf34f Members area: Circle Method lessons 2-10 + Video 8 gated behind position ownership
The product now has a lid. Server refuses the gated video FILES without a
wallet-verified member session (the Mini App bridge session counts, so
Telegram members see no locks). Lesson 1, every poster, and all join-funnel
and transparency videos stay public: free preview + trust engine. Training
page renders locked cards with a one-signature unlock (same SIWE flow as
Messages) and a members-unlocked badge. Chatbot: new members-area canned
answer, Method answer notes the preview, AI prompt routing rule now answers
prospects directly instead of sending locked links; bot lesson command notes
the unlock path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 04:10:57 -05:00
martbost a0642516e1 My Dashboard nav shortcut + analytics whitelist fix for engaged/ctb-offer
nav-dash.js on all header pages: a top-right My Dashboard button when the
visitor is known (msg session from wallet sign-in or the Mini App bridge is
authoritative; else the last dashboard opened on the device). Prospects with
no identity never see it.
recordEvent was silently dropping the new engaged + ctb-offer-* events
(whitelist); now recorded per source, with admin funnel tiles for both.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 07:10:52 -05:00
martbost 826f779bc0 Training Video 8: real e-gift-card cash-out walkthrough (8 min)
Marty's screen recording: POL -> CWallet -> dollar swap -> gift card, with the
Google Wallet tap-to-pay screenshot as the end-result proof under the player.
Encoded CRF23 + loudnorm (235MB -> 24MB). Cross-linked from the #spending
guide; chat.js cash-out answer + AI prompt synced (7 -> 8 how-to videos).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 07:03:10 -05:00
martbost cd361a1eaa Telegram Mini App v1: initData auth bridge into the existing site
- POST /api/public/tg-webapp-auth: HMAC-verifies WebApp initData against the
  companion bot token (12h freshness, timing-safe), maps chat -> member via
  tg-links.json, mints a message session -> linked members land on /my/<id>
  with zero login
- /app entry page (vendored telegram-web-app.js keeps CSP script-src 'self');
  unlinked users get the one-time wallet-link instructions
- tg-app.js on all pages: no-op in browsers; inside the webview lazy-loads the
  SDK, expands, themes header/background #071421, wires native BackButton
- Bot menu button set programmatically to open /app; /start + help mention it
- Synced chat.js canned answer + AI system prompt (Mini App facts)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 05:56:51 -05:00
martbost 89a7e60fcb Insert the napkin image under the Circle Method intro (previous anchor missed on apostrophe) 2026-08-22 17:15:10 -05:00
martbost 56e22949b1 Real napkin everywhere: composited into Lessons 1 and 10 (new hashes), Circle Method header image on training, shareable graphic on tools 2026-08-22 17:12:55 -05:00
martbost 8869150312 Add the spending/off-ramp guide (gift cards via CWallet/eGifter, exchange cash-out, keep-it-working) to training + chatbot + AI 2026-08-22 11:15:22 -05:00
martbost 267d8cda1d Complete The Circle Method + productize the business-in-a-box
- Modules 2 (Help Your Two) and 3 (Teach the Teachers) live on the
  training page: six Marty-voiced lessons, coming-soon card retired,
  anchor ids on all ten lesson cards.
- Coach panel and pipeline now prescribe lessons per situation
  (L2/L3/L7/L8 chips) - Lesson 9's routing table as buttons.
- Chatbot + AI prompt know the full ten-lesson course and the
  situation-to-lesson routing rule, plus the business-in-a-box
  product answer.
- New printable: /weekly-rhythm (Lesson 10's 20-minute routine +
  4-week tracker, personalized QR), cross-linked from dashboard and
  fast-start.
- "Business in a box" section on the join page and home page names
  the full toolkit: course, promo arsenal, printables, AI coach,
  live dashboard, public engine.
2026-08-22 10:55:39 -05:00
martbost 8f4aa96fa5 Put the curiosity-video arsenal inside the Circle Method (use with Lesson 3), personalize tools links from training 2026-08-22 07:57:39 -05:00
martbost a7cdc1731b Turn the Module 2 teaser line into a proper coming-soon card with the lesson lineup 2026-08-22 07:55:15 -05:00
martbost 0ecca2dc8a Launch The Circle Method - Module 1: Get Your Two
Four Marty-voiced lessons (pause-trimmed, constant low music beds,
two-pass loudnorm) debut on the training page as the team's
recruiting course: mindset, warm list, the conversation, objections.
Module 2 teased. Chatbot canned answer + AI prompt synced.
2026-08-22 07:46:47 -05:00
martbost 950d412738 Make every dollar figure evergreen via the live POL price
The config API now carries the hourly-cached polUsd; the start page,
training callout, join-page shortfall, and chatbot (canned + AI
prompt) all compute entry dollars live instead of quoting stale
numbers. Post 6/7 copy drops hard "$27 = entry" claims for
pocket-change framing (the video's $27 stays - it describes weekly
wasted spending, which is evergreen).
2026-08-22 04:56:25 -05:00
martbost e22f483f99 Explain gas with the car-fuel analogy everywhere newcomers meet it (training, start, join funding box, chatbot, AI prompt) 2026-08-21 12:40:43 -05:00
martbost faf397f681 Add on-site translation for multilingual members
Floating translate button (bottom-left) on every member-facing page
lazy-loads the Google Translate element; language choice persists
across pages via the googtrans cookie. CSP extended for Google's
translate hosts only. Chatbot now replies in the member's language
and a canned answer points at the button.
2026-08-21 07:23:55 -05:00
martbost 52d678fd23 Official RM Circle logo rollout: header brand mark on all 13 pages (public + private), favicon, circular crop via existing brand-mark styling
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 09:34:56 -05:00
martbost 5d116c21a2 Video 1 rebuilt: 5-min motion-graphics team-build overview (approved script, cloned voice) replaces the 14-min original on the training page - corrected bonus doctrine, verified catch rule, dashboard layer; old file retained
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 09:03:10 -05:00
martbost 34dc04a9fc Training Video 7: the Member Dashboard full walkthrough (Marty's recording, web-compressed 74MB to 32MB) + chatbot sync + Coach card links to it as the teach-forward reference
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 08:26:39 -05:00
martbost dd6644bc3b MoonPay links: /buy/pol is a soft-404 - switch to the live /buy/matic page (POL's old-name slug) + copy note that MATIC is POL's former name
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-19 14:11:07 -05:00
martbost d620555209 MoonPay card on-ramp for crypto-new members (zero custody)
- GET /api/public/moonpay-url: returns a MoonPay checkout link for POL on
  Polygon (pol_polygon). With partner keys in config (moonpayPublicKey/
  moonpaySecretKey, now PATCHable), the URL is HMAC-signed and prefilled
  with the member's own wallet address + shortfall amount; without keys it
  falls back to MoonPay's generic buy page. MoonPay is merchant of record -
  the site never touches funds.
- Join page: when the connected wallet can't cover the Premium entry, a
  funding box appears with the exact shortfall, a buy button (new tab), and
  a refresh-balance button.
- Training page: "buy POL with a card" callout after the funding video with
  the three things to get right (POL, Polygon network, own address).
- Start page: one-line card-buy pointer under the sponsor card.
- Chatbot canned answer + AI system prompt updated (funding guidance).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-19 09:44:01 -05:00
martbost f0e938f065 Add the new integrated-join-process training video (Video 4)
New 4-min screen recording of the on-site wallet-connect join flow becomes
Video 4; the old dApp walkthrough is relabeled as the Video 5 backup method
and the payments explainer moves to Video 6. Chatbot canned answers and the
AI system prompt now describe the updated video lineup.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-18 08:19:12 -05:00
martbost 4607c639e8 Make Promo Tools discoverable: footer link (all pages) + dashboard button
- added "Promo Tools" to the footer-links on every page
- added a Promo Tools button in the /my dashboard "Share this position" card

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-16 07:11:52 -05:00
martbost 3a80a50648 Rebrand public site to RM Circle Team Build (remove Crypto Team Build Network)
Public promo is now RM-Circle-only; the Crypto Team Build Network is learned
after joining, not surfaced to prospects.
- nav brand "Crypto Team Build" -> "RM Circle" (subtitle "Premium Team Build")
- all <title>, og:site_name, twitter meta, footers, disclaimers, 404, chatbot
  system prompt + canned answers, config siteName/supportLabel swept
- removed "a project of the Crypto Team Build Network" framing from prose
- banners regenerated: eyebrow now "The RM Circle · Polygon" (was Crypto Team Build)
- og-card.jpg regenerated (was "CRYPTO TEAM BUILD NETWORK PRESENTS")
- roadmap.webp already RM-Circle branded (no change needed)
- social posts/swipes: #CryptoTeamBuild -> #RMCircle, "crypto team build" -> "RM Circle team build"

Videos still reference old branding (VO + embedded site screenshot) — rebuilt next.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-16 06:43:23 -05:00
martbost 4dbbc6780c Add payments video to training + new Promo Tools page (/tools)
Training: new "Video 5 · Why you're not getting paid yet" card with the
payments teaching video (+ poster). Promo Tools page at /tools (noindex,
unlinked from public nav — a team resource): share-ready video clips
with copy-link buttons, a personal invite-link builder, and three
compliant email/message swipes; banners noted as generate-on-request.
Chatbot gains a promo-tools answer. Old scroll-only clip is superseded
by the combined cut (retire it).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-16 05:47:01 -05:00
martbost 76c55fe4c2 Sweep all self-references to rmcircle.team (SEO/OG/canonical/chatbot)
Domain migration go-forward: replaced every hardcoded rmcircle.saasy.top
across public/*.html (canonical, og:url, og:image, twitter tags),
chat.js (chatbot answer URLs + linkify self-link matcher), my.js, and
server.js (member-page OG injection, unsubUrl, chat system prompt) with
rmcircle.team. Old domain still serves everything; canonical now points
search engines + social previews at the new primary domain.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-16 05:32:13 -05:00
martbost 1929a928d8 Add /how-pay-works pay-flow diagram page
Visual explainer of the two income streams: entry rewards you keep, and
the depth-matched upgrade ladder (each layer pays you once, at the one
level matching its depth) as an SVG flow diagram. Route + CSS added;
linked from training body and all footers. Educational, on-chain-factual
framing with disclaimer link.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 10:06:36 -05:00
martbost 0f5630e6d0 Disclaimer page, self-service member alerts, and admin login lockout
- /disclaimer: independent-resource, affiliate, earnings, risk, and
  not-advice disclosures; linked from all footers.
- Self-service alerts: members opt in with their email on /my/:id to get
  "you've been paid" + "upgrade needed" emails for their own position
  (same watcher as the owner alerts, extended). Signed unsubscribe link
  (/unsubscribe?id=&t=HMAC), on-chain-registration check, rate-limited,
  masked-email status, confirmation email.
- Admin login: timing-safe compare + per-IP lockout (8 fails -> 15 min,
  escalating). Previously unlimited/brute-forceable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 14:45:57 -05:00
martbost d1aef1e3ff Add /contract — plain-language security review of the smart contract
Shareable page from the 2026-08-13 source review: code immutability
(no proxy/delegatecall/selfdestruct, Sourcify exact match), same-tx
distribution (no pooled funds), locked prices and fee constants, the
honest list of owner powers with the 50% entry-fee cap, where unmatched
pass-ups go, and verify-yourself links. Linked from all public footers,
the payment-proof note, and the chatbot (canned + AI prompt).

Also: passed-over lists now exclude structurally-skipped uplines — a
level-N payment never checks the first N-1 uplines, so listing them as
"not eligible" was misleading.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 10:51:34 -05:00
martbost d9ac9c9806 Settle the doctrine: recommend retiring at 2/2, frame spillover as bonus
Marty's final framing: the teachable rule stays "get your 2, retire
your link, help your 2" — but a late signup on a qualified link is
presented everywhere as a welcome bonus (full entry reward + depth via
spillover), never a rule violation. Applied consistently across the
strategy page, start callout, chatbot (canned + AI prompt), training
article, and both share-card notes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 18:48:20 -05:00
martbost f0991c651b Finish spillover copy corrections in chat and share card
Remove the last "shallow legs" claim and reword "retires your link" —
a qualified link keeps working and spills depth; it just stops being
the team's focus.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 18:24:03 -05:00
martbost 72c8f137ae Correct spillover teaching across all site copy
The old copy claimed qualified links must be retired to avoid "extra
shallow legs" — factually wrong for this contract: extra signups on a
qualified link spill DOWNWARD (BFS) as depth, and the referrer keeps
earning the full entry reward on every signup with no cap at 2. Updated
the strategy flow, team-principle notice, strategy card, start-page
callout, chatbot (canned + AI prompt), training article, and the
qualified share card: the team play is still helping your 2 get their 2
(only own directs qualify a position), but continued personal promotion
is accurately described as paid depth-building, and spillover recipients
earn only when the spilled member upgrades — if qualified and leveled.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 18:22:59 -05:00
martbost 0a05d97b32 Teach spillover in the chatbot and training page
- Chat: new canned answer covering spillover keywords (why "2 under me
  but 1/2 directs", pass-over eligibility) and the same facts added to
  the AI system prompt so both chat modes answer consistently.
- Training: "Understanding spillover" article after the videos — what it
  is, why it doesn't qualify you, why it still pays your position via
  matrix upgrade payments, and the qualified+leveled eligibility rule.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 16:05:44 -05:00
martbost 59dfca95bb Make the header brand a home link on all public pages
The RM logo + title in the nav now links back to / on the bridge,
start, training, and member-dashboard pages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 15:09:57 -05:00
martbost 708068a9a7 Add collapsible Team Help chat widget on all public pages
Self-contained assistant (no external services) with a knowledge base
covering the strategy, levels, costs, wallet setup, funding, joining,
training videos, and live current-sponsor/queue data; falls back to
the configured Telegram group link when it can't answer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 08:35:28 -05:00
martbost 023f8a3464 Add poster thumbnails to training videos
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 07:39:47 -05:00
martbost ec2091631e Add /training page with four self-hosted walkthrough videos
- Videos loudness-normalized to -16 LUFS (originals were ~-33 LUFS).
- Static file serving rewritten to stream with HTTP Range support so
  video seeking works; .mp4/.webm MIME types added.
- Training nav links on homepage and /start, plus a first-time callout
  on /start; training page views tracked per source in admin analytics.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 07:32:59 -05:00