- 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
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:
- Zu Verkauf stehen (Auktionen)
- Bald frei werden (Drops)
- Ü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)
-
Sedo API Credentials eingeben
- Sedo.com → Mein Sedo → API-Zugang
- Partner ID + SignKey in
.env
-
Erste Pounce Direct Listings erstellen
- Test-Domains zum Verifizieren des Flows
- Zeigt "Unique Content" im Feed
-
Scraper-Stabilität verbessern
- Fallback-Logik testen
- Error-Handling optimieren
🔮 PHASE 3 (6-12 Monate)
-
Zone File Access beantragen
- Verisign (.com/.net)
- PIR (.org)
- Kosten: $0-$10,000/Jahr
-
"Drops Tomorrow" Feature
- Zone File Diff-Analyse
- Tycoon Exclusive ($29/mo)
-
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:
- ✅ Aggregation funktioniert (Scraping)
- ⏳ Pounce Direct aktivieren (User-Listings)
- 🔮 Zone Files für Datenhoheit (Phase 3)
"Der Weg zum Unicorn führt nicht über besseres Scraping, sondern über einzigartigen Content."
— pounce_strategy.md