pounce/MARKET_CONCEPT.md
yves.gugger 389379d8bb feat: DropCatch & Sedo API Clients + MARKET_CONCEPT v2
- DropCatch API Client mit OAuth2 Authentifizierung
- Sedo API Client (bereit für Credentials)
- Tier 1 APIs → Tier 2 Scraping Fallback-Logik
- Admin Endpoints: /test-apis, /trigger-scrape, /scrape-status
- MARKET_CONCEPT.md komplett überarbeitet:
  - Realistische Bestandsaufnahme
  - 3-Säulen-Konzept (Auktionen, Pounce Direct, Drops)
  - API-Realität dokumentiert (DropCatch = nur eigene Aktivitäten)
  - Roadmap und nächste Schritte
2025-12-11 09:36:32 +01:00

20 KiB

🎯 POUNCE MARKET — Das Herzstück der Plattform

Letzte Aktualisierung: 11. Dezember 2025


📋 Executive Summary

Die Market Page ist das Herzstück von Pounce. Hier fließen alle Datenquellen zusammen und werden dem User als "Clean Feed" präsentiert.

Vision (aus pounce_terminal.md)

"Die Market Page zeigt alle Domains die entweder:

  1. Zu Verkauf stehen (Auktionen)
  2. Bald frei werden (Drops)
  3. Über Pounce direkt angeboten werden (Pounce Direct)"

Aktueller Stand: Phase 1 — Intelligence

┌─────────────────────────────────────────────────────────────────┐
│ POUNCE MARKET — Aktueller Datenfluss                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  DATENQUELLEN:                                                  │
│  ─────────────────────────────────────────────────────────────  │
│                                                                  │
│  📦 WEB SCRAPING (Hauptquelle)                                  │
│  └─→ ExpiredDomains.net (325 Auktionen) ✅                      │
│  └─→ GoDaddy RSS Feed (10 Auktionen) ✅                         │
│  └─→ Sedo Public (7 Auktionen) ✅                               │
│  └─→ NameJet Public (6 Auktionen) ✅                            │
│  └─→ DropCatch Public (7 Auktionen) ✅                          │
│                                                                  │
│  🔌 OFFIZIELLE APIs (Konfiguriert)                              │
│  └─→ DropCatch Partner API ⚠️ (Nur eigene Aktivitäten)         │
│  └─→ Sedo Partner API ⏳ (Credentials fehlen)                   │
│                                                                  │
│  💎 POUNCE DIRECT (User-Listings)                               │
│  └─→ DNS-verifizierte Verkaufsangebote ❌ (0 Listings)          │
│                                                                  │
│  🔮 ZONE FILES (Phase 3 — Zukunft)                              │
│  └─→ Verisign .com/.net 🔜                                      │
│  └─→ PIR .org 🔜                                                │
│                                                                  │
│  ─────────────────────────────────────────────────────────────  │
│  TOTAL: 355 Domains im Feed | 0 Pounce Direct                   │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

📊 TEIL 1: Bestandsaufnahme — Was haben wir?

A. Backend-Komponenten

Komponente Status Beschreibung
Unified Feed API /auctions/feed Live Kombiniert Pounce Direct + External
Pounce Score v2.0 Live Length, TLD, Bids, Time Pressure
Vanity Filter Live Premium-Domains für Public Users
Auction Scraper Läuft 5 Plattformen, Scheduler aktiv
Listings API Fertig DNS-Verifizierung, Inquiry-System
Sniper Alerts Fertig Keyword-Matching, Notifications

B. Frontend-Komponenten

Seite Status Beschreibung
/terminal/market Live Vollständiger Market Feed für Auth Users
/auctions Live Public Market mit Vanity Filter
/buy Live Pounce Direct Marketplace Browse
/buy/[slug] Live Listing-Detailseite
/terminal/listing Live Seller Dashboard

C. Datenquellen — Realitätscheck

Offizielle APIs — Die Ernüchterung

DropCatch API:

Status: ✅ Authentifiziert
Problem: Zeigt nur EIGENE Aktivitäten (Bids, Backorders)
         NICHT das öffentliche Auktionsinventar
Nutzen: User-Integration (verbinde dein DropCatch-Konto)

Sedo API:

Status: ⏳ Client bereit, Credentials fehlen
Wo finden: Sedo.com → Mein Sedo → API-Zugang
Benötigt: Partner ID + SignKey

Web Scraping — Unsere Hauptquelle

# Aktuelle Scraper-Architektur
TIER_1_APIS = [
    ("DropCatch", _fetch_dropcatch_api),  # Für eigene Aktivitäten
    ("Sedo", _fetch_sedo_api),  # Wenn konfiguriert
]

TIER_2_SCRAPING = [
    ("ExpiredDomains", _scrape_expireddomains),  # 325 Domains
    ("GoDaddy", _scrape_godaddy_rss),  # 10 Domains
    ("Sedo", _scrape_sedo_public),  # 7 Domains (Fallback)
    ("NameJet", _scrape_namejet_public),  # 6 Domains
    ("DropCatch", _scrape_dropcatch_public),  # 7 Domains (Fallback)
]

🎯 TEIL 2: Das Konzept — Die 3 Säulen des Market

Säule 1: AUKTIONEN (Externe Plattformen)

"Zeige alle relevanten Auktionen von GoDaddy, Sedo, NameJet, etc."

Datenquellen:

  • Web Scraping (primär)
  • Partner APIs (wenn verfügbar)

Filter-Strategie:

# Vanity Filter für Public Users (aus pounce_features.md)
def is_premium_domain(domain: str) -> bool:
    name, tld = domain.rsplit('.', 1)
    
    # Premium TLDs only
    if tld not in ['com', 'io', 'ai', 'co', 'ch', 'de', 'net', 'org', 'app', 'dev']:
        return False
    
    # Keine Spam-Muster
    if len(name) > 12: return False
    if '-' in name: return False
    if sum(c.isdigit() for c in name) > 1: return False
    
    return True

UI-Darstellung:

Domain Source Price Status Action
crypto-bank.io 🏢 GoDaddy $2,500 ⏱️ 2h left [Bid ↗]
meta-shop.com 🏢 Sedo $5,000 🤝 Offer [View ↗]

Säule 2: POUNCE DIRECT (User-Listings)

"Das sind die Domains, die es NUR bei Pounce gibt. Unser USP."

Das Konzept (aus pounce_terminal.md):

┌─────────────────────────────────────────────────────────────────┐
│ POUNCE DIRECT — Der Listing-Wizard                              │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  STEP 1: DOMAIN EINGEBEN                                        │
│  ───────────────────────────────────────────────────────────    │
│  Domain: [zurich-immo.ch___________]                            │
│  Preis:  [$950_______] ○ Fixpreis ● Verhandlungsbasis           │
│                                                                  │
│  STEP 2: DNS VERIFICATION (Trust-Check)                         │
│  ───────────────────────────────────────────────────────────    │
│  Füge diesen TXT-Record bei deinem Registrar hinzu:             │
│                                                                  │
│  Name:  _pounce-verify                                          │
│  Value: pounce-verify-8a3f7b9c2e1d                              │
│                                                                  │
│  [🔄 VERIFY DNS]                                                │
│                                                                  │
│  STEP 3: LIVE!                                                  │
│  ───────────────────────────────────────────────────────────    │
│  ✅ Domain verifiziert!                                         │
│  Dein Listing erscheint jetzt im Market Feed.                   │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Warum das genial ist:

Vorteil Erklärung
Unique Content Domains, die es NUR bei Pounce gibt
Höhere Conversion "Instant Buy" statt "Bid on external site"
Vendor Lock-in Verkäufer listen bei uns (0% Provision!)
SEO Power Jede Listing = eigene Landing Page
Trust Signal DNS-Verifizierung = Qualitätsgarantie

UI-Darstellung:

Domain Source Price Status Action
zurich-immo.ch 💎 Pounce $950 Instant [Buy Now]

Säule 3: DROPS (Domains die bald frei werden)

"Zeige Domains BEVOR sie in Auktionen landen."

Phase 1 (Jetzt): Deleted Domains via Scraping

ExpiredDomains.net → Deleted Domains Liste → Pounce Filter → Feed

Phase 3 (Zukunft): Zone File Analysis

┌─────────────────────────────────────────────────────────────────┐
│ ZONE FILE PIPELINE — Die Unicorn-Strategie                      │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  1. DAILY DOWNLOAD (4:00 UTC)                                   │
│     └─→ Zone Files von Verisign, PIR, etc.                      │
│                                                                  │
│  2. DIFF ANALYSIS                                                │
│     └─→ Was war gestern da, ist heute weg?                      │
│     └─→ Diese Domains DROPPEN in 1-5 Tagen!                     │
│                                                                  │
│  3. POUNCE ALGORITHM                                             │
│     └─→ Nur Premium-Domains durchlassen (Score > 70)            │
│                                                                  │
│  4. OUTPUT: "Drops Tomorrow" (Tycoon Exclusive)                 │
│     └─→ Domains BEVOR sie in Auktionen erscheinen               │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

🔧 TEIL 3: Technische Architektur

Der Unified Feed API Endpoint

# backend/app/api/auctions.py

@router.get("/feed")
async def get_market_feed(
    source: str = Query("all", enum=["all", "pounce", "external"]),
    keyword: Optional[str] = None,
    tld: Optional[str] = None,
    min_price: Optional[float] = None,
    max_price: Optional[float] = None,
    min_score: int = Query(0, ge=0, le=100),
    ending_within: Optional[int] = None,  # Stunden
    verified_only: bool = False,
    sort_by: str = Query("score", enum=["score", "price_asc", "price_desc", "time", "newest"]),
    limit: int = Query(50, le=200),
    offset: int = Query(0),
    current_user: Optional[User] = Depends(get_current_user_optional),
):
    """
    🚀 UNIFIED MARKET FEED — Das Herz von Pounce
    
    Kombiniert:
    - 💎 Pounce Direct: DNS-verifizierte User-Listings (Instant Buy)
    - 🏢 External Auctions: Scraped von GoDaddy, Sedo, etc.
    - 🔮 Drops: Domains die bald frei werden (Phase 3)
    
    Für nicht-authentifizierte User:
    - Vanity Filter aktiv (nur Premium-Domains)
    - Pounce Score sichtbar, aber limited Details
    
    Für authentifizierte User (Trader/Tycoon):
    - Vollzugriff auf alle Domains
    - Advanced Filtering
    - Valuation Data
    """

Pounce Score v2.0

def calculate_pounce_score_v2(domain: str, auction_data: dict) -> int:
    """
    Der Pounce Score — Qualitäts- und Opportunity-Bewertung
    
    A) INTRINSIC VALUE (Domain selbst)
       - Länge (kurz = wertvoll)
       - TLD Premium (com > io > xyz)
       - Dictionary Word Bonus
    
    B) MARKET SIGNALS (Aktivität)
       - Bid Activity (mehr Bids = mehr Interesse)
       - Time Pressure (endet bald = Opportunity)
       - Price-to-Value Ratio (unterbewertet = 🔥)
    
    C) PENALTIES
       - Bindestriche (-30)
       - Zahlen wenn >3 Zeichen (-20)
       - Zu lang >15 Zeichen (-25)
    """
    score = 50  # Baseline
    name = domain.rsplit('.', 1)[0]
    tld = domain.rsplit('.', 1)[1]
    
    # Länge
    if len(name) <= 3: score += 30
    elif len(name) == 4: score += 25
    elif len(name) == 5: score += 20
    elif len(name) <= 7: score += 10
    
    # TLD
    tld_scores = {'com': 20, 'ai': 25, 'io': 18, 'co': 12, 'ch': 15}
    score += tld_scores.get(tld, 0)
    
    # Market Signals
    bids = auction_data.get('num_bids', 0)
    if bids >= 20: score += 15
    elif bids >= 10: score += 10
    elif bids >= 5: score += 5
    
    # Penalties
    if '-' in name: score -= 30
    if any(c.isdigit() for c in name) and len(name) > 3: score -= 20
    
    return max(0, min(100, score))

📈 TEIL 4: Roadmap

ERLEDIGT (Stand: 11. Dezember 2025)

  • Unified Feed API /auctions/feed
  • Pounce Score v2.0 mit Market Signals
  • Vanity Filter für Public Users
  • Pounce Direct Listing-System (DNS-Verifizierung)
  • Sniper Alerts mit Keyword-Matching
  • Web Scraping für 5 Plattformen
  • DropCatch API Client (für User-Integration)
  • Sedo API Client (bereit für Credentials)

🎯 NÄCHSTE SCHRITTE (Diese Woche)

  1. Sedo API Credentials eingeben

    • Sedo.com → Mein Sedo → API-Zugang
    • Partner ID + SignKey in .env
  2. Erste Pounce Direct Listings erstellen

    • Test-Domains zum Verifizieren des Flows
    • Zeigt "Unique Content" im Feed
  3. Scraper-Stabilität verbessern

    • Fallback-Logik testen
    • Error-Handling optimieren

🔮 PHASE 3 (6-12 Monate)

  1. Zone File Access beantragen

    • Verisign (.com/.net)
    • PIR (.org)
    • Kosten: $0-$10,000/Jahr
  2. "Drops Tomorrow" Feature

    • Zone File Diff-Analyse
    • Tycoon Exclusive ($29/mo)
  3. Pounce Instant Exchange

    • Integrierter Escrow-Service
    • 5% Gebühr (statt 15-20% bei Konkurrenz)

🎨 TEIL 5: UI/UX Design

Die Master-Tabelle (aus pounce_terminal.md)

Spalte Inhalt Visualisierung
Domain Name der Domain Fettgedruckt. Bei "Pounce Direct" → 💎 Icon
Pounce Score Qualitäts-Algorithmus 0-100 (Grün > 80, Gelb 50-80, Rot < 50)
Price / Bid Preis oder aktuelles Gebot $500 oder $50 (Bid)
Status / Time Countdown oder Verfügbarkeit ⏱️ 4h left oder Instant
Source Herkunft 🏢 GoDaddy, 💎 Pounce
Action Der Button [Bid ↗] oder [Buy Now]

Filter Bar

[Toggle] Hide Spam (Standard: AN)
[Toggle] Pounce Direct Only
[Dropdown] TLD: .com, .ai, .io, .ch
[Dropdown] Price: < $100, < $1k, High Roller
[Dropdown] Ending: 1h, 4h, 24h, 7d

Visuelle Hierarchie

// Pounce Direct Items werden prominent angezeigt
{pounceDirectItems.length > 0 && (
  <section className="mb-6">
    <div className="flex items-center gap-2 text-emerald-400 font-bold mb-3">
      <Diamond className="w-4 h-4" />
      Pounce Exclusive  Verified Instant Buy
    </div>
    {pounceDirectItems.map(item => <PounceDirectCard />)}
  </section>
)}

// External Auctions darunter
<section>
  <h2>Active Auctions</h2>
  {externalItems.map(item => <AuctionCard />)}
</section>

💰 TEIL 6: Monetarisierung

Tier-basierte Features (aus pounce_pricing.md)

Feature Scout ($0) Trader ($9) Tycoon ($29)
Market Feed 🌪️ Raw (Vanity Filter) Curated (Clean) Curated + Priority
Alert Speed 🐢 Daily 🐇 Hourly Real-Time (10m)
Watchlist 5 Domains 50 Domains 500 Domains
Sell Domains 5 Listings 50 Listings + Featured
Pounce Score Locked Basic + SEO Data
Drops Tomorrow Exclusive

Die "Conversion-Falle" (aus pounce_features.md)

Wenn ein nicht-eingeloggter User auf "Buy Now" bei einem Pounce Direct Listing klickt:

┌─────────────────────────────────────────────────────────────────┐
│ 🔒 Secure Transaction                                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Du bist dabei, ein verifiziertes Direct-Listing anzusehen.     │
│                                                                  │
│  Um den Verkäufer zu kontaktieren und Käuferschutz zu           │
│  genießen, logge dich bitte ein.                                │
│                                                                  │
│  [Login]  [Create Free Scout Account]                           │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

🔑 TEIL 7: Kritische Erkenntnisse

API-Realität vs. Erwartung

API Erwartung Realität
DropCatch Alle öffentlichen Auktionen Nur eigene Bids/Backorders
Sedo TBD Credentials fehlen noch

Konsequenz:

  • Web Scraping bleibt unsere Hauptquelle für öffentliche Daten
  • APIs sind nützlich für User-Integration (verbinde dein DropCatch-Konto)
  • Zone Files sind der langfristige Weg zur Datenhoheit

Der echte USP: Pounce Direct

"Domains die es NUR bei Pounce gibt."

Das ist der Schlüssel. Nicht die Aggregation (das kann jeder), sondern der Unique Content durch User-Listings.

Priorität: Erste Pounce Direct Listings aktivieren!


📋 Checkliste für den Launch

Backend

  • Unified Feed API
  • Pounce Score v2.0
  • Vanity Filter
  • Scraper aktiv
  • Sedo API Credentials eingeben
  • Scheduler-Intervall optimieren

Frontend

  • Terminal Market Page
  • Public Auctions Page
  • Pounce Direct Highlighting
  • Filter (Source, TLD, Price)
  • "Hot Right Now" Section
  • Better Empty States

Content

  • Erste 5 Test-Listings erstellen
  • DNS-Verifizierung testen
  • Listing-to-Feed Flow validieren

💎 Fazit

Die Market Page ist funktional, aber der wahre USP (Pounce Direct) ist noch nicht aktiviert.

Die Reihenfolge:

  1. Aggregation funktioniert (Scraping)
  2. Pounce Direct aktivieren (User-Listings)
  3. 🔮 Zone Files für Datenhoheit (Phase 3)

"Der Weg zum Unicorn führt nicht über besseres Scraping, sondern über einzigartigen Content."

— pounce_strategy.md