From 16a9f76f5051cdab9a87842931efc32bb5bf9af2 Mon Sep 17 00:00:00 2001 From: martbost Date: Thu, 10 Sep 2026 07:06:19 -0500 Subject: [PATCH] Training: section pills; /plays member page (three plays + Qualified Start) with the member's own link in the scripts Co-Authored-By: Claude Fable 5.1 --- public/assets/my.js | 12 ++- public/assets/plays.js | 12 +++ public/my.html | 3 +- public/plays.html | 173 +++++++++++++++++++++++++++++++++++++++++ server.js | 1 + 5 files changed, 199 insertions(+), 2 deletions(-) create mode 100644 public/assets/plays.js create mode 100644 public/plays.html diff --git a/public/assets/my.js b/public/assets/my.js index 8669556..c2a0eb1 100644 --- a/public/assets/my.js +++ b/public/assets/my.js @@ -292,8 +292,18 @@ const el = $('trainingList'); if (!el) return; const items = r.items || []; if (!items.length) { el.innerHTML = '

Training materials are being added. Check back soon.

'; return; } + // section pills at the top: one per group, plus All; the active pill filters the list + const groups = [...new Set(items.map(it => it.group).filter(Boolean))]; + const pills = $('trainingPills'); + const want = loadTraining.filter || 'all'; + if (pills) { + pills.hidden = groups.length < 2; + pills.innerHTML = ['all', ...groups].map(g => '').join(''); + pills.querySelectorAll('[data-tg]').forEach(b => b.addEventListener('click', () => { loadTraining.filter = b.dataset.tg; loadTraining(); })); + } + const shown = want === 'all' ? items : items.filter(it => it.group === want); let lastGroup = null; - el.innerHTML = items.map(it => { + el.innerHTML = shown.map(it => { // optional section header: entries carry a `group`; a header renders when it changes let head = ''; if (it.group && it.group !== lastGroup) { lastGroup = it.group; head = '

' + esc(it.group) + '

'; } diff --git a/public/assets/plays.js b/public/assets/plays.js new file mode 100644 index 0000000..329f8db --- /dev/null +++ b/public/assets/plays.js @@ -0,0 +1,12 @@ +// Team-building plays page: members only, and the scripts carry the member's own link. +(async function () { + try { await IAP.renderNav('training'); } catch (e) {} + let me = null; + try { me = await (await fetch('/api/me')).json(); } catch (e) {} + const signedIn = !!(me && me.signedIn && me.email); + document.getElementById('gate').style.display = signedIn ? 'none' : 'block'; + document.getElementById('body').style.display = signedIn ? 'block' : 'none'; + if (!signedIn) return; + const tok = me.username || me.refCode || me.memberId; + if (tok) document.querySelectorAll('[data-link]').forEach(el => { el.textContent = location.origin + '/join/' + tok; }); +})(); diff --git a/public/my.html b/public/my.html index fe20a54..23ec729 100644 --- a/public/my.html +++ b/public/my.html @@ -720,6 +720,7 @@

Everything to help you get started and grow: walkthrough videos and materials. New lessons land here as they are added.

+
@@ -796,7 +797,7 @@ - + diff --git a/public/plays.html b/public/plays.html new file mode 100644 index 0000000..60c369a --- /dev/null +++ b/public/plays.html @@ -0,0 +1,173 @@ + + + + +Team-building plays | InstantAdPay + + + + + + + + + +
+
+

Member training

+

Three ways to build a line.

+

Pick one and run it. Every number here comes from the live contract and the rate table, not from a slide.

+
+ +

Members only

Sign in to your member area to read the plays. Sign in

+ +
+
+ The one rule under all three plays: unqualified levels pass up. + If someone on your level 2 buys before you have two qualifying buyers, that 20% does not wait for you. It goes to the next qualified sponsor above you, or to the platform. Same for level 3 and five. Whatever play you run, the first job is the same: get qualified before your line gets busy. +
+ +

How a package splits, the moment it sells

+
+
50%
Direct sponsor
+
20%
Level 2 · needs 2
+
10%
Level 3 · needs 5
+
20%
Platform
+
+

The ladder on your Overview, and what each rung unlocks

+
+
Rung 1
Joined
Welcome tour: 25 credits
+
Rung 2
Payouts on
Spark badge · 10 credits
+
Rung 3
First buyer
Surge · 25 credits · 50% starts
+
Rung 4
2 qualifying
Circuit · 50 credits · level 2 · wall position 2
+
Rung 5
5 qualifying
Nexus · 100 credits · level 3 · wall position 3
+
+ +
+

Opening move · Qualified Start

works with any play
+

Fits: anyone who would rather start qualified than wait for their first two buyers.

+

Qualification is earned by buyers, never bought. But you can be your own first buyers, openly. Under Buy packages, link a second wallet you own as a position. When it buys a $20 package the contract counts it as a qualifying buyer, half the purchase comes straight back to your main wallet, and its credits pool with yours. Two positions open level 2 the same day; five open level 3. Then run whichever play fits you with the ladder already climbed. The three Qualified Start videos in Training show every click.

+
+
Net cost
Level 2: about $20 net for $40 of ad credits. Level 3: about $50 net for $100 of credits. Plus a little POL for gas in each wallet.
+
Say it plainly
Your own money, your own wallets, a faster start. Never an income promise: qualification only pays on future purchases in your line.
+
+
+ +
+

Play 1 · Wide and teach

the fifty play
+

Fits: someone with an audience, a list, a group, or traffic they can point somewhere.

+

Every direct who buys is 50% to you, instantly, forever. Directs are the only thing that qualifies you. The teaching is what fills levels 2 and 3 without extra work from you: your directs' buyers are your 20%, their buyers are your 10%.

+
    +
  1. One new conversation a day, minimum. Text a friend and Social posts in Promo tools already carry your link.
  2. +
  3. Send paid traffic to an angle lander, not the bare link. Add ?v=adspend for advertisers, ?v=free for freebie seekers, ?v=instant for the crypto-curious.
  4. +
  5. Every new direct gets the same three sentences inside 24 hours (sponsor chat or the daily broadcast): pick your username, link your wallet and switch on payouts, send your link to one person today. That is the whole teaching. They pass it down.
  6. +
  7. Run the network's own ads at your link. Buy a package or claim the daily 5 credits, then spend credits on a Featured link (40 credits a day) or a text ad pointed at your angle lander.
  8. +
+
+
Scoreboard
Joined your line climbing daily · Qualifying buyers 2, then 5 · level 2 and 3 rows appearing in My line
+
Ceiling and weakness
No ceiling on width. Shallow lines churn if you skip step 3.
+
+
+ +
+

Play 2 · Two, then down

the depth play
+

Fits: someone with a small circle who would rather coach two people well than pitch twenty.

+

Two qualifying buyers open level 2, wall position 2, the Circuit badge and 50 bonus credits. From there every person your two bring in pays you 20%, and every person those people bring in pays you 10% once you reach five. Your effort goes into two relationships instead of a funnel.

+
    +
  1. Get two directs to a $20+ package. Sit with them on the buy if you have to. Trust Wallet needs a POL cushion; SafePal or MetaMask are smoother.
  2. +
  3. Coach them to their two. Sponsor chat daily for the first week. One broadcast a day to your directs with a single ask each time.
  4. +
  5. Set your line banner to your team's meeting place (a Telegram group, a training page). Every new member three levels down meets it on their welcome tour.
  6. +
  7. Keep adding directs until you have five. This is the catch: level 3 only opens on five qualifying directs of your own. Two deep, coached well, earns a healthy 20% level. It does not open the 10% level.
  8. +
+
+
Scoreboard
Qualifying buyers 2 · level 2 count in My line rising · your directs' own qualifying counts
+
Ceiling and strength
Level 2 income until you personally hit five. The stickiest lines come from this play.
+
+
+ +
+

Recommended default

+

Play 3 · Five and wide

the combination
+

Fits: anyone willing to do both. This is the play the dashboard ladder is actually built for.

+
    +
  1. Sprint to five qualifying directs. Nothing else matters until level 3 is open: Nexus, wall position 3 (your whole public page runs your own links), 100 bonus credits, and the full 50 / 20 / 10.
  2. +
  3. Then split the day. Mornings wide: one new conversation, one post, one ad running. Evenings deep: read My line, message the three newest directs, send the broadcast.
  4. +
  5. Coach the 2-then-5 rule down the line. Each of your five gets pushed to two (your level 2 fills), then to five (your level 3 fills). Use the achievements Share links; people copy what they see rewarded.
  6. +
  7. Book the featured strip for 7 days whenever you have 280 credits spare. Ten slots a day, every member sees it.
  8. +
+
+
Scoreboard
All four Overview tiles, plus Earning levels: buyers referred, level open, how many to next
+
Why it wins
Width qualifies you. Depth pays you on other people's effort. Only this play does both on purpose.
+
+
+ +
+

Which play fits you

+
+ + + + +
You haveRunFirst target
A list, a group, or ad budgetWide and teachFive qualifying directs in 30 days
A few close people and patienceTwo, then downTwo qualifying directs in 14 days, both coached to their two
An hour a day and a phoneFive and wideFive qualifying, then one wide and one deep action every day
+
+ +
+

First 30 days, any play

+
+
Day 1
Username. Wallet linked. Payouts on. Welcome tour done (25 credits). Link sent to one person.
+
Days 2 to 7
One conversation a day. Claim the daily 5 credits. First buyer (25 bonus credits).
+
Days 8 to 14
Second qualifying buyer. Level 2 open. Line banner set. First broadcast sent.
+
Days 15 to 30
Coach the two to their two. Add directs three, four, five. Level 3 open by day 30 is the stretch goal.
+
+
+ +
+

Messages that fit each play

+
WideI run ads anyway. This one pays me in the same transaction the buyer's package sells, on a public ledger. Free to join by email: your link
+
DepthI need two people who will actually do this with me, not twenty who will look at it. You are one of the two I thought of. your link
+
Combination · to a new directThree things today: username, wallet on, one person. I will check in tomorrow.
+
+ +

No income is guaranteed. Results depend on your effort. Cryptocurrency involves risk of loss. InstantAdPay sells advertising; it is not an investment.

+
+ +
+
InstantAdPay · back to Training · live ledger
+
Advertising services with a performance referral program. Not an investment product; no income guarantees. Crypto transactions are irreversible. Never spend what you cannot afford.
+
+
+ + + + diff --git a/server.js b/server.js index 0ba611c..7e144bd 100644 --- a/server.js +++ b/server.js @@ -1687,6 +1687,7 @@ const server = http.createServer(async (req, res) => { if (p === '/my') return sendFile(res, path.join(PUBLIC_DIR, 'my.html')); if (p === '/admin') return sendFile(res, path.join(PUBLIC_DIR, 'admin.html')); if (p === '/shorts') return sendFile(res, path.join(PUBLIC_DIR, 'shorts.html')); + if (p === '/plays') return sendFile(res, path.join(PUBLIC_DIR, 'plays.html')); if (/^\/view\/[a-f0-9]{32}$/.test(p)) return sendFile(res, path.join(PUBLIC_DIR, 'view.html')); m = /^\/uploads\/([a-z0-9]{24}\.(?:png|jpg|webp|gif|mp4|webm))$/.exec(p); if (m) return sendFile(res, path.join(UPLOADS_DIR, m[1]));