pounce/YIELD_INTEGRATION_CONCEPT.md
2025-12-12 14:23:32 +01:00

507 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Yield / Intent Routing Integrations-Konzept
**Ziel:** Domains von "toten Assets" zu "Yield-Generatoren" machen.
**Kern-Mechanismus:** User verbindet Domain → Pounce erkennt Intent → Routing zu Affiliate-Partnern → Passive Einnahmen.
---
## 1. Public Pages (nicht eingeloggt)
### 1.1 Landing Page 4. Pillar hinzufügen
Aktuell: **DISCOVER → TRACK → TRADE**
Neu: **DISCOVER → TRACK → TRADE → YIELD**
```
┌─────────────────────────────────────────────────────────────────┐
│ │
│ YIELD │
│ "Let your domains work for you." │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🔌 Connect Point DNS to ns.pounce.io │ │
│ │ 🧠 Analyze We detect: "kredit.ch" → Loan Intent │ │
│ │ 💰 Earn Affiliate routing → CHF 25/lead │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ "Your domains become autonomous agents." │
│ │
│ [Activate My Domains →] │
│ │
└─────────────────────────────────────────────────────────────────┘
```
**Teaser-Statistiken (für Trust):**
- "CHF 45'000+ generated this month"
- "2'400+ domains earning passively"
- "Avg. CHF 18.50/domain/month"
### 1.2 Neue Public Page: `/yield`
Eine eigene Landingpage für das Yield-Feature:
| Section | Inhalt |
|---------|--------|
| **Hero** | "Dead Domains? Make them work." + Animated revenue counter |
| **How it works** | 3-Step Animation: Connect → Analyze → Earn |
| **Use Cases** | Branchen-spezifische Beispiele (zahnarzt.ch, kredit.de, hotel-x.ch) |
| **Revenue Calculator** | "Gib deine Domain ein → geschätzter monatlicher Ertrag" |
| **Trust Signals** | Partner-Logos (Awin, PartnerStack, etc.), Testimonials |
| **CTA** | "Start Earning" → Login/Register |
---
## 2. Terminal (eingeloggt)
### 2.1 Sidebar-Erweiterung
**Neue Struktur der Sidebar:**
```
DISCOVER
├── MARKET (Auktionen)
└── INTEL (TLD Pricing)
MANAGE
├── RADAR (Dashboard)
├── WATCHLIST (Monitoring)
├── SNIPER (Alerts)
├── FOR SALE (Listings)
└── YIELD ✨ ← NEU
SETTINGS
```
### 2.2 Neue Seite: `/terminal/yield`
**Layout:**
```
┌──────────────────────────────────────────────────────────────────────────┐
│ YIELD [?] Help │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Active │ │ Monthly │ │ Pending │ │ Total │ │
│ │ Domains │ │ Revenue │ │ Payout │ │ Earned │ │
│ │ 12 │ │ CHF 156 │ │ CHF 89 │ │ CHF 1'245 │ │
│ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │
│ │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ 🔍 Search domains... [+ Activate Domain] │
│ │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Domain │ Status │ Intent │ Route │ Yield │ │
│ ├──────────────────────────────────────────────────────────────────┤ │
│ │ zahnarzt-zh.ch │ 🟢 Active │ 🏥 Medical │ Comparis │ CHF 45 │ │
│ │ crm-tool.io │ 🟢 Active │ 💻 SaaS │ HubSpot │ $ 23 │ │
│ │ hotel-davos.ch │ 🟢 Active │ 🏨 Travel │ Booking │ CHF 67 │ │
│ │ mein-blog.de │ ⚪ Idle │ ❓ Unknown │ — │ — │ │
│ │ kredit-ch.com │ 🟡 Pending│ 💰 Finance │ Analyzing │ — │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────────┘
```
### 2.3 Domain Aktivieren Modal/Wizard
**Schritt 1: Domain eingeben**
```
┌─────────────────────────────────────────────────┐
│ Activate Domain for Yield │
├─────────────────────────────────────────────────┤
│ │
│ Enter your domain: │
│ ┌─────────────────────────────────────────┐ │
│ │ zahnarzt-zuerich.ch │ │
│ └─────────────────────────────────────────┘ │
│ │
│ [Continue →] │
│ │
└─────────────────────────────────────────────────┘
```
**Schritt 2: Intent-Erkennung (automatisch)**
```
┌─────────────────────────────────────────────────┐
│ Intent Detected │
├─────────────────────────────────────────────────┤
│ │
│ Domain: zahnarzt-zuerich.ch │
│ │
│ 🧠 Detected Intent: │
│ ┌─────────────────────────────────────────┐ │
│ │ 🏥 MEDICAL / DENTAL │ │
│ │ │ │
│ │ Keywords: zahnarzt, zuerich │ │
│ │ Confidence: 94% │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 💰 Estimated Revenue: CHF 15-45/month │
│ │
│ Recommended Partners: │
│ • Comparis (Dental Comparison) │
│ • Doctolib (Appointment Booking) │
│ │
│ [Continue →] │
│ │
└─────────────────────────────────────────────────┘
```
**Schritt 3: DNS Setup**
```
┌─────────────────────────────────────────────────┐
│ Connect Your Domain │
├─────────────────────────────────────────────────┤
│ │
│ Change your nameservers to: │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ ns1.pounce.io [📋] │ │
│ │ ns2.pounce.io [📋] │ │
│ └─────────────────────────────────────────┘ │
│ │
│ ⏳ We're checking your DNS... │
│ │
│ Status: Waiting for propagation (~10 min) │
│ │
│ [I've updated my nameservers] │
│ │
└─────────────────────────────────────────────────┘
```
**Schritt 4: Aktiviert**
```
┌─────────────────────────────────────────────────┐
│ ✅ Domain Activated! │
├─────────────────────────────────────────────────┤
│ │
│ zahnarzt-zuerich.ch is now earning. │
│ │
│ 🏥 Intent: Medical/Dental │
│ ➔ Route: Comparis Dental │
│ 💰 Est. Yield: CHF 15-45/month │
│ │
│ What happens now: │
│ • We host a minimal landing page │
│ • Visitors are routed to partners │
│ • You earn affiliate commissions │
│ • Payouts monthly (min. CHF 50) │
│ │
│ [View My Yield Dashboard] │
│ │
└─────────────────────────────────────────────────┘
```
### 2.4 Portfolio-Tab Integration (Alternative)
Statt einer separaten Seite kann "Yield" auch als **Tab in der Watchlist** integriert werden:
```
┌────────────────────────────────────────────────────────────────┐
│ [Watching] [My Portfolio] [Yield] ✨ │
└────────────────────────────────────────────────────────────────┘
```
**Vorteil:** Weniger Navigation, alles an einem Ort.
**Nachteil:** Watchlist wird komplexer.
**Empfehlung:** Starte mit separater `/terminal/yield` Seite, kann später in Portfolio integriert werden.
---
## 3. Backend-Architektur (High-Level)
### 3.1 Neue Models
```python
# backend/app/models/yield_domain.py
class YieldDomain(Base):
"""Domain activated for yield/intent routing."""
__tablename__ = "yield_domains"
id: int
user_id: int # FK → users
domain: str # "zahnarzt-zuerich.ch"
# Intent
detected_intent: str # "medical_dental"
intent_confidence: float # 0.94
intent_keywords: str # JSON: ["zahnarzt", "zuerich"]
# Routing
active_route: str # "comparis_dental"
partner_id: int # FK → affiliate_partners
# Status
status: str # "pending", "active", "paused", "inactive"
dns_verified: bool
activated_at: datetime
# Revenue
total_clicks: int
total_conversions: int
total_revenue: Decimal
created_at: datetime
updated_at: datetime
class YieldTransaction(Base):
"""Revenue events from affiliate partners."""
__tablename__ = "yield_transactions"
id: int
yield_domain_id: int # FK
event_type: str # "click", "lead", "sale"
partner_id: int
amount: Decimal
currency: str
# Attribution
referrer: str
user_agent: str
geo_country: str
# Status
status: str # "pending", "confirmed", "paid", "rejected"
confirmed_at: datetime
paid_at: datetime
created_at: datetime
class AffiliatePartner(Base):
"""Affiliate network/partner configuration."""
__tablename__ = "affiliate_partners"
id: int
name: str # "Comparis Dental"
network: str # "awin", "partnerstack", "direct"
# Matching
intent_categories: str # JSON: ["medical_dental", "medical_general"]
geo_countries: str # JSON: ["CH", "DE", "AT"]
# Payout
payout_type: str # "cpc", "cpl", "cps"
payout_amount: Decimal
payout_currency: str
# Integration
tracking_url_template: str
api_endpoint: str
api_key_encrypted: str
is_active: bool
created_at: datetime
```
### 3.2 Neue API Endpoints
```python
# backend/app/api/yield.py
@router.get("/domains")
# Liste alle Yield-Domains des Users
@router.post("/domains/activate")
# Neue Domain aktivieren (Step 1-4 Wizard)
@router.get("/domains/{domain}/intent")
# Intent-Detection für eine Domain
@router.get("/domains/{domain}/verify-dns")
# DNS-Verifizierung prüfen
@router.put("/domains/{domain}/pause")
# Routing pausieren
@router.get("/stats")
# Gesamtstatistiken (Revenue, Clicks, etc.)
@router.get("/transactions")
# Transaktions-Historie
@router.get("/payouts")
# Payout-Historie
```
### 3.3 Intent-Detection Service
```python
# backend/app/services/intent_detector.py
class IntentDetector:
"""Erkennt den Intent einer Domain basierend auf Name und TLD."""
INTENT_CATEGORIES = {
"medical_dental": {
"keywords": ["zahnarzt", "dentist", "dental", "zahn"],
"partners": ["comparis_dental", "doctolib"],
"avg_cpl": 25.00
},
"travel_hotel": {
"keywords": ["hotel", "ferien", "vacation", "resort"],
"partners": ["booking", "hotels_com"],
"avg_cpl": 15.00
},
"finance_loan": {
"keywords": ["kredit", "loan", "finanz", "hypothek"],
"partners": ["comparis_finance", "lendico"],
"avg_cpl": 50.00
},
"saas_software": {
"keywords": ["crm", "erp", "software", "tool", "app"],
"partners": ["hubspot", "partnerstack"],
"avg_cpl": 30.00
},
# ... weitere Kategorien
}
def detect(self, domain: str) -> IntentResult:
"""Analysiert Domain und gibt Intent zurück."""
name = domain.rsplit('.', 1)[0].lower()
# ... Matching-Logik
```
### 3.4 DNS/Hosting Service
```python
# backend/app/services/yield_dns.py
class YieldDNSService:
"""Verwaltet DNS und Hosting für Yield-Domains."""
async def verify_nameservers(self, domain: str) -> bool:
"""Prüft ob Domain auf ns1/ns2.pounce.io zeigt."""
async def provision_landing_page(self, domain: str, intent: str) -> str:
"""Erstellt minimale Landing Page für Routing."""
async def get_tracking_url(self, domain: str, partner_id: int) -> str:
"""Generiert Affiliate-Tracking-URL."""
```
---
## 4. Phasen-Plan
### Phase 2.1: MVP (4-6 Wochen)
| Task | Prio | Aufwand |
|------|------|---------|
| Intent-Detection Engine (Keyword-basiert) | 🔴 | 1 Woche |
| Yield-Domain Model + API | 🔴 | 1 Woche |
| `/terminal/yield` UI (Basic) | 🔴 | 1 Woche |
| DNS-Verifizierung | 🔴 | 3 Tage |
| 1 Partner-Integration (z.B. Awin) | 🔴 | 1 Woche |
| Landing Page Generator (Minimal) | 🟡 | 3 Tage |
| Transaction Tracking | 🟡 | 3 Tage |
**Ergebnis:** User können Domains aktivieren, wir routen zu 1 Partner-Netzwerk.
### Phase 2.2: Erweiterung (4 Wochen)
| Task | Prio | Aufwand |
|------|------|---------|
| Weitere Partner (5-10) | 🔴 | 2 Wochen |
| Payout-System | 🔴 | 1 Woche |
| Public Landing `/yield` | 🟡 | 3 Tage |
| Landing Page Customization | 🟡 | 3 Tage |
| Revenue Analytics Dashboard | 🟡 | 3 Tage |
### Phase 2.3: Marktplatz-Integration
| Task | Prio | Aufwand |
|------|------|---------|
| "Yield-Generating Domains" Kategorie | 🟡 | 1 Woche |
| Valuation basierend auf Yield (30x MRR) | 🟡 | 3 Tage |
| Yield-History für Käufer sichtbar | 🟡 | 3 Tage |
---
## 5. Monetarisierung
### Revenue Split
| Party | Anteil |
|-------|--------|
| **Domain Owner** | 70% |
| **Pounce** | 30% |
### Tier-Gating
| Tier | Yield-Domains | Payout Threshold |
|------|---------------|------------------|
| **Scout** | 0 (Feature locked) | — |
| **Trader** | 5 | CHF 100 |
| **Tycoon** | Unlimited | CHF 50 |
---
## 6. UX-Philosophie
### Prinzipien
1. **Zero Config:** User ändert nur Nameserver. Alles andere ist automatisch.
2. **Transparent:** Klare Anzeige was passiert, welcher Partner, welche Einnahmen.
3. **Instant Value:** Zeige geschätzten Revenue VOR Aktivierung.
4. **Trust:** Partner-Logos, echte Zahlen, keine Versprechen.
### Sprache
- ❌ "Domain Parking" (klingt nach 2005)
- ✅ "Domain Yield" / "Intent Routing"
- ❌ "Passive Income" (scammy)
- ✅ "Your domain works for you"
---
## 7. Technische Voraussetzungen
| Komponente | Benötigt | Status |
|------------|----------|--------|
| Eigene Nameserver (ns1/ns2.pounce.io) | ✅ | Neu |
| DNS-Hosting (Cloudflare API oder ähnlich) | ✅ | Neu |
| Landing Page CDN | ✅ | Neu |
| Affiliate-Netzwerk Accounts | ✅ | Neu |
| Payout-System (Stripe Connect?) | ✅ | Teilweise (Stripe existiert) |
---
## 8. Zusammenfassung
### Was ändert sich im UI?
| Bereich | Änderung |
|---------|----------|
| **Landing Page** | Neuer 4. Pillar "YIELD" + Link zu `/yield` |
| **Public `/yield`** | Neue Landingpage mit Calculator |
| **Terminal Sidebar** | Neuer Menüpunkt "YIELD" unter MANAGE |
| **`/terminal/yield`** | Neue Seite: Domain-Liste, Stats, Activate-Wizard |
| **Watchlist** | Optional: "Activate for Yield" Button bei eigenen Domains |
### Backend-Aufwand
- 3 neue Models
- 1 neuer API Router
- 2 neue Services (Intent, DNS)
- Partner-Integrationen (Awin, PartnerStack, etc.)
### Priorität
**Starte mit `/terminal/yield` + Intent-Detection + 1 Partner.**
Public Page und Marktplatz-Integration kommen später.
---
*"Domains werden keine toten Assets mehr. Sie werden autonome Agenten."*