From 3cbb4dd40dbd126c3d39a13afc7d87f94edec7bf Mon Sep 17 00:00:00 2001 From: "yves.gugger" Date: Fri, 12 Dec 2025 14:23:32 +0100 Subject: [PATCH] docs: yield/intent routing integration concept --- YIELD_INTEGRATION_CONCEPT.md | 506 +++++++++++++++++++++++++++++++++++ 1 file changed, 506 insertions(+) create mode 100644 YIELD_INTEGRATION_CONCEPT.md diff --git a/YIELD_INTEGRATION_CONCEPT.md b/YIELD_INTEGRATION_CONCEPT.md new file mode 100644 index 0000000..3e32db6 --- /dev/null +++ b/YIELD_INTEGRATION_CONCEPT.md @@ -0,0 +1,506 @@ +# 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."* +