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>
This commit is contained in:
martbost
2026-08-16 05:32:13 -05:00
parent d0b1eddda2
commit 76c55fe4c2
10 changed files with 941 additions and 941 deletions
+5 -5
View File
@@ -29,17 +29,17 @@
{k:['qualified','qualification','2 directs','two directs','directs','retire'], {k:['qualified','qualification','2 directs','two directs','directs','retire'],
a:()=>`A position is <strong>qualified</strong> once it has 2 directs. The team recommendation: retire your link at that point and help your 2 get <em>their</em> 2 using their own links — that's the only thing that qualifies them. And if someone happens to join through your link after 2/2, it's a bonus, not a problem: the entry reward still pays your position and they spill downward, adding depth to your leg. Just remember spillover never qualifies the people below — their own directs do.`}, a:()=>`A position is <strong>qualified</strong> once it has 2 directs. The team recommendation: retire your link at that point and help your 2 get <em>their</em> 2 using their own links — that's the only thing that qualifies them. And if someone happens to join through your link after 2/2, it's a bonus, not a problem: the entry reward still pays your position and they spill downward, adding depth to your leg. Just remember spillover never qualifies the people below — their own directs do.`},
{k:['safe','scam','rug','rug pull','security','audit','trust','legit','contract code','smart contract','can they change','steal'], {k:['safe','scam','rug','rug pull','security','audit','trust','legit','contract code','smart contract','can they change','steal'],
a:()=>`Fair question — don't take anyone's word for it. We reviewed the complete verified source of the RM Circle smart contract and published a plain-language breakdown at <a href="/contract">rmcircle.saasy.top/contract</a>: the code can never change (no upgrade mechanism exists), member money never sits in the contract (every payment distributes in the same transaction), prices and payout rules are locked forever, and the operator's powers are limited to a short, honest list. Every claim links to the blockchain so you can verify it yourself. Code security isn't an income guarantee though — results depend on real participation, and POL's value moves.`}, a:()=>`Fair question — don't take anyone's word for it. We reviewed the complete verified source of the RM Circle smart contract and published a plain-language breakdown at <a href="/contract">rmcircle.team/contract</a>: the code can never change (no upgrade mechanism exists), member money never sits in the contract (every payment distributes in the same transaction), prices and payout rules are locked forever, and the operator's powers are limited to a short, honest list. Every claim links to the blockchain so you can verify it yourself. Code security isn't an income guarantee though — results depend on real participation, and POL's value moves.`},
{k:['disappear','disappears','creator','creators','abandon','abandoned','walk away','goes away','shut down','shuts down','still work','keep running','keeps running','autonomous','dies','lost keys','without them','stop working','turned off','if they leave','what if they','forever','over time'], {k:['disappear','disappears','creator','creators','abandon','abandoned','walk away','goes away','shut down','shuts down','still work','keep running','keeps running','autonomous','dies','lost keys','without them','stop working','turned off','if they leave','what if they','forever','over time'],
a:()=>`Great question — and we checked it on-chain, not just in theory. The contract needs <strong>no one</strong> to keep it running: joins, upgrades, placement and every payout are fully automatic — no button anyone has to press, no expiry. If the creators walked away, lost their keys, or vanished, member payments keep flowing exactly as coded. We also verified that the founder, development and fee wallets are <strong>ordinary wallets, not programs</strong> — an ordinary wallet always accepts an incoming payment even if its key is lost forever, so a dead admin wallet can't jam a single member payment (at worst the project's <em>own</em> fee sits there uncollected). And the contract holds no stored balance — every payment is delivered in the same transaction. Full write-up in section 6 of <a href="/contract">rmcircle.saasy.top/contract</a>.`}, a:()=>`Great question — and we checked it on-chain, not just in theory. The contract needs <strong>no one</strong> to keep it running: joins, upgrades, placement and every payout are fully automatic — no button anyone has to press, no expiry. If the creators walked away, lost their keys, or vanished, member payments keep flowing exactly as coded. We also verified that the founder, development and fee wallets are <strong>ordinary wallets, not programs</strong> — an ordinary wallet always accepts an incoming payment even if its key is lost forever, so a dead admin wallet can't jam a single member payment (at worst the project's <em>own</em> fee sits there uncollected). And the contract holds no stored balance — every payment is delivered in the same transaction. Full write-up in section 6 of <a href="/contract">rmcircle.team/contract</a>.`},
{k:['spillover','spill over','spill','under me but not qualified','people under me','not my direct','passed over','missed payment','skipped','why am i not qualified'], {k:['spillover','spill over','spill','under me but not qualified','people under me','not my direct','passed over','missed payment','skipped','why am i not qualified'],
a:()=>`<strong>Spillover</strong> happens when someone's sponsor already has both matrix slots full — the smart contract then places the new member in the next open slot further down, which can be under YOU. Spillover fills your matrix and sets up future upgrade payments to your position, but it does <strong>not</strong> count toward your qualification: only people who join using <em>your</em> ID are your directs. That's why you can see 2 under you and still show 1/2. And important: upgrade payments only stop at positions that are qualified (2 directs) AND at the required level — otherwise the payment passes you by to the next eligible upline. Check your position on your <a href="/my">Member Dashboard</a> — spillover placements are tagged there.`}, a:()=>`<strong>Spillover</strong> happens when someone's sponsor already has both matrix slots full — the smart contract then places the new member in the next open slot further down, which can be under YOU. Spillover fills your matrix and sets up future upgrade payments to your position, but it does <strong>not</strong> count toward your qualification: only people who join using <em>your</em> ID are your directs. That's why you can see 2 under you and still show 1/2. And important: upgrade payments only stop at positions that are qualified (2 directs) AND at the required level — otherwise the payment passes you by to the next eligible upline. Check your position on your <a href="/my">Member Dashboard</a> — spillover placements are tagged there.`},
{k:['how do i get paid','how do i earn','commission','commissions','how payments work','how does the money','payout','payouts','pay flow','when do i get paid','how do i make money','income','two ways','how you get paid'], {k:['how do i get paid','how do i earn','commission','commissions','how payments work','how does the money','payout','payouts','pay flow','when do i get paid','how do i make money','income','two ways','how you get paid'],
a:()=>`Two ways money reaches your position — the full diagram is at <a href="/how-pay-works">rmcircle.saasy.top/how-pay-works</a>. <strong>(1) Entry rewards:</strong> when a direct joins under your link you get their entry reward (about 326 POL at Premium) and you keep it — on every direct you bring. <strong>(2) Upgrade payments:</strong> each person below you pays you once, at the ONE level that matches how far below you they sit — someone 1 layer below pays you when they hit Ascensus, 2 layers below pays you at Fabrica, 3 at Culmen, and so on. To catch each, you must be at that level yourself and qualified, so stay one level ahead of your team. No income is guaranteed.`}, a:()=>`Two ways money reaches your position — the full diagram is at <a href="/how-pay-works">rmcircle.team/how-pay-works</a>. <strong>(1) Entry rewards:</strong> when a direct joins under your link you get their entry reward (about 326 POL at Premium) and you keep it — on every direct you bring. <strong>(2) Upgrade payments:</strong> each person below you pays you once, at the ONE level that matches how far below you they sit — someone 1 layer below pays you when they hit Ascensus, 2 layers below pays you at Fabrica, 3 at Culmen, and so on. To catch each, you must be at that level yourself and qualified, so stay one level ahead of your team. No income is guaranteed.`},
{k:['tier','standard','premium tier','standard tier','premium vs standard','which tier','half','smaller payment','less than expected','why is my payment'], {k:['tier','standard','premium tier','standard tier','premium vs standard','which tier','half','smaller payment','less than expected','why is my payment'],
a:()=>`There are two tiers. <strong>Premium</strong> is what our whole team builds at (${pol()} POL entry) — full payments. <strong>Standard</strong> costs about half and pays/earns half at every level. So if a payment ever comes in smaller than expected, it usually came from a Standard-tier position below you. Your tier is <strong>set when you join and can't be changed later</strong> (upgrading advances your level, not your tier), so always join <strong>Premium</strong> and make sure the people you bring on do too. Full breakdown: <a href="/how-pay-works">how-pay-works</a>.`}, a:()=>`There are two tiers. <strong>Premium</strong> is what our whole team builds at (${pol()} POL entry) — full payments. <strong>Standard</strong> costs about half and pays/earns half at every level. So if a payment ever comes in smaller than expected, it usually came from a Standard-tier position below you. Your tier is <strong>set when you join and can't be changed later</strong> (upgrading advances your level, not your tier), so always join <strong>Premium</strong> and make sure the people you bring on do too. Full breakdown: <a href="/how-pay-works">how-pay-works</a>.`},
{k:['dashboard','my dashboard','my page','my position','my team','check my','see my','pipeline','my stats','alerts','notify me','email me','get notified'], {k:['dashboard','my dashboard','my page','my position','my team','check my','see my','pipeline','my stats','alerts','notify me','email me','get notified'],
a:()=>`Your <strong>Member Dashboard</strong> is at <a href="/my">rmcircle.saasy.top/my</a> — enter your ID to see your position, your team, your payments, your pipeline (money forming below you), and any spillover under you. You can also turn on <strong>email alerts</strong> there to be notified the moment you're paid or need to upgrade. To share, use your personal invite page: <strong>rmcircle.saasy.top/join/&lt;your ID&gt;</strong>.`}, a:()=>`Your <strong>Member Dashboard</strong> is at <a href="/my">rmcircle.team/my</a> — enter your ID to see your position, your team, your payments, your pipeline (money forming below you), and any spillover under you. You can also turn on <strong>email alerts</strong> there to be notified the moment you're paid or need to upgrade. To share, use your personal invite page: <strong>rmcircle.team/join/&lt;your ID&gt;</strong>.`},
{k:['level','levels','upgrade','scintilla','ascensus','fabrica','culmen','apex','fastigium','vertex','corona','8 levels'], {k:['level','levels','upgrade','scintilla','ascensus','fabrica','culmen','apex','fastigium','vertex','corona','8 levels'],
a:()=>`There are 8 Premium levels: <strong>Scintilla, Ascensus, Fabrica, Culmen, Apex, Fastigium, Vertex, Corona</strong>. Everyone starts at Scintilla. Upgrade as quickly as practical — ideally using earned POL — because the first two payments at each level are designed to help fund your next upgrade. Stay aware of your active downline's levels so you don't fall behind.`}, a:()=>`There are 8 Premium levels: <strong>Scintilla, Ascensus, Fabrica, Culmen, Apex, Fastigium, Vertex, Corona</strong>. Everyone starts at Scintilla. Upgrade as quickly as practical — ideally using earned POL — because the first two payments at each level are designed to help fund your next upgrade. Stay aware of your active downline's levels so you don't fall behind.`},
{k:['30 positions','goal','milestone','matrix','how many people','team size'], {k:['30 positions','goal','milestone','matrix','how many people','team size'],
@@ -83,7 +83,7 @@
const msgs=panel.querySelector('.chat-msgs'),chipsEl=panel.querySelector('.chat-chips'),form=panel.querySelector('.chat-input'),input=form.querySelector('input'); const msgs=panel.querySelector('.chat-msgs'),chipsEl=panel.querySelector('.chat-chips'),form=panel.querySelector('.chat-input'),input=form.querySelector('input');
function addMsg(html,who){const d=document.createElement('div');d.className=`chat-msg ${who}`;if(who==='user'){d.textContent=html}else{d.innerHTML=html}msgs.appendChild(d);msgs.scrollTop=msgs.scrollHeight;return d} function addMsg(html,who){const d=document.createElement('div');d.className=`chat-msg ${who}`;if(who==='user'){d.textContent=html}else{d.innerHTML=html}msgs.appendChild(d);msgs.scrollTop=msgs.scrollHeight;return d}
function linkify(text){let h=esc(text);h=h.replace(/(https?:\/\/[^\s&<]+[^\s&<.,)])/g,u=>{const site=u.startsWith('https://rmcircle.saasy.top');const path=site?u.replace('https://rmcircle.saasy.top',''):u;return `<a href="${site?(path||'/'):u}"${site?'':' target="_blank" rel="noopener noreferrer"'}>${u}</a>`});return h.replace(/\n/g,'<br>')} function linkify(text){let h=esc(text);h=h.replace(/(https?:\/\/[^\s&<]+[^\s&<.,)])/g,u=>{const site=u.startsWith('https://rmcircle.team');const path=site?u.replace('https://rmcircle.team',''):u;return `<a href="${site?(path||'/'):u}"${site?'':' target="_blank" rel="noopener noreferrer"'}>${u}</a>`});return h.replace(/\n/g,'<br>')}
const history=[];let aiDown=false; const history=[];let aiDown=false;
function stripHtml(h){const d=document.createElement('div');d.innerHTML=h;return d.textContent||''} function stripHtml(h){const d=document.createElement('div');d.innerHTML=h;return d.textContent||''}
async function ask(q){ async function ask(q){
+3 -3
View File
@@ -1,7 +1,7 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="How the RM Circle smart contract works — what's locked forever, what the operator can and can't do, and how to verify every claim yourself on the blockchain."><title>Smart Contract Security | Crypto Team Build</title> <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="How the RM Circle smart contract works — what's locked forever, what the operator can and can't do, and how to verify every claim yourself on the blockchain."><title>Smart Contract Security | Crypto Team Build</title>
<link rel="canonical" href="https://rmcircle.saasy.top/contract"> <link rel="canonical" href="https://rmcircle.team/contract">
<meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="How the RM Circle Smart Contract Works — and Why the Bottom Can't Fall Out"><meta property="og:description" content="The code can never change, member money never sits in the contract, and every rule is public. A plain-language review of the verified source — with links to check everything yourself."><meta property="og:image" content="https://rmcircle.saasy.top/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"> <meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="How the RM Circle Smart Contract Works — and Why the Bottom Can't Fall Out"><meta property="og:description" content="The code can never change, member money never sits in the contract, and every rule is public. A plain-language review of the verified source — with links to check everything yourself."><meta property="og:image" content="https://rmcircle.team/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="RM Circle Smart Contract — plain-language security review"><meta name="twitter:description" content="What's locked forever, what the operator can and can't do, and how to verify it all yourself."><meta name="twitter:image" content="https://rmcircle.saasy.top/og-card.jpg"><link rel="stylesheet" href="/styles.css"></head> <meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="RM Circle Smart Contract — plain-language security review"><meta name="twitter:description" content="What's locked forever, what the operator can and can't do, and how to verify it all yourself."><meta name="twitter:image" content="https://rmcircle.team/og-card.jpg"><link rel="stylesheet" href="/styles.css"></head>
<body> <body>
<header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small>Contract Security</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="/">← Strategy</a><a class="btn btn-primary" href="/start">Get Started</a></div></header> <header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small>Contract Security</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="/">← Strategy</a><a class="btn btn-primary" href="/start">Get Started</a></div></header>
<main> <main>
+1 -1
View File
@@ -1,5 +1,5 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="all"><meta name="description" content="Disclaimers for this independent RM Circle team resource — affiliate, earnings, and risk disclosures. Informational and educational only; not affiliated with the contract owners; no income is promised."><title>Disclaimers | Crypto Team Build</title> <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="all"><meta name="description" content="Disclaimers for this independent RM Circle team resource — affiliate, earnings, and risk disclosures. Informational and educational only; not affiliated with the contract owners; no income is promised."><title>Disclaimers | Crypto Team Build</title>
<link rel="canonical" href="https://rmcircle.saasy.top/disclaimer"> <link rel="canonical" href="https://rmcircle.team/disclaimer">
<link rel="stylesheet" href="/styles.css"></head> <link rel="stylesheet" href="/styles.css"></head>
<body> <body>
<header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small>Disclaimers</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="/">← Home</a><a class="btn btn-primary" href="/start">Get Started</a></div></header> <header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small>Disclaimers</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="/">← Home</a><a class="btn btn-primary" href="/start">Get Started</a></div></header>
+3 -3
View File
@@ -1,7 +1,7 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="How you get paid in the RM Circle team build — the two income streams shown as a simple flow diagram: entry rewards you keep, and depth-matched upgrade payments."><title>How You Get Paid | Crypto Team Build</title> <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="How you get paid in the RM Circle team build — the two income streams shown as a simple flow diagram: entry rewards you keep, and depth-matched upgrade payments."><title>How You Get Paid | Crypto Team Build</title>
<link rel="canonical" href="https://rmcircle.saasy.top/how-pay-works"> <link rel="canonical" href="https://rmcircle.team/how-pay-works">
<meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="How you get paid — the RM Circle pay flow"><meta property="og:description" content="Two ways you earn: entry rewards you keep, and upgrade payments where each layer below pays you at exactly one matching level. Shown as a simple diagram."><meta property="og:url" content="https://rmcircle.saasy.top/how-pay-works"><meta property="og:image" content="https://rmcircle.saasy.top/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"> <meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="How you get paid — the RM Circle pay flow"><meta property="og:description" content="Two ways you earn: entry rewards you keep, and upgrade payments where each layer below pays you at exactly one matching level. Shown as a simple diagram."><meta property="og:url" content="https://rmcircle.team/how-pay-works"><meta property="og:image" content="https://rmcircle.team/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="How you get paid — the RM Circle pay flow"><meta name="twitter:image" content="https://rmcircle.saasy.top/og-card.jpg"> <meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="How you get paid — the RM Circle pay flow"><meta name="twitter:image" content="https://rmcircle.team/og-card.jpg">
<link rel="stylesheet" href="/styles.css"></head> <link rel="stylesheet" href="/styles.css"></head>
<body> <body>
<header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small>How you get paid</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="/training">Training</a><a class="btn btn-primary" href="/start">Get Started</a></div></header> <header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small>How you get paid</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="/training">Training</a><a class="btn btn-primary" href="/start">Get Started</a></div></header>
+3 -3
View File
@@ -1,7 +1,7 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Get your 2. Help your 2 get their 2. A team-first RM Circle Premium strategy built around qualification, depth, and duplication."><title>Crypto Team Build | RM Circle Premium</title> <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Get your 2. Help your 2 get their 2. A team-first RM Circle Premium strategy built around qualification, depth, and duplication."><title>Crypto Team Build | RM Circle Premium</title>
<link rel="canonical" href="https://rmcircle.saasy.top/"> <link rel="canonical" href="https://rmcircle.team/">
<meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="The RM Circle Premium Team Build | Crypto Team Build Network"><meta property="og:description" content="Get your 2. Help your 2 get their 2. A team-first strategy built around qualification, depth, and duplication — follow the team roadmap with the current sponsor."><meta property="og:url" content="https://rmcircle.saasy.top/"><meta property="og:image" content="https://rmcircle.saasy.top/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="The RM Circle Premium Team Build roadmap card — Crypto Team Build Network"> <meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="The RM Circle Premium Team Build | Crypto Team Build Network"><meta property="og:description" content="Get your 2. Help your 2 get their 2. A team-first strategy built around qualification, depth, and duplication — follow the team roadmap with the current sponsor."><meta property="og:url" content="https://rmcircle.team/"><meta property="og:image" content="https://rmcircle.team/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="The RM Circle Premium Team Build roadmap card — Crypto Team Build Network">
<meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="The RM Circle Premium Team Build | Crypto Team Build Network"><meta name="twitter:description" content="Get your 2. Help your 2 get their 2. Build depth. Build freedom."><meta name="twitter:image" content="https://rmcircle.saasy.top/og-card.jpg"><link rel="stylesheet" href="/styles.css"></head> <meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="The RM Circle Premium Team Build | Crypto Team Build Network"><meta name="twitter:description" content="Get your 2. Help your 2 get their 2. Build depth. Build freedom."><meta name="twitter:image" content="https://rmcircle.team/og-card.jpg"><link rel="stylesheet" href="/styles.css"></head>
<body> <body>
<header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small id="brandProgram">RM Circle Premium</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="#strategy">How it works</a><a class="btn btn-secondary" href="/training">Training</a><a class="btn btn-primary" href="/start">Get Started</a></div></header> <header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small id="brandProgram">RM Circle Premium</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="#strategy">How it works</a><a class="btn btn-secondary" href="/training">Training</a><a class="btn btn-primary" href="/start">Get Started</a></div></header>
<main> <main>
+2 -2
View File
@@ -1,6 +1,6 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="noindex"><meta name="description" content="You've been personally invited to the RM Circle Premium team build — see the strategy, the live on-chain payouts, and your sponsor's real position."><title>You're Invited | Crypto Team Build</title> <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="noindex"><meta name="description" content="You've been personally invited to the RM Circle Premium team build — see the strategy, the live on-chain payouts, and your sponsor's real position."><title>You're Invited | Crypto Team Build</title>
<meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="You're invited to the RM Circle Premium Team Build"><meta property="og:description" content="A team-first strategy built around qualification, depth, and duplication — with every payout verified on the blockchain. Your invite carries your sponsor automatically."><meta property="og:image" content="https://rmcircle.saasy.top/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="The RM Circle Premium Team Build roadmap card — Crypto Team Build Network"> <meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="You're invited to the RM Circle Premium Team Build"><meta property="og:description" content="A team-first strategy built around qualification, depth, and duplication — with every payout verified on the blockchain. Your invite carries your sponsor automatically."><meta property="og:image" content="https://rmcircle.team/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="The RM Circle Premium Team Build roadmap card — Crypto Team Build Network">
<meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="You're invited — RM Circle Premium Team Build"><meta name="twitter:description" content="Get your 2. Help your 2 get their 2. Your invite carries your sponsor automatically."><meta name="twitter:image" content="https://rmcircle.saasy.top/og-card.jpg"><link rel="stylesheet" href="/styles.css"></head> <meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="You're invited — RM Circle Premium Team Build"><meta name="twitter:description" content="Get your 2. Help your 2 get their 2. Your invite carries your sponsor automatically."><meta name="twitter:image" content="https://rmcircle.team/og-card.jpg"><link rel="stylesheet" href="/styles.css"></head>
<body> <body>
<header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small id="brandProgram">RM Circle Premium</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="#strategy">How it works</a><a class="btn btn-secondary" href="/training">Training</a><a class="btn btn-primary" href="#join">Join the Team</a></div></header> <header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small id="brandProgram">RM Circle Premium</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="#strategy">How it works</a><a class="btn btn-secondary" href="/training">Training</a><a class="btn btn-primary" href="#join">Join the Team</a></div></header>
<main> <main>
+3 -3
View File
@@ -202,7 +202,7 @@
else if(gap) L.push(`YOUR NEXT MOVE: your next uncovered layer is layer ${gap} — to catch their ${LV[gap]||'top'} upgrades you'll need to be at ${LV[gap-1]} (${myNext?money(myNext)+' POL':''}). They're still climbing toward it${gapClose?', and getting close — worth upgrading soon':", so no rush — just get there before they do"}. You're already eligible for everything shallower.`); else if(gap) L.push(`YOUR NEXT MOVE: your next uncovered layer is layer ${gap} — to catch their ${LV[gap]||'top'} upgrades you'll need to be at ${LV[gap-1]} (${myNext?money(myNext)+' POL':''}). They're still climbing toward it${gapClose?', and getting close — worth upgrading soon':", so no rush — just get there before they do"}. You're already eligible for everything shallower.`);
else if(myNext) L.push(`YOUR NEXT MOVE: you're currently eligible for every active layer. As your team goes deeper, upgrade to ${nextName} (${money(myNext)} POL) before that new layer climbs to its pay-you level.`); else if(myNext) L.push(`YOUR NEXT MOVE: you're currently eligible for every active layer. As your team goes deeper, upgrade to ${nextName} (${money(myNext)} POL) before that new layer climbs to its pay-you level.`);
L.push(''); L.push('');
L.push(`See it live and get a red alert the moment you'd miss one: rmcircle.saasy.top/my/${d.id}`); L.push(`See it live and get a red alert the moment you'd miss one: rmcircle.team/my/${d.id}`);
return L.join('\n'); return L.join('\n');
} }
async function renderAlerts(d){ async function renderAlerts(d){
@@ -236,11 +236,11 @@
function renderShare(d){ function renderShare(d){
const el=document.getElementById('dShare'); const el=document.getElementById('dShare');
if(!el)return; if(!el)return;
const dashUrl=`https://rmcircle.saasy.top/join/${d.id}`; const dashUrl=`https://rmcircle.team/join/${d.id}`;
if(d.directCount>=2){ if(d.directCount>=2){
const nx=d.nextInLine; const nx=d.nextInLine;
if(nx){ if(nx){
const nxDash=`https://rmcircle.saasy.top/join/${nx.id}`; const nxDash=`https://rmcircle.team/join/${nx.id}`;
el.innerHTML=`<p style="color:var(--muted);font-size:14px;line-height:1.6;margin:6px 0 14px"><span class="q-badge q-yes" style="margin-right:6px">★ Qualified</span> The team play now moves down. <strong style="color:var(--text)">Next in line: #${nx.id}</strong> (${nx.directCount}/2 directs). Help them get their 2 — share their <strong>invite page</strong> (the full team-build pitch, personalized to them) or send prospects the join button, which carries <strong style="color:var(--gold)">#${nx.id}</strong> as sponsor. (If someone still joins through your own link, that's a bonus — the entry reward is yours and they spill down your leg — but only #${nx.id}'s own directs can qualify them.)</p><div style="display:flex;gap:16px;align-items:center;flex-wrap:wrap"><span id="dQr" class="qr-img"></span><div style="min-width:220px"><div style="display:flex;gap:8px;flex-wrap:wrap"><button id="copyShare" class="btn btn-secondary btn-sm">Copy #${nx.id}'s page link</button><a class="btn btn-primary btn-sm" href="${esc(nx.referralUrl||'#')}" target="_blank" rel="noopener noreferrer">Join under #${nx.id} →</a></div><p class="micro" style="margin:10px 0 0;word-break:break-all">${esc(nxDash)}</p><p class="micro" style="margin:6px 0 0">When #${nx.id} reaches 2/2 this rotates to the next position in your leg — the qualification wave keeps moving down. General traffic can still go through the <a href="/start" style="color:var(--teal)">team rotation</a>.</p></div></div>`; el.innerHTML=`<p style="color:var(--muted);font-size:14px;line-height:1.6;margin:6px 0 14px"><span class="q-badge q-yes" style="margin-right:6px">★ Qualified</span> The team play now moves down. <strong style="color:var(--text)">Next in line: #${nx.id}</strong> (${nx.directCount}/2 directs). Help them get their 2 — share their <strong>invite page</strong> (the full team-build pitch, personalized to them) or send prospects the join button, which carries <strong style="color:var(--gold)">#${nx.id}</strong> as sponsor. (If someone still joins through your own link, that's a bonus — the entry reward is yours and they spill down your leg — but only #${nx.id}'s own directs can qualify them.)</p><div style="display:flex;gap:16px;align-items:center;flex-wrap:wrap"><span id="dQr" class="qr-img"></span><div style="min-width:220px"><div style="display:flex;gap:8px;flex-wrap:wrap"><button id="copyShare" class="btn btn-secondary btn-sm">Copy #${nx.id}'s page link</button><a class="btn btn-primary btn-sm" href="${esc(nx.referralUrl||'#')}" target="_blank" rel="noopener noreferrer">Join under #${nx.id} →</a></div><p class="micro" style="margin:10px 0 0;word-break:break-all">${esc(nxDash)}</p><p class="micro" style="margin:6px 0 0">When #${nx.id} reaches 2/2 this rotates to the next position in your leg — the qualification wave keeps moving down. General traffic can still go through the <a href="/start" style="color:var(--teal)">team rotation</a>.</p></div></div>`;
const qr=document.getElementById('dQr');if(qr)qr.innerHTML=qrSvg(nxDash); const qr=document.getElementById('dQr');if(qr)qr.innerHTML=qrSvg(nxDash);
const cp=document.getElementById('copyShare'); const cp=document.getElementById('copyShare');
+3 -3
View File
@@ -1,7 +1,7 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Current Crypto Team Build onboarding and sponsor placement."><title>Get Started | Crypto Team Build</title> <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Current Crypto Team Build onboarding and sponsor placement."><title>Get Started | Crypto Team Build</title>
<link rel="canonical" href="https://rmcircle.saasy.top/start"> <link rel="canonical" href="https://rmcircle.team/start">
<meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="Get Started — The RM Circle Premium Team Build"><meta property="og:description" content="See the current team sponsor placement and step-by-step onboarding for the RM Circle Premium team build."><meta property="og:url" content="https://rmcircle.saasy.top/start"><meta property="og:image" content="https://rmcircle.saasy.top/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="The RM Circle Premium Team Build roadmap card — Crypto Team Build Network"> <meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="Get Started — The RM Circle Premium Team Build"><meta property="og:description" content="See the current team sponsor placement and step-by-step onboarding for the RM Circle Premium team build."><meta property="og:url" content="https://rmcircle.team/start"><meta property="og:image" content="https://rmcircle.team/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="The RM Circle Premium Team Build roadmap card — Crypto Team Build Network">
<meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Get Started — The RM Circle Premium Team Build"><meta name="twitter:description" content="See the current team sponsor and onboarding steps."><meta name="twitter:image" content="https://rmcircle.saasy.top/og-card.jpg"><link rel="stylesheet" href="/styles.css"></head> <meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Get Started — The RM Circle Premium Team Build"><meta name="twitter:description" content="See the current team sponsor and onboarding steps."><meta name="twitter:image" content="https://rmcircle.team/og-card.jpg"><link rel="stylesheet" href="/styles.css"></head>
<body> <body>
<header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small>Getting Started</small></span></a><div class="nav-actions"><a class="btn btn-secondary" href="/">← Strategy</a><a class="btn btn-secondary" href="/training">Training</a></div></header> <header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small>Getting Started</small></span></a><div class="nav-actions"><a class="btn btn-secondary" href="/">← Strategy</a><a class="btn btn-secondary" href="/training">Training</a></div></header>
<main class="sponsor-shell"><div class="wrap"><div class="section-head"><div class="eyebrow">Current placement</div><h1 style="font-size:clamp(34px,5vw,54px);margin:8px 0 10px">Use the sponsor shown on <span class="gold">this page.</span></h1><p>Team placements rotate as positions become qualified. Do not use an old screenshot or saved referral link.</p></div> <main class="sponsor-shell"><div class="wrap"><div class="section-head"><div class="eyebrow">Current placement</div><h1 style="font-size:clamp(34px,5vw,54px);margin:8px 0 10px">Use the sponsor shown on <span class="gold">this page.</span></h1><p>Team placements rotate as positions become qualified. Do not use an old screenshot or saved referral link.</p></div>
+3 -3
View File
@@ -1,7 +1,7 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Step-by-step training videos for the RM Circle Premium team build — wallet setup, funding, and buying your position."><title>Training | Crypto Team Build</title> <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Step-by-step training videos for the RM Circle Premium team build — wallet setup, funding, and buying your position."><title>Training | Crypto Team Build</title>
<link rel="canonical" href="https://rmcircle.saasy.top/training"> <link rel="canonical" href="https://rmcircle.team/training">
<meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="Training — The RM Circle Premium Team Build"><meta property="og:description" content="Watch the step-by-step training: how the team build works, creating your MetaMask wallet, funding it, and buying your Premium position."><meta property="og:url" content="https://rmcircle.saasy.top/training"><meta property="og:image" content="https://rmcircle.saasy.top/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"> <meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="Training — The RM Circle Premium Team Build"><meta property="og:description" content="Watch the step-by-step training: how the team build works, creating your MetaMask wallet, funding it, and buying your Premium position."><meta property="og:url" content="https://rmcircle.team/training"><meta property="og:image" content="https://rmcircle.team/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Training — The RM Circle Premium Team Build"><meta name="twitter:description" content="Wallet setup, funding, and buying your Premium position — step by step."><meta name="twitter:image" content="https://rmcircle.saasy.top/og-card.jpg"> <meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Training — The RM Circle Premium Team Build"><meta name="twitter:description" content="Wallet setup, funding, and buying your Premium position — step by step."><meta name="twitter:image" content="https://rmcircle.team/og-card.jpg">
<link rel="stylesheet" href="/styles.css"></head> <link rel="stylesheet" href="/styles.css"></head>
<body> <body>
<header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small>Training</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="/">← Strategy</a><a class="btn btn-primary" href="/start">Get Started</a></div></header> <header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small>Training</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="/">← Strategy</a><a class="btn btn-primary" href="/start">Get Started</a></div></header>
+12 -12
View File
@@ -32,19 +32,19 @@ function chatRateLimited(ip) {
function chatSystemPrompt() { function chatSystemPrompt() {
const c = getConfig(), sponsors = getSponsors(), a = activeSponsor(sponsors); const c = getConfig(), sponsors = getSponsors(), a = activeSponsor(sponsors);
const waiting = sponsors.filter(s=>s.status==='waiting').length; const waiting = sponsors.filter(s=>s.status==='waiting').length;
return `You are "Team Help", the assistant on ${c.siteName || 'Crypto Team Build'} (https://rmcircle.saasy.top), the team site for the RM Circle Premium team build — a project of the Crypto Team Build Network. return `You are "Team Help", the assistant on ${c.siteName || 'Crypto Team Build'} (https://rmcircle.team), the team site for the RM Circle Premium team build — a project of the Crypto Team Build Network.
FACTS: FACTS:
- Strategy: enter RM Circle dApp at Premium tier (${c.premiumEntryPol || 362} POL on Polygon Mainnet, chain ID 137, POL is the gas token). Each member gets 2 directs to become "qualified"; the team then recommends retiring that link and helping those 2 get their 2 with their OWN links (moving-link strategy) — a position only qualifies through its own directs. If an extra signup lands on a qualified link anyway, present it as a BONUS, not a rule violation: it still pays that member the full entry reward and spills downward into the first open slot in their leg (depth). Spillover never qualifies the people below. - Strategy: enter RM Circle dApp at Premium tier (${c.premiumEntryPol || 362} POL on Polygon Mainnet, chain ID 137, POL is the gas token). Each member gets 2 directs to become "qualified"; the team then recommends retiring that link and helping those 2 get their 2 with their OWN links (moving-link strategy) — a position only qualifies through its own directs. If an extra signup lands on a qualified link anyway, present it as a BONUS, not a rule violation: it still pays that member the full entry reward and spills downward into the first open slot in their leg (depth). Spillover never qualifies the people below.
- First team goal: 30 properly placed positions (2+4+8+16), then 32, 64, 128 and beyond. - First team goal: 30 properly placed positions (2+4+8+16), then 32, 64, 128 and beyond.
- 8 Premium levels in order: Scintilla, Ascensus, Fabrica, Culmen, Apex, Fastigium, Vertex, Corona. Everyone starts at Scintilla. Upgrade as quickly as practical, ideally with earned POL; the first two payments at each level help fund the next upgrade. Stay aware of your active downline's levels so you don't fall behind and miss payments. - 8 Premium levels in order: Scintilla, Ascensus, Fabrica, Culmen, Apex, Fastigium, Vertex, Corona. Everyone starts at Scintilla. Upgrade as quickly as practical, ideally with earned POL; the first two payments at each level help fund the next upgrade. Stay aware of your active downline's levels so you don't fall behind and miss payments.
- SPILLOVER: when a sponsor's two matrix slots are full, the contract places new members in the next open slot further down (left to right) — possibly under someone else. Spillover fills that member's matrix and sets up future upgrade income to their position, but does NOT count toward qualification: only people who join using a member's own ID are their directs. Upgrade payments travel up the MATRIX (not who-referred-whom) and only stop at positions that are qualified (2 directs) AND already at the level being bought — otherwise the payment passes them by to the next eligible upline. Members can see their own matrix, spillover tags, and payments at https://rmcircle.saasy.top/my - SPILLOVER: when a sponsor's two matrix slots are full, the contract places new members in the next open slot further down (left to right) — possibly under someone else. Spillover fills that member's matrix and sets up future upgrade income to their position, but does NOT count toward qualification: only people who join using a member's own ID are their directs. Upgrade payments travel up the MATRIX (not who-referred-whom) and only stop at positions that are qualified (2 directs) AND already at the level being bought — otherwise the payment passes them by to the next eligible upline. Members can see their own matrix, spillover tags, and payments at https://rmcircle.team/my
- PAY FLOW (full diagram at https://rmcircle.saasy.top/how-pay-works): TWO income streams. (1) Entry rewards — when a direct joins under a member's link, that member gets the entry reward (~326 POL at Premium) and keeps it, on EVERY direct (not just the first two). (2) Upgrade payments — each person below you pays you ONCE, at the single level matching how far below you they sit: someone 1 layer down pays you at their Ascensus upgrade, 2 layers down at Fabrica, 3 at Culmen, 4 at Apex, and so on. To catch each one you must be at that level yourself AND qualified — so stay one level ahead of your team's deepest active layer. This is why a member can be "skipped" on a payment: it was reserved for the position at the matching depth, or they weren't leveled up in time. - PAY FLOW (full diagram at https://rmcircle.team/how-pay-works): TWO income streams. (1) Entry rewards — when a direct joins under a member's link, that member gets the entry reward (~326 POL at Premium) and keeps it, on EVERY direct (not just the first two). (2) Upgrade payments — each person below you pays you ONCE, at the single level matching how far below you they sit: someone 1 layer down pays you at their Ascensus upgrade, 2 layers down at Fabrica, 3 at Culmen, 4 at Apex, and so on. To catch each one you must be at that level yourself AND qualified — so stay one level ahead of your team's deepest active layer. This is why a member can be "skipped" on a payment: it was reserved for the position at the matching depth, or they weren't leveled up in time.
- TIERS: Premium (the tier the whole team builds at, ${c.premiumEntryPol || 362} POL entry) pays and earns FULL amounts; Standard costs about half and pays/earns HALF at every level. A smaller-than-expected payment almost always came from a Standard-tier position below. Tier is fixed at registration and CANNOT be changed later (upgrading advances your LEVEL, not your tier). Always recommend joining Premium and having recruits do the same. Amount comparison at /how-pay-works. - TIERS: Premium (the tier the whole team builds at, ${c.premiumEntryPol || 362} POL entry) pays and earns FULL amounts; Standard costs about half and pays/earns HALF at every level. A smaller-than-expected payment almost always came from a Standard-tier position below. Tier is fixed at registration and CANNOT be changed later (upgrading advances your LEVEL, not your tier). Always recommend joining Premium and having recruits do the same. Amount comparison at /how-pay-works.
- MEMBER DASHBOARD & ALERTS: each member has a live dashboard at https://rmcircle.saasy.top/my (enter your ID) showing position, team, payments, pipeline (incoming money forming below), spillover tags, and qualification badges. Members can turn on opt-in EMAIL ALERTS there (notified when paid, and when they need to upgrade to catch incoming pay). A member's personal invite page to share is https://rmcircle.saasy.top/join/<their-id>. - MEMBER DASHBOARD & ALERTS: each member has a live dashboard at https://rmcircle.team/my (enter your ID) showing position, team, payments, pipeline (incoming money forming below), spillover tags, and qualification badges. Members can turn on opt-in EMAIL ALERTS there (notified when paid, and when they need to upgrade to catch incoming pay). A member's personal invite page to share is https://rmcircle.team/join/<their-id>.
- RESILIENCE ("what if the creators disappear / owner loses keys / it falls apart over time"): the contract is autonomous and immutable — NO admin action, heartbeat, or living operator is required for joins, upgrades, matrix placement, or payouts; there is no pause switch and no expiry. Verified on-chain that the founder, development, and fee-receiver wallets are ordinary wallets (EOAs), NOT smart contracts — an ordinary wallet always accepts incoming POL even if its key is lost forever, so a dead or abandoned admin wallet cannot block any member payment (only the project's OWN uncollected fee would sit idle). The contract stores no balance (every payment is delivered in the same transaction). If the owner's key were lost, only the four limited admin powers freeze in place; members are unaffected. Details in section 6 of https://rmcircle.saasy.top/contract. - RESILIENCE ("what if the creators disappear / owner loses keys / it falls apart over time"): the contract is autonomous and immutable — NO admin action, heartbeat, or living operator is required for joins, upgrades, matrix placement, or payouts; there is no pause switch and no expiry. Verified on-chain that the founder, development, and fee-receiver wallets are ordinary wallets (EOAs), NOT smart contracts — an ordinary wallet always accepts incoming POL even if its key is lost forever, so a dead or abandoned admin wallet cannot block any member payment (only the project's OWN uncollected fee would sit idle). The contract stores no balance (every payment is delivered in the same transaction). If the owner's key were lost, only the four limited admin powers freeze in place; members are unaffected. Details in section 6 of https://rmcircle.team/contract.
- Current team sponsor: ${a ? `ID ${a.id}${c.showSponsorName && a.name ? ` (${a.name})` : ''}, ${a.directs}/2 directs` : 'shown on the start page'}. ${waiting} placement(s) waiting. Placements rotate as positions qualify — always verify on https://rmcircle.saasy.top/start right before joining. - Current team sponsor: ${a ? `ID ${a.id}${c.showSponsorName && a.name ? ` (${a.name})` : ''}, ${a.directs}/2 directs` : 'shown on the start page'}. ${waiting} placement(s) waiting. Placements rotate as positions qualify — always verify on https://rmcircle.team/start right before joining.
- Site pages: https://rmcircle.saasy.top/ (strategy overview + roadmap + live team stats), https://rmcircle.saasy.top/start (current sponsor + join steps), https://rmcircle.saasy.top/training (4 videos + spillover article), https://rmcircle.saasy.top/how-pay-works (the two income streams shown as a pay-flow diagram + Premium/Standard tier comparison), https://rmcircle.saasy.top/contract (plain-language security review of the verified smart contract — code can't change, no pooled funds, locked rules, honest list of operator powers), https://rmcircle.saasy.top/my (member dashboard), https://rmcircle.saasy.top/disclaimer (affiliate/earnings/risk disclosures). - Site pages: https://rmcircle.team/ (strategy overview + roadmap + live team stats), https://rmcircle.team/start (current sponsor + join steps), https://rmcircle.team/training (4 videos + spillover article), https://rmcircle.team/how-pay-works (the two income streams shown as a pay-flow diagram + Premium/Standard tier comparison), https://rmcircle.team/contract (plain-language security review of the verified smart contract — code can't change, no pooled funds, locked rules, honest list of operator powers), https://rmcircle.team/my (member dashboard), https://rmcircle.team/disclaimer (affiliate/earnings/risk disclosures).
- Telegram group for live team help: ${c.telegramUrl || 'https://t.me/cryptoteambuild'} - Telegram group for live team help: ${c.telegramUrl || 'https://t.me/cryptoteambuild'}
RULES: RULES:
@@ -129,7 +129,7 @@ function sendPaidEmail(toEmail, memberName, evt, unsub) {
const kindLine = evt.kind === 'upline' ? `an upgrade pass-up from member #${evt.fromId}` : `a referral reward from member #${evt.fromId}'s entry`; const kindLine = evt.kind === 'upline' ? `an upgrade pass-up from member #${evt.fromId}` : `a referral reward from member #${evt.fromId}'s entry`;
const verify = evt.tx ? `\n\nVerify it yourself on the blockchain:\nhttps://polygonscan.com/tx/${evt.tx}` : ''; const verify = evt.tx ? `\n\nVerify it yourself on the blockchain:\nhttps://polygonscan.com/tx/${evt.tx}` : '';
const foot = unsub ? `\n\nStop these alerts: ${unsub}` : `\n\nYou're receiving this because your team admin has this address on file for team-build updates. Reply to this email to be removed.`; const foot = unsub ? `\n\nStop these alerts: ${unsub}` : `\n\nYou're receiving this because your team admin has this address on file for team-build updates. Reply to this email to be removed.`;
const text = `Hi ${memberName || 'there'},\n\nGood news — your RM Circle position #${evt.toId} just received ${evt.pol.toFixed(2)} POL (${kindLine}).${verify}\n\nKeep the momentum going: check your level so the next payment in your leg doesn't pass you by.\nhttps://rmcircle.saasy.top/my/${evt.toId}\n\n— The RM Circle Team${foot}`; const text = `Hi ${memberName || 'there'},\n\nGood news — your RM Circle position #${evt.toId} just received ${evt.pol.toFixed(2)} POL (${kindLine}).${verify}\n\nKeep the momentum going: check your level so the next payment in your leg doesn't pass you by.\nhttps://rmcircle.team/my/${evt.toId}\n\n— The RM Circle Team${foot}`;
sendEmailRaw(toEmail, `Your RM Circle position #${evt.toId} just got paid ${evt.pol.toFixed(2)} POL`, text); sendEmailRaw(toEmail, `Your RM Circle position #${evt.toId} just got paid ${evt.pol.toFixed(2)} POL`, text);
} }
function firePostback(clickid, txid, source) { function firePostback(clickid, txid, source) {
@@ -223,7 +223,7 @@ async function handleChat(req, res) {
const ctrl = new AbortController(); const timer = setTimeout(()=>ctrl.abort(), 20000); const ctrl = new AbortController(); const timer = setTimeout(()=>ctrl.abort(), 20000);
const r = await fetch('https://openrouter.ai/api/v1/chat/completions', { const r = await fetch('https://openrouter.ai/api/v1/chat/completions', {
method: 'POST', signal: ctrl.signal, method: 'POST', signal: ctrl.signal,
headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json', 'HTTP-Referer': 'https://rmcircle.saasy.top', 'X-Title': 'RM Circle Team Help' }, headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json', 'HTTP-Referer': 'https://rmcircle.team', 'X-Title': 'RM Circle Team Help' },
body: JSON.stringify({ model: OPENROUTER_MODEL, max_tokens: 350, temperature: 0.3, messages: [{ role: 'system', content: chatSystemPrompt() }, ...msgs] }) body: JSON.stringify({ model: OPENROUTER_MODEL, max_tokens: 350, temperature: 0.3, messages: [{ role: 'system', content: chatSystemPrompt() }, ...msgs] })
}); });
clearTimeout(timer); clearTimeout(timer);
@@ -398,7 +398,7 @@ async function handleApi(req,res,pathname){
if(onchain&&!onchain.registered)return json(res,400,{error:`ID ${id} isn't registered on the smart contract — double-check the number.`}); if(onchain&&!onchain.registered)return json(res,400,{error:`ID ${id} isn't registered on the smart contract — double-check the number.`});
ma[id]={email:email.slice(0,120),ts:new Date().toISOString()}; ma[id]={email:email.slice(0,120),ts:new Date().toISOString()};
saveMemberAlerts(ma); saveMemberAlerts(ma);
sendEmailRaw(email,`Alerts on for RM Circle position #${id}`,`You're now subscribed to alerts for RM Circle position #${id}.\n\nYou'll get an email when this position is paid, and when it needs an upgrade to catch incoming pay.\n\nSee your position anytime: https://rmcircle.saasy.top/my/${id}\nStop these alerts: ${unsubUrl(id)}\n\n— The RM Circle Team`); sendEmailRaw(email,`Alerts on for RM Circle position #${id}`,`You're now subscribed to alerts for RM Circle position #${id}.\n\nYou'll get an email when this position is paid, and when it needs an upgrade to catch incoming pay.\n\nSee your position anytime: https://rmcircle.team/my/${id}\nStop these alerts: ${unsubUrl(id)}\n\n— The RM Circle Team`);
return json(res,200,{ok:true,subscribed:true,email:maskEmail(email)}); return json(res,200,{ok:true,subscribed:true,email:maskEmail(email)});
} }
if(req.method==='GET'&&pathname==='/api/public/current-sponsor'){ if(req.method==='GET'&&pathname==='/api/public/current-sponsor'){
@@ -512,7 +512,7 @@ async function handleApi(req,res,pathname){
// tags and injects a fresh, ID-specific set using the branded card image. // tags and injects a fresh, ID-specific set using the branded card image.
function serveMemberPage(req,res,file,kind,id){ function serveMemberPage(req,res,file,kind,id){
let html; try{ html=fs.readFileSync(file,'utf8'); }catch(e){ return staticFile(req,res,path.join(PUBLIC_DIR,'404.html'),404); } let html; try{ html=fs.readFileSync(file,'utf8'); }catch(e){ return staticFile(req,res,path.join(PUBLIC_DIR,'404.html'),404); }
const base='https://rmcircle.saasy.top'; const base='https://rmcircle.team';
const url=kind==='join'?`${base}/join/${id}`:`${base}/my/${id}`; const url=kind==='join'?`${base}/join/${id}`:`${base}/my/${id}`;
const title=kind==='join' const title=kind==='join'
? `You're invited to the RM Circle team by Member #${id}` ? `You're invited to the RM Circle team by Member #${id}`
@@ -574,7 +574,7 @@ function getMemberAlerts(){ try{ return readJson(MEMBER_ALERTS_FILE)||{}; }catch
function saveMemberAlerts(o){ writeJson(MEMBER_ALERTS_FILE,o); } function saveMemberAlerts(o){ writeJson(MEMBER_ALERTS_FILE,o); }
const ALERT_SECRET = crypto.createHash('sha256').update('rmc-alerts::'+ADMIN_PASSWORD).digest('hex'); const ALERT_SECRET = crypto.createHash('sha256').update('rmc-alerts::'+ADMIN_PASSWORD).digest('hex');
function unsubToken(id){ return crypto.createHmac('sha256',ALERT_SECRET).update('unsub:'+String(id)).digest('hex').slice(0,24); } function unsubToken(id){ return crypto.createHmac('sha256',ALERT_SECRET).update('unsub:'+String(id)).digest('hex').slice(0,24); }
function unsubUrl(id){ return `https://rmcircle.saasy.top/unsubscribe?id=${id}&t=${unsubToken(id)}`; } function unsubUrl(id){ return `https://rmcircle.team/unsubscribe?id=${id}&t=${unsubToken(id)}`; }
function maskEmail(e){ const i=String(e).indexOf('@'); if(i<1)return '•••'; return e[0]+'•••'+e.slice(i); } function maskEmail(e){ const i=String(e).indexOf('@'); if(i<1)return '•••'; return e[0]+'•••'+e.slice(i); }
// Upgrade-need alerts for both owner positions (email+Telegram) and any member // Upgrade-need alerts for both owner positions (email+Telegram) and any member
// who opted in via their dashboard (email only). Runs every 5 min from state. // who opted in via their dashboard (email only). Runs every 5 min from state.