Member pages: send readers to the proof, not back to the same video

Marty spotted that a member's page played the angle video and then its button
sent readers to /join/<id>?v=<angle> — which is a SQUEEZE step that shows
that same video again before anything else.

His instinct was to jump straight to /join-now. That fixes the replay but
skips the proof layer: the live payout feed, the 2-4-8-16 explainer, the
toolkit line and the sponsor card all live on the full invite page. Going
from a personal story directly to "connect your wallet and send POL" is a big
jump for somebody who arrived cold from a Traffic Desk banner.

So the button now drops the ?v= and lands on the full invite page. The
existing design already gives exactly the wanted behaviour — the squeeze step
is skipped, the proof is kept, and no new parameter was needed.

The QR deliberately keeps the angle: a scanned code often reaches someone who
never saw the page, off a printout, and the hook video is what they need.

Also: payout alerts now name what an upgrade unlocked, on upgrade pass-ups
only. Marty noticed the toolkit was never mentioned — the unlock line was
wired to `upgraded` events, which are rare next to payouts. On a pass-up the
buyer below just climbed, so saying what they unlocked makes the reason for
the payment concrete. Entry rewards stay silent: nobody changed level.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
martbost
2026-08-29 05:26:05 -05:00
parent e6b1151ace
commit 6838ab3845
3 changed files with 63 additions and 4 deletions
+7 -1
View File
@@ -101,7 +101,13 @@ async function notifyEvent(evt) {
const chat = memberChat(evt.toId);
if (!chat) return;
const kind = evt.kind === 'upline' ? `${evt.gen ? `Gen ${evt.gen} ` : ''}upgrade pass-up from #${evt.fromId}` : `referral reward from #${evt.fromId}'s entry`;
await dm(chat, `💰 You just caught ${evt.pol.toFixed(2)} POL — ${kind}.\nVerify: https://polygonscan.com/tx/${evt.tx}\n\nYour pipeline: https://rmcircle.team/my/${evt.toId}`);
// Upgrade pass-up: tell the catcher what the person below just unlocked.
// It makes the reason for the payment concrete, and it is a natural nudge
// toward their own next rung without asking for anything.
const upTools = evt.kind === 'upline' ? suiteTools.unlockText(0, evt.levelName, getConfig()) : '';
await dm(chat, `💰 You just caught ${evt.pol.toFixed(2)} POL — ${kind}.` +
(upTools ? `\n\n#${evt.fromId} reached ${evt.levelName}, which unlocked ${upTools} for them — and their climb is what put this on you.` : '') +
`\nVerify: https://polygonscan.com/tx/${evt.tx}\n\nYour pipeline: https://rmcircle.team/my/${evt.toId}`);
} else if (evt.type === 'upgraded') {
// Congratulate the member who upgraded, and tell them what it opened up.
const chat = memberChat(evt.id);