Background wallpaper
← BackPRODUCTION

Play-to-Airdrop Campaign System

Gamified user acquisition and retention platform

Updated October 16, 20252 min read
Tech Stack:
TypeScriptPostgreSQLRedis

Overview

Gamified campaign platform that transformed user acquisition from passive airdrops to active engagement through quest-based rewards and social mechanics. The system supported 50K+ participants.

Built dynamic quest engine with anti-sybil protection using wallet clustering, behavioral analysis, and machine learning anomaly detection.

$campaign system architecture

┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Next.js UI │─────▶│ Campaign │─────▶│ Reward │ │ (Quests) │ │ Engine │ │ Distribution│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ │ │ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ │PostgreSQL│ │ Redis │ │Chainlink │ │ Tracking │ │ Cache │ │ Keepers │ └──────────┘ └──────────┘ └──────────┘

sybil-detection/calculateRisk.ts
interface SybilScore {
  walletClustering: number;    // 0-100 (higher = more suspicious)
  behavioralAnalysis: number;  // Bot-like patterns
  socialVerification: number;  // Twitter credibility
  onChainHistory: number;      // Activity diversity
  referralQuality: number;     // Referred users legitimacy
}

function calculateSybilRisk(user: User): number {
  const scores = analyzeSybilIndicators(user);

  // Weighted average
  const risk =
    scores.walletClustering * 0.3 +
    scores.behavioralAnalysis * 0.3 +
    (100 - scores.socialVerification) * 0.2 +
    (100 - scores.onChainHistory) * 0.1 +
    (100 - scores.referralQuality) * 0.1;

  return risk; // 0-100 (higher = more likely Sybil)
}

// Auto-flag users with risk > 70
// Manual review for 50-70
// Auto-approve < 50

Links:

  • Proprietary campaign platform developed for ConsumerFi
  • Case study available upon request