martbost
84d9f49d4b
Held purchase: nudge the sponsor automatically (email + on-site) to link a wallet and switch on payouts, once an hour at most
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-15 23:43:11 -05:00
martbost
66b3c83d3d
Burner: when a campaign's pinned position is dry on-chain, settle the spend from another funded position on the same account (credits are pooled per account)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-15 12:49:16 -05:00
martbost
92e7304882
Daily growth snapshot to the Telegram payments feed and shared topic (sign-ups, purchases, POL paid, campaigns, viewing, lifetime totals); admin preview/send-now routes and settings
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-15 12:43:19 -05:00
martbost
560d758ed9
Pipeline: count linked positions' buyers on member cards, the way My line and badges do; show the main/positions split on the card
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-15 12:22:25 -05:00
martbost
02f742f90a
Pipeline: sponsor follow-up board (stages from the ledger, notes/follow-ups/tags, stage messages into chat), gated by pipelineMode with a coming-soon card until launch; training cards can wait on the same switch
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-15 11:01:03 -05:00
martbost
56aa7418ad
Payment and missed-payment notices also land in the on-site inbox (login pop-up + Messages card), with who bought, share in POL and dollars, and the transaction link
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-15 10:44:48 -05:00
martbost
d6d771d93e
Missed-payout email: tell the skipped member who bought, what they missed in POL and dollars, buyers needed, and how to close the gap
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-15 10:39:12 -05:00
martbost
e03dbbffcf
Audit: ignore history already refunded and campaigns older than the hourly log; login daily fee capped at remaining budget
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-15 05:45:57 -05:00
martbost
84a9063bbe
Admin > Reports: counters audit (views vs delivery logs, login days charged vs shown, featured views, clicks vs views, spend vs budget), daily with Telegram alert
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-15 05:32:13 -05:00
martbost
7423347c95
Featured strip: count impressions (one per viewer per campaign per hour) so featured advertisers see views and the by-hour chart
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-15 05:21:58 -05:00
martbost
f155a8cc24
Sponsor hold: a named sponsor that cannot be paid (payouts off, chain lookup failed, unknown) blocks the first purchase and activation with a message and alerts the admin, instead of silently crediting the company
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 21:00:27 -05:00
martbost
1533d377cc
Member updates: paced + retried Sendy opt-in checks (unknowns never cached as declines), explicit recipient list for repairs, recipients recorded on the send log
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 14:24:27 -05:00
martbost
6e8f1ccf9d
Member updates: closing text after the notes (sign-off placement)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 14:21:13 -05:00
martbost
14868753c0
Member updates: saved draft (loads into the admin card, Save draft button)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 14:11:51 -05:00
martbost
024170e7f8
Member updates: audience defaults to newsletter opt-ins (Sendy list status), explicit 'everyone' option; sendy.status()
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 13:47:13 -05:00
martbost
7bb956e896
Admin > Releases: email an update to members (pick notes, intro, audience, preview, test, send; opt-outs honoured; send log)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 13:40:01 -05:00
martbost
203ebdb4bf
Dashboard payload carries lineBannerUrl so the Overview launch mark counts the banner item (was 7 of 8 vs 8 of 8 on /launch)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 12:17:12 -05:00
martbost
119644d688
Line at a glance + My line: every level shows who made their $20+ buy and how many qualifying buyers of their own they have (Clinton); 60s member cache for line views
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 11:29:10 -05:00
martbost
0a19e77e7f
Badges count qualifying buyers across linked positions (never regress); line chips light on any of a member's positions; buyers tile notes linked-position buyers
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 10:44:36 -05:00
martbost
1fad5bdab2
No-payout positions (siteConfig.noPayoutIds, default 25): linkage only. Buy-from picker disables them, purchases from them refused, joins routed away from them and their upline chain
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 10:30:58 -05:00
martbost
e699513636
My line: show who sponsored each person on every row, all three levels
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 10:15:44 -05:00
martbost
201d249738
My line: Activity drop-down on every row, all three levels (last seen, stage, ads today, campaigns, link views, line, wallet, badges, Working/Quiet); Video Maker font override for local runs
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 09:56:14 -05:00
martbost
9316dfc0db
Toolkit: ship the rest of the ladder (Spark templates + handout, Circuit Video Maker + split tester, Nexus Leader Ops, grants, co-brand, partner code)
...
- Spark: one-tap banner/text campaign templates aimed at the member's link (POST /api/my/toolkit/template); printable QR handout at /handout/<username>
- Circuit: videomaker.js renders every promo video/short with the member's end card + QR via ffmpeg (Dockerfile adds ffmpeg + ttf-dejavu), hosted in Spaces; split tester compares join angles
- Nexus: Leader Ops (three-level triage, stalled flags, one-click nudges), AI team broadcast kind + Send to my team, credit grants from the leader's earned pool, co-branded join page (sponsor bio for level-3 sponsors), member-funded partner code (promo_codes.funder; redemption charges the funder) + /partners?ref=<username>
- toolkit ladder all live; chatbot updated; my.js v20260914e, site.css v20260914c, join.js/partners.js v20260914a
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 07:15:43 -05:00
martbost
c1f58b2acf
Promo toolkit by badge + AI Copy Engine at Surge: posts, DMs, follow-ups, objection replies, emails, stories in the member's name; monthly free allowance by badge (20/60/150), then ad credits per generation; admin usage view
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 06:42:55 -05:00
martbost
6233d112e0
Leaderboard: company account excluded from rankings. Weekly member email: credits unspent, streak, contest rank, tank, line (sponsors by default; memberWeeklyEmail=1 for everyone)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 05:26:23 -05:00
martbost
b0ef3b3a58
Leaderboard + referral contest: /leaderboard (week/month/all, read from chain, own positions excluded), Overview card with own rank, weekly and monthly winners recorded at rollover with credit ladders granted automatically and announced to Telegram
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 05:22:39 -05:00
martbost
b3523e9dc4
Release notes + roadmap: /whats-new page, Overview What's new card, Admin > Releases editor
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-14 04:54:43 -05:00
martbost
8e415c3cf4
Badge share sheet: public badge page with preview image (/b/<user>/<badge>), X/Facebook/Telegram/WhatsApp/LinkedIn/native share, copy link, save image
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-13 17:13:18 -05:00
martbost
e63bc57a99
Badge posts: manual Post to Telegram is admin-only; members' badges still post automatically on unlock
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-13 17:09:59 -05:00
martbost
964a02a342
Achievement badges: personalised badge image auto-posted to the Telegram payments topic and main group on unlock (once per badge), Post to Telegram button, feed toast
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-13 16:55:43 -05:00
martbost
0c58b80184
Holding tank: no releasing an adoptee within 3 days of pickup, dropped adoptions count toward the two-adoption limit, releases posted to the feed and Telegram
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-13 13:50:28 -05:00
martbost
6589930945
Join page names the owner of the link it was opened with, and tells a member when they are previewing their own page
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-13 07:54:29 -05:00
martbost
6ca287042f
Member labels: resolve a brand-new buyer by on-chain wallet so purchase emails name the username, not member #
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-13 07:49:08 -05:00
martbost
53f87f79ba
Blog syndication: publishing an article posts it to X and Instagram through Blotato (cover via media upload, once per article, retry button, status column)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-13 07:20:47 -05:00
martbost
4efba20d4e
Earn: video stops when leaving the tab/pane, 'all watched today' message, open earn tokens survive a redeploy; admin member search matches as you type, clearer old-site line; QA earn harness follows the done screen
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-13 06:46:08 -05:00
martbost
0c7f957db4
Admin: member search + drilldown card (identity, chain, credits, line, purchases, payouts, campaigns) with username/sponsor/wallet/credits/delete actions; sortable + filterable admin tables; Earn tab zero-credit button wording
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-13 06:27:07 -05:00
martbost
4caa0ef5a8
Sign-up guard: honeypot is read-only until a trusted focus and ignores browser autofill (own email); masked value logging
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-13 04:57:51 -05:00
martbost
49a98e7ee3
Blog: admin-written coaching articles, server-rendered public /blog with SEO metadata, sitemap, RSS, robots
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 18:42:56 -05:00
martbost
1a83f4f2ff
Earn tab: progress hint shows at every stage (the claim-ready hint was unreachable); member guide /earning
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 17:41:13 -05:00
martbost
6395ad3a7e
Dashboard: community toasts for joins, tank arrivals, adoptions, purchases, payouts and qualifications
...
A second, quieter toast (bottom-left, one per 4 s) shows site-wide activity from the
live feed for every signed-in member; personal payout toasts are unchanged. The server
pushes Joined (at first username, with tank flag) and Adopted events onto the feed.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 16:03:43 -05:00
martbost
a385fbf4c2
Username is required: blocking first step on every sign-in until one is saved
...
showOnboard(required) has no skip and no dismiss; a suggestion from the email
prefix is prefilled (GET /api/my/username-suggest, made unique); the member
area does not render until the username exists. Welcome tour and login ad still
run once for invite arrivals afterwards. Wallet-only sessions are unaffected.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 15:32:42 -05:00
martbost
2a96403ffd
Site-owner partner page at /partners: kit content, the explainer video, ?name and ?promo personalisation, company placement CTA
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 13:32:03 -05:00
martbost
3c81df2167
Holding tank: adoption posts to the Telegram payments topic naming the sponsor
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 13:18:59 -05:00
martbost
d6b85f0ce9
Join alias: /join/company and /join/top place partners under member #1 (the company position)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 12:32:26 -05:00
martbost
fc55714757
Partner promo codes: reusable codes that add free ad credits, tracked per redemption
...
promos.js (promo_codes + promo_redemptions, JSON fallback): create/update codes with
credits, partner, optional cap and expiry, on/off. Redeemed once per account either
from a join link ?promo=CODE (cookie, applied at signup) or the Overview box
'Have a promo code?' (/api/my/promo/redeem). Admin > Traffic gets a Partner promo
codes card (create, toggle, uses, recent redemptions). Chatbot line added.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 10:53:17 -05:00
martbost
9b60e6414e
Referral purchase email names the buyer: @username in subject and body
...
memberLabel() resolves @username, or the owner's username for a linked
position, else member #id. Subject: '@name just bought a $20 ad package'.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 10:37:45 -05:00
martbost
ef088601c3
Admin Traffic tab: referring domains, landing pages, angles, by day
...
traffic.js logs public page views by referring domain (30 s buffered; page_hits
table or traffic.json), coach exposes all join-page views, and
/api/admin/traffic merges page views, join-page views, signups, registrations
and $20+ buyers by first-touch source for 7/30/90/365-day ranges.
Also: line-tree chips no longer truncate own-position labels.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 07:51:01 -05:00
martbost
abc76c47c8
Line tree: gold outline follows the chain's BuyerCounted events, plus a legend
...
The Overview tree painted gold on the first N chips (N = buyer count) instead of
the members the contract actually counted, so a non-buyer listed first showed as
qualified (Hugh's line, 2026-09-12). /api/my/line now flags each member with
qualified from BuyerCounted events for the account's ids; the tree uses that flag
and shows a legend for gold / plain / open chips.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 07:42:24 -05:00
martbost
e46780f872
Legacy bridge: optional src tag (old-domain splash) recorded on the account source
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 07:33:36 -05:00
martbost
eae2a04dc0
Legacy bridge pages, welcome-back credits, holding-tank alerts
...
- /from/faucetwave and /from/tieroneads (?seg=advertiser): the squeeze page with
brand copy and no video, sponsor cookie cleared so arrivals land in the holding
tank, angle + a legacy:<brand> source recorded on the account.
- legacy.js: private list DATA_DIR/legacy.json (email -> brand, segment); listed
emails get a one-time credit grant at account creation (legacyCreditsAdvertiser
500 / legacyCreditsEarner 150, admin-editable), recorded in legacy-grants.json.
- Holding-tank alerts: dashboard payload carries who is waiting (Overview notice
with usernames + adopt link), and a 15-minute tick posts new arrivals to the
shared Telegram payments topic.
- Chatbot prompt lines + admin setting labels.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-12 07:25:32 -05:00