PHASE 0 · LIVE ON BASE SEPOLIA

Be human, on chain.

Pulse is a verification layer for Web3 wallets. Check in once a day for a week, mint a soulbound badge, and any contract can read it in one line. You never hand over an ID or an iris scan, and the only thing that ever leaves your wallet is a signature.

CONTRACTS VERIFIED BACKEND LIVE TOKEN #1 MINTED · MAY 20 INTEGRATION < 1 HOUR

Sybil farms collect the rewards meant for people. The alternatives ask users for their iris.

Airdrops, governance, allocations, retroactive rewards. Anywhere a protocol pays out, fake users show up at industrial scale. Clean wallet histories are commodity priced. A thousand fake users costs less than a single real customer acquisition.

The mainstream answer is to collect identity. Iris scans, KYC, biometric capture. These work, and most users reasonably refuse them. The fallback answer is CAPTCHAs and social graphs, both of which farms cracked years ago. Pulse is the third thing.

Three steps. The hardest one is just showing up.

01

Check in daily

Connect a wallet and sign one message a day. It costs nothing, it isn't a transaction, and your personal data stays out of it entirely. The signature is the whole ceremony.

02

Hold the streak

One check-in a day, seven days in a row. Let 48 hours pass since your last check-in and the streak resets. You can't buy your way past the week, and nobody gets an exception.

03

Mint the badge

After day seven, the backend reviews the week against internal rules. If it signs off, the wallet mints a permanent, non-transferable badge on Base. The daily ritual ends there. Bronze never expires, and it's only the first tier.

Hit the API right now. It answers.

LIVE API · COPY AND RUN
GET /reputation/{wallet}
pulse-api · curl
$ curl https://pulse-protocol-production-44ef.up.railway.app/reputation/<wallet>

{
  "wallet":         "0x1d5d4f8a…61a21",
  "tier":           "bronze",
  "streak":         7,
  "lastCheckInAt":  "2026-05-20T21:27Z"
}
AUTHNONE
SDKNONE
RESPONSEREAL JSON
TOKEN #1 · SOULBOUND
Pulse Bronze shield badge
PULSE · BRONZE
7-day streak
HOLDER0x1d5d…61a21
MINTEDMay 20 · 21:27 GMT
BLOCK41772066
CHAINBase Sepolia

Bronze is live. The rest stay quiet until they're ready.

Pulse Bronze shield
Bronze
7-DAY STREAK

Entry tier. Seven consecutive daily check-ins, each one signed from the wallet. The Phase 0 baseline.

LIVE · PHASE 0
Pulse Silver shield
Silver
EXTENDED CRITERIA

Layered signals beyond the streak. Sustained activity over longer windows.

PHASE 1
Pulse Gold shield
Gold
HIGHEST ASSURANCE

The hardest signal to fake. Reserved for wallets that compound participation across protocols and time.

PHASE 2

PHASE 0 SHIPS BRONZE ONLY · THE REST ARRIVES WHEN IT'S READY

One boolean or the full picture. Take whichever your stack prefers.

ON-CHAIN READ

One line of Solidity.

Call balanceOf on the Pulse Badge contract. One means a human did the week. Zero means they didn't. It's a standard ERC-721 read, so your contract already knows how to make it.

solidity
// the whole integration
bool human = pulseBadge.balanceOf(wallet) > 0;
REST READ

Or hit the endpoint.

GET /reputation/{wallet} returns tier, streak, and last check-in time. It's the same endpoint shown above, already answering, and it works from any backend in any language.

shell
$ curl https://pulse-protocol-production-44ef.up.railway.app/reputation/<wallet>

Integration takes under an hour. Contract addresses and a walkthrough ship in the partner pack. We're not announcing, we're looking for partners who'd rather see receipts than slides. Ask in private: @pulseproofed.

VISION

Sybil resistance stops being every project's problem. It sits in the stack next to ENS and signatures, where teams assume it's there.