Commit Graph

178 Commits

Author SHA1 Message Date
martbost cfe7399a33 Tools: section jump-menu (9 anchor buttons under the page intro)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 07:51:39 -05:00
martbost 7182746883 Tools: Text-a-friend section (SMS + WhatsApp + messenger share, per angle)
5 SMS-sized low-pressure messages (general moving link + one per angle video,
each carrying the matching ?v= landing link) with one-tap launchers: sms: body
pre-fill, wa.me text pre-fill, t.me/share with the member''s Mini App invite
(angle-matched), Copy for Messenger/IG. Hrefs rebuilt on personalization.
Chatbot canned answer + AI prompt synced.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 07:46:36 -05:00
martbost b8fd3a8bbf Telegram group-ad banner (1280x720) added to the banner kit
Brand-matched (navy gradient, gold RM ring, paper-plane watermark), reusable
by any member: no baked-in link, CTA points to the link below the image.
First cell in the tools-page banner grid; AI prompt synced. Generator HTML
kept at D:\tmp\banner-telegram-generator.html.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 07:35:39 -05:00
martbost 396598e53b Tools: setup swipe now explains HOW to open the Mini App (menu button + t.me link)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 07:27:34 -05:00
martbost 131fa8ae2a Tools: Promote-on-Telegram section (Mini App links, posts, team setup swipe)
/tools#telegram: the member's t.me/RMCircleBot/join?startapp=YOURID links
(moving + 4 angles, self-preview tip), a paste-ready group post and warm DM,
and the connect-your-team setup message to forward (teach-forward). tools.js
personalize() now also fills YOURID tokens. Chatbot canned answer + AI prompt
synced.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 07:22:00 -05:00
martbost 29ec8e82a1 Mini App: tapping your OWN invite link previews the prospect view
Linked members were always routed to their dashboard, so a sponsor could
never see their angle page through their own t.me link. Now ref == own id ->
/join/<id>?src=miniapp-preview (+angle); a teammate's link still opens the
dashboard. links command notes the preview trick.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 07:16:00 -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 f876351391 Mini App join funnel: startapp sponsor attribution + wallet-app handoff
- /app decodes startapp=<sponsorId>[_<angle>] -> unlinked visitors land on the
  sponsor squeeze page /join/<ref>?src=miniapp (linked members still go to
  their dashboard); no-invite prospects get a gold Join button -> /join-now
- tg-app.js: sync __rmcInTg flag; external links route out of the webview via
  openLink/openTelegramLink (wallet deep links reach the wallet app reliably)
- join-now.js in the webview leads with the MetaMask/Trust deep links (no
  injected wallet can exist there); ref + src survive into the wallet browser
- tgbot: links command + weekly digest include the t.me/<bot>/<short>?startapp
  Telegram-native invite once config.miniAppShortName is set (new PATCH key)
- Synced chat.js canned answer + AI prompt (prospects can join from the app)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 06:32:51 -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 6ac1bcab55 Telegram companion bot, phase 1
New tgbot.js (raw Bot API, zero deps, private-chats only so the
group feeds are untouched): wallet-verified linking via dashboard
deep-link codes, personal payout + joined-on-your-link DMs, a
message bridge that delivers site messages natively in Telegram
with reply-to-answer routing (matrix-line permissions enforced by
the existing messages.js rules), and links/msg/help commands.
Webhook self-registers; secret derived from the token. Config key
companionBotToken overrides the feed bot token when Marty creates
a dedicated bot. Dashboard Messages panel gains Connect Telegram;
chatbot + AI prompt synced.
2026-08-22 19:39:55 -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 9c21cc3c99 Message-matched social previews: angle links rewrite og/twitter cards server-side with hook-frame images (no RM Circle branding before the click) 2026-08-22 11:58:33 -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 9aa9b88bc9 Compress the Fast Start print layout to fit a single page 2026-08-22 11:12:37 -05:00
martbost e743ea16c3 Print: hide the whole button row on the printable sheets - links were spilling onto a second page 2026-08-22 11:10:16 -05:00
martbost 62d5462aaf Fix mojibake in the business-in-a-box section (escape-decode had corrupted UTF-8) 2026-08-22 11:04:26 -05:00
martbost 3ee1d7c006 Move the business-in-a-box section up: after the hero on home, before the strategy on the invite page 2026-08-22 11:02:10 -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 558872210f Raise the payout toast stack above the translate button (they shared the bottom-left corner) 2026-08-22 08:52:06 -05:00
martbost 0839e58dd1 Angle links render a pure squeeze step: headline + hook video + one proceed button; click-through loads the full invite page 2026-08-22 08:45:11 -05:00
martbost 570a9bc4a4 Angle pages host the hook video itself: watch on-page, skip-ahead for repeat viewers, auto-advance to overview + join on video end 2026-08-22 08:42:39 -05:00
martbost bd6d46003f Per-angle funnel attribution + paste-ready video descriptions
Landing with ?v=<hook> now sets attribution source "angle:<hook>"
(explicit utm/src still wins), so the existing admin funnel table
shows views -> join clicks -> purchases per angle with no new UI.
Each curiosity-video card on /tools gains a paste-ready description
block ending in the matched invite link - aligning with the "link
in the description" line baked into every recording.
2026-08-22 08:36:00 -05:00
martbost c528a0a770 Angle pages advance to the overview video (bridge headline + rewatch link) instead of replaying the hook 2026-08-22 08:32:21 -05:00
martbost 4584d508be Angle-matched landing pages (?v=hook on the invite link)
/join/<id>?v=pocket|phone|two|graveyard swaps the hero headline and
the watch-first video to continue the curiosity hook that brought
the prospect, keeping the sponsor identity in the sub line. Tools
page: each angle card gains a "Copy matched invite link" button
(personalizes through the existing bare-domain swap); Posts 6/7
carry ?v=pocket. AI prompt knows to recommend matched links.
2026-08-22 08:21:52 -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 e4633758bd Fix lesson 2 poster - grab the fully-rendered title card 2026-08-22 07:52:49 -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 eb2bff2d23 Ship Pocket Change (Marty-voiced, Almighty Dollar bed) and retire every $27 reference sitewide 2026-08-22 06:43:12 -05:00
martbost 98d2e97e4e Ship the I Don't Know Anyone angle video (Marty-voiced + music bed) 2026-08-22 05:35:49 -05:00
martbost 5f7f93d346 Ship the Your Phone angle video (Marty-voiced + music bed) 2026-08-22 05:29:25 -05:00
martbost 9cfb8eb4c4 Ship the Side Hustle Graveyard video (Marty-voiced + music bed)
First of the seven-video batch: 90s, ducked music bed, -14 LUFS,
crf 26. New tools-page card above the $27 video.
2026-08-22 05:21:04 -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 2463b5ff40 Teach the no-money-prospect play everywhere it can come up
Three-way sort (cost confusion -> debit card path; priority -> the
$27 video; genuinely broke -> "not yet" + payday follow-up) with the
hard no-fronting rule. Baked into the chatbot canned answers, the AI
prompt objections, and the coaching skill docs.
2026-08-21 12:36:58 -05:00
martbost d936093c56 Add the printable 48-Hour Fast Start sheet
/fast-start: one-page checklist that personalizes with the member's
ID, invite link, and a scannable QR of /join/<id> when opened from
their dashboard (or with ?id=). Print stylesheet flips it to clean
black-on-white letter format; floating translate/chat widgets are
now excluded from printing on every page. Dashboard share card
links to it; chatbot + AI prompt synced.
2026-08-21 12:08:05 -05:00
martbost d35034306a Translate page progressively - parallel chunks, swap text as each batch returns 2026-08-21 07:40:07 -05:00
martbost 0a1f779305 Shrink translation batches to 20 strings and raise the model token cap - 45-string batches truncated the JSON reply 2026-08-21 07:34:44 -05:00
martbost 944d2beb87 Self-host the site translation instead of the Google widget
The widget needed inline-script CSP we refuse to grant, so: a
/api/public/translate endpoint feeds misses through the chatbot's
OpenRouter model and caches every string forever on the volume
(translations.json); the client walks text nodes, swaps them in
place, and a MutationObserver keeps late-rendered panels covered.
CSP goes back to fully tight. 21 languages; choice sticks in
localStorage; level names and POL stay untranslated.
2026-08-21 07:30:01 -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 d60e8c6807 Show a USD equivalent next to Earned below you
Server keeps an hourly-cached POL/USD spot price (CoinGecko, 8s
timeout, last-known fallback) and rides it on the member API. The
org bar adds a dollar tile with the rate it used; hidden when no
price is known. Display-only - never used in on-chain math.
2026-08-20 16:27:15 -05:00
martbost 9f66412f8c Show the whole-organization totals above the matrix view
New org bar at the top of the Your team panel: total members below
(full-depth rollup), generations deep, qualified count, and POL
earned below. Chatbot canned answer + AI prompt updated in sync.
2026-08-20 16:16:22 -05:00
martbost d6fa42999f Add the $27 angle to the social-posts toolbox
Post 6 (X hook) and Post 7 (Facebook story) pair with the $27 video:
a how-to-use note tells members to upload the video natively and let
the personalized invite link in the caption carry attribution. AI
prompt now describes the $27 hook video on /tools.
2026-08-20 16:02:40 -05:00
martbost 03931f3481 Ship the $27 video with Marty's own voiceover
Replace the AI-voiced render with Marty's Demo Creator recording
(105s, loudnorm -14 LUFS, crf 26). New hash name busts caches; old
file removed. Tools card updated.
2026-08-20 15:56:24 -05:00
martbost 8533079425 Teach the stalled-member answer everywhere it can come up
A member below you pausing on an upgrade never blocks money - payments
pass UP through them to the next eligible position and everything
below keeps flowing. Bake that explanation into: the dashboard
pipeline panel (micro-note when building rows exist), the chatbot
(canned answer + AI system-prompt objection entry), and the coaching
skill docs.
2026-08-20 15:45:59 -05:00
martbost b37f78afa3 Chatbot sync: promo tools answers mention the Official RM Circle Media library
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 14:43:03 -05:00
martbost 9ccf8a4428 Official RM Circle media section on tools: 13 company videos (re-encoded 153MB to 23MB, posters, stable slugs) + 15 graphics in collapsible native-details accordions with lazy loading and copy-link buttons; guidance to pair with personal invite links
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 14:40:41 -05:00
martbost 5d2eb08cb5 Loudness-normalize all four Aug-20 videos to -14 LUFS (was ~-26 dB mean, +8 dB louder) - video streams untouched, audio re-encoded
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 13:29:21 -05:00
martbost 064c6d1d27 New curiosity promo: the 27-dollars pocket-change video (97s, Marty-voice VO from his list, official logo end card, honest POL/risk disclaimer) + tools page card
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 13:15:45 -05:00