507 lines
21 KiB
Markdown
507 lines
21 KiB
Markdown
# 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."*
|
||
|