🎟 Sweep — Feature Spec v0.1 · Draft for Review

What We're Building

Full feature specification for Sweep — a crypto-native sweepstakes platform on Base. Every feature, every mechanic, every design choice. Review → sign off → ship.

📅 Last updated 2026-03-29 Chain Base (USDT) 🎰 Model Sweepstakes (no purchase necessary) 🔀 Randomness Pyth → VRF → drand 🏗 Sprint S1 in progress

What is Sweep

One-sentence version

A crypto sweepstakes where you buy NFT tickets with USDT, get entered into 5 simultaneous prize tiers (daily through annual), earn more chances through referrals, and have a guaranteed prize floor backed by an LP vault — all on Base, provably fair, no-custody.

$1–10
Ticket price (USDT)
ERC-721
NFT minted per ticket
5 Pools
Auto-distributed
Pyth VRF
Provably fair draw
USDT
Prize paid to wallet

Core Mechanic #1

The 5-Tier Prize Pool

Every ticket purchase auto-splits into five pools. Bigger pools = bigger prizes = higher suspense. This creates a reason to keep playing every day while building toward life-changing jackpots.

90%
to players
Daily Pool — 36% of ticket revenue
Draw every 24h. High frequency = habit loop. Small wins keep players engaged.
36%
Weekly Pool — 24%
Draw every 7 days. Mid-tier reward. Larger than daily, keeps weekly players.
24%
Monthly Pool — 18%
Draw at month end. Meaningful prize. Anchors players for 30 days.
18%
Quarterly Pool — 12%
Draw every 90 days. High-value prize. Creates 90-day retention hook.
12%
Annual Jackpot — 10%
Draw once a year. Life-changing amount. The marketing centrepiece. Builds all year.
10%
Operations — 10%
Protocol fee. Covers gas, keeper automation, team.
10%

Full Feature Spec

Every feature, one card

Status: Done = shipped in contracts · Sprint = in current sprint · Future = planned · TBD = direction not locked

🎟

Ticket Purchase Sprint 1

User pays USDT to buy a ticket. One ERC-721 NFT is minted per ticket. NFT is the proof of entry — tradeable on any NFT marketplace. No token-gating, open to anyone.

  • USDT (6 decimals) on Base
  • Configurable ticket price per round
  • Max tickets per round (optional cap)
  • NFT expires after 365 days
vs Competitors: most are ERC-20 only. NFT ticket = provable ownership + secondary market
🎲

Provably Fair Draw Sprint 1–2

Three-layer randomness stack. No single oracle can be manipulated. Fallback chain ensures draws always complete.

  • Primary: Pyth Entropy (fastest, Base-native)
  • Fallback: Chainlink VRF V2.5 (battle-tested)
  • Tertiary: drand (fully decentralized, no trusted party)
  • On-chain verifiable proof for every draw
vs PoolTogether: single VRF source. vs Rollbit: centralized RNG. Sweep: 3-layer verifiable
💸

Multi-Tier Prize Distribution Sprint 1

Every ticket automatically feeds all 5 pools. PrizeDistributor contract handles splits at draw time. Users don't have to choose which pool — they're entered in all of them.

  • Daily / Weekly / Monthly / Quarterly / Annual
  • Auto-split at ticket purchase (no manual routing)
  • Each pool has its own draw schedule and keeper
  • USDT paid directly to winner wallet — no claiming needed
🤝

Referral System Sprint 2

On-chain referral tracking via ReferralRegistry contract. Influencers and affiliates get a cut of tickets they drive. Referred users get a bonus entry or discount.

  • Unique referral link per wallet (on-chain registry)
  • Referrer earns % of ticket revenue from their referred users
  • Referred user gets bonus ticket chances (multiplier)
  • If a referred user wins → referrer gets a % of the pot split
  • Designed for influencer affiliate campaigns
Inspired by: DraftKings referral. Differentiator: all on-chain, transparent, auto-paid
🏦

LP Vault / Prize Guarantee Sprint 2

The LP Vault is a prize floor mechanism. LPs deposit USDT and earn yield. The vault backs minimum prize guarantees — so even on day 1 with few players, the daily prize is real. This is what makes launch-day prizes credible.

  • LPs provide USDT liquidity, earn protocol fees + yield
  • Minimum prize floor guaranteed by vault balance
  • If ticket revenue > guarantee: players get full upside
  • If ticket revenue < guarantee: LP vault tops up the pool
  • LP withdrawals time-locked to prevent rug
This is what you were asking about — the LP "guarantee" = minimum prize floor, not leverage
🔄

Auto-Entry Subscriptions Sprint 3

Users can subscribe for recurring auto-entry. Every period (daily/weekly) their wallet is auto-enrolled. Reduces friction — no need to remember to buy tickets.

  • ERC-4337 or push-payment model (TBD)
  • Configurable: daily / weekly subscription
  • Cancel anytime, no lock-in
  • Subscribers get loyalty multiplier bonus
⚙️

Keeper Automation Sprint 3

Automated smart contract keepers trigger draws, close rounds, and process payouts on schedule. No manual admin required after launch.

  • Chainlink Automation (Upkeep) or custom keeper bots
  • Auto-triggers daily/weekly/monthly draws at schedule
  • Alerts if draw fails (3-layer fallback)
  • Auto-creates next round after completion
🏭

Pool Factory Sprint 3

Factory contract for deploying custom lottery pools. B2B feature — partners can create their own branded sweepstakes using the same infrastructure.

  • Deploy new pool with custom params (price, schedule, prize split)
  • Each pool is independent but uses shared randomness + ticket contracts
  • Foundation for future charity lotteries, brand partnerships
🎁

Free Entry / Social Sharing TBD

Sweepstakes legal model requires "no purchase necessary." Free entry via mail-in or social share keeps us on the right side of lottery law in the US.

  • Alternate free entry path (social share, email signup, etc.)
  • Prevents "Prize + Chance + Consideration" Howey test issue
  • Social sharing = organic growth mechanic built in
Legal note: McDonalds Monopoly model — "no purchase necessary" sidesteps lottery classification
🏆

Points / Loyalty System TBD

Players earn points for: buying tickets, referring friends, playing consistently, and winning. Points can boost ticket multipliers or be redeemed for guaranteed entries.

  • Streak bonuses (play 7 days straight = 2x entries)
  • Referral points (bring 5 friends = bonus pool entry)
  • Points → ticket multiplier conversions
  • Seasonal point resets or rollover (TBD)
❤️

Charitable Giving TBD

Option for players to route their winnings (or a % of ticket price) to vetted charities. Framework Ventures identified as potential partner for first charity round.

  • Player-selectable charity at ticket purchase
  • Platform takes 0% of charitable amount
  • Charity whitelist (vetted, on-chain disbursement)
  • Annual Charity Jackpot: 100% of pool to charity player's choice
🌐

Web App Sprint 5

Next.js frontend. Connect wallet → buy ticket → see prize pools → track your entries → claim (if needed). Clean, minimal, mobile-first.

  • RainbowKit / Wagmi wallet connection
  • Live pool size ticker
  • Countdown to next draw per tier
  • Personal ticket history
  • Winner hall of fame
  • Referral link generator
🤖

Telegram Bot Sprint 5

In-Telegram ticket buying and draw notifications. Users can participate without leaving Telegram. Draw announcements sent to groups.

  • Buy ticket via inline bot command
  • Draw result push notifications
  • Pool size updates on demand
  • Affiliate link sharing from within Telegram
🔌

SDK / API Sprint 4

React component SDK and REST API for embedding Sweep into partner products. B2B distribution layer.

  • <SweepWidget /> React component (embeddable)
  • REST endpoints: pools, tickets, draws, webhooks
  • Webhook on draw completion → partner notification
  • API key auth for partners
💰

Payout Escrow Sprint 3

PayoutEscrow contract holds prizes until the winner claims or a timeout triggers auto-send. Prevents stuck funds.

  • Prize held in escrow after draw
  • Winner can claim within 90 days
  • After 90 days: unclaimed prize rolls into next pool
  • Emergency admin recovery (multisig only)
🔐

Access Control & Pausability Done (S1)

OpenZeppelin AccessControl with OPERATOR_ROLE and ADMIN_ROLE. Emergency pause stops all ticket sales and draws. Protects against exploits.

  • Role-based: Admin, Operator, LP
  • Pausable: one tx freezes all activity
  • Reentrancy guard on all fund-moving functions
  • Ownership: multisig at launch

Competitive Landscape

What we took from who — and where we differ

We're not inventing from scratch. Each mechanic has precedent. The differentiation is the combination: transparent, on-chain, multi-tier, with sweepstakes legal cover.

Feature
Sweep ✦
PoolTogether
Rollbit
Powerball/State Lottery
NFT ticket (ERC-721)
(ERC-20)
(paper)
Multi-tier pools (5x)
(1 pool)
Partial
Partial (jackpot + smaller)
Provably fair / on-chain VRF
(3-layer)
(1-layer)
(centralized)
Referral / affiliate system
(on-chain)
(off-chain)
LP-backed prize guarantee
LPVault
yield-based
Auto-entry subscriptions
(Sprint 3)
Sweepstakes legal model (no lottery)
(gray area)
(offshore)
(IS a lottery)
USDT stable (no volatility risk)
(USDC yield, ETH)
(crypto volatile)
(USD cash)
Charitable giving option
(TBD)
(some state lotteries)
Telegram bot entry
(Sprint 5)
Points / loyalty multipliers
(TBD)
Partial
Embeddable SDK / white-label
(Sprint 4)

Game Experience

User stories — what does it feel like to play?

Three archetypes. Each has a different motivation and play pattern. Sweep is designed to serve all three simultaneously.

🎮
The Daily Player
Crypto-native, plays every day
"I'm in for the daily draws. It's like a morning ritual — buy a ticket, see if I won, repeat."
  1. Opens Telegram bot at 9am, types /buy
  2. Pays $2 USDT, gets NFT ticket #4521 minted to wallet
  3. Entered in all 5 pools automatically
  4. At midnight, Keeper triggers daily draw via Pyth entropy
  5. Wins $47 from daily pool → USDT hits wallet instantly
  6. Streak bonus: 7-day player gets 1.5x ticket weight tomorrow
📣
The Influencer / Affiliate
Crypto Twitter, 50k followers
"I post my referral link, my followers join, I get a cut of every ticket they buy — and if anyone wins, I get a slice of that too."
  1. Connects wallet, generates referral link (sweep.gg/r/0x…)
  2. Posts to 50k Twitter followers
  3. 200 followers buy tickets via that link
  4. ReferralRegistry credits 3% of $400 in tickets = $12 revenue
  5. One follower wins the weekly pool ($2,100)
  6. Influencer receives 1% of that win = $21 automatically
🏆
The Annual Jackpot Hunter
Occasional player, big dream
"I don't care about the daily. I'm here for the annual jackpot. I'll subscribe and let it accumulate."
  1. Subscribes to weekly auto-entry ($5/week USDT)
  2. SweepSubscription auto-buys ticket each Monday
  3. 52 tickets per year → 52 entries in annual pool
  4. Annual pool grows all year: $50k → $200k → $1M+
  5. Dec 31: Keeper triggers annual draw via Chainlink VRF
  6. Winner gets full annual pool. If unclaimed in 90 days → rolls to next year
💧
The LP Provider
DeFi-native, wants yield
"I provide $50k USDT to the LP Vault. I earn yield on that, plus a share of protocol fees. I'm backing the prize guarantee."
  1. Deposits $50k USDT into LPVault
  2. Vault backs the daily prize minimum ($500 guaranteed)
  3. Earns 8% APY from protocol fee share (estimated)
  4. Low-volume week: vault tops up $200 to hit $500 guarantee
  5. High-volume week: vault keeps full yield, players get bigger prize
  6. Withdraws after 30-day lockup with earned yield

Build Roadmap

Sprint-by-sprint delivery

7 sprints from contracts to mainnet. Current sprint: S1 (contracts in DESIGN phase, moving to BUILD).

Sprint 0 — Foundation Done

Architecture, contract stubs, Notion import, CLAUDE.md, repo structure, forge research track created.

SweepLottery.sol stub SweepTicket.sol stub PrizeDistributor.sol stub Repo structure Notion import (20 pages)
S1

Sprint 1 — Core Contracts Active (DESIGN → BUILD)

Full SweepLottery + SweepTicket + PrizeDistributor implementation with USDT on Base. Tests. No LP vault yet.

SweepLottery.sol (full) SweepTicket ERC-721 PrizeDistributor 5-tier MockUSDT + MockVRF Hardhat tests Pyth entropy integration
S2

Sprint 2 — Liquidity + Referrals

LPVault (prize guarantee), ReferralRegistry (on-chain affiliates), RandomnessRouter (Pyth→VRF→drand fallback chain).

LPVault.sol ReferralRegistry.sol RandomnessRouter.sol LP deposit/withdraw logic Referrer payout on ticket + win
S3

Sprint 3 — Infrastructure

PoolFactory (B2B deployment), PayoutEscrow (unclaimed prize handling), SweepSubscription (auto-entry), Keeper automation.

PoolFactory.sol PayoutEscrow.sol SweepSubscription.sol Keeper bots Chainlink Automation
S4

Sprint 4 — API + SDK

REST API for partner integrations. React SweepWidget component. Webhook support for draw events.

api/src/routes/ SweepWidget React SDK Webhook engine API key auth
S5

Sprint 5 — App + Bot

Next.js web app (wallet connect, live pools, ticket history). Telegram bot (buy, notify, share).

Next.js app RainbowKit integration Pool size live ticker Draw countdown UI Telegram bot Referral link generator
S6

Sprint 6 — Audit + Testnet

Security audit (when ready), Base testnet deployment, end-to-end testing, bug bounty.

Base Sepolia testnet E2E test suite Bug bounty Audit (TBD partner)
S7

Sprint 7 — Mainnet Launch

Base mainnet deploy. Seed LP vault. Launch first daily lottery. Affiliate campaign kickoff.

Base mainnet deploy LP vault seeding First round: $1/ticket Charity partner announcement Influencer affiliate launch

Open for Review

What needs sign-off

These are the decisions that aren't locked yet. Each needs Joseph's input before we build the next sprint that depends on them.

💵

Ticket Price TBD

Current placeholder: $1–10 USDT. Research swarma will sim this. Questions:

  • Fixed price per round, or variable?
  • Daily round = $2, weekly = $5, or one price for all?
  • Multiple ticket denominations per round?
📊

Prize Split % Research in progress

Draft: 36% daily / 24% weekly / 18% monthly / 12% quarterly / 10% annual. Swarma will optimize this. Do we want to lock the splits, or should they be governance-adjustable?

  • Hard-coded in contract (immutable, trust-maximizing)?
  • Admin-adjustable (flexible but centralized risk)?
  • Governance vote (decentralized, slow to change)?
🏦

LP Vault Economics TBD

How big does the LP vault need to be at launch for credible guarantees? Swarma will model this. Inputs needed:

  • What is the guaranteed daily minimum prize? ($100? $500? $1,000?)
  • LP yield: what % of protocol fees goes to LPs?
  • Who seeds the vault at launch? (Team? Investors? Public LPs?)
⚖️

Free Entry Mechanic TBD

Required for sweepstakes classification (no lottery license needed). Design not finalized. Options:

  • Mail-in card (traditional sweepstakes method)
  • Social share to wallet address
  • Email signup → single free entry per period
  • GLI audit certification (Cy's suggestion from roadmap)
🤖

First Affiliate Partner TBD

Roadmap mentions influencer affiliate campaign at launch. Who is the first major affiliate partner? Framework Ventures mentioned for charity — are they also the first affiliate?

🎯

Points / Loyalty System Design TBD

Multiple designs possible. Needs product decision before Sprint 3:

  • On-chain points (ERC-20 or mapping)?
  • Off-chain (no gas cost)?
  • Redeemable for ticket entries or just multipliers?
  • Seasonal resets?

Sign-Off Tracker

Who needs to approve what

This doc is a draft. These are the sign-offs needed before each sprint locks its scope.

Joseph
Product Owner — Feature scope sign-off
⏳ Reviewing this doc
Legal Review
Sweepstakes classification + free entry
🔓 Not started
Economics / Research
Prize splits, ticket price, LP sizing
🔬 Swarma running
Sprint 1 Contracts
Core contract build
⏳ Design → Build after forge fix