21 KiB
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
# 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
# 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
# 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
# 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
- Zero Config: User ändert nur Nameserver. Alles andere ist automatisch.
- Transparent: Klare Anzeige was passiert, welcher Partner, welche Einnahmen.
- Instant Value: Zeige geschätzten Revenue VOR Aktivierung.
- 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."