# 🌐 Zone File Access — Anleitung zur Datenhoheit

---

## Was sind Zone Files?

Zone Files sind die **Master-Listen** aller registrierten Domains pro TLD (Top-Level-Domain). Sie werden täglich von den Registries aktualisiert und enthalten:

- **Alle aktiven Domains** einer TLD
- **Nameserver-Informationen**
- **Keine WHOIS-Daten** (nur Domain + NS)

**Beispiel `.com` Zone File (vereinfacht):**
```
example.com.  86400  IN  NS  ns1.example.com.
example.com.  86400  IN  NS  ns2.example.com.
google.com.   86400  IN  NS  ns1.google.com.
...
```

---

## Warum Zone Files = Unicorn?

| Vorteil | Beschreibung |
|---------|--------------|
| **Drop Prediction** | Domains die aus der Zone verschwinden = droppen in 1-5 Tagen |
| **Exklusive Intel** | Diese Domains sind NOCH NICHT in Auktionen |
| **Früher als Konkurrenz** | Backorder setzen bevor andere es wissen |
| **Trend-Analyse** | Welche Keywords werden gerade registriert? |
| **Daten-Monopol** | Gefilterte, cleane Daten vs. Spam-Flut von ExpiredDomains |

---

## Registries und Zugang

### Tier 1: Critical TLDs (Sofort beantragen)

| Registry | TLDs | Domains | Link |
|----------|------|---------|------|
| **Verisign** | `.com`, `.net` | ~160M + 13M | [Zone File Access](https://www.verisign.com/en_US/channel-resources/domain-registry-products/zone-file/index.xhtml) |
| **PIR** | `.org` | ~10M | [Zone File Access Program](https://tld.org/zone-file-access/) |
| **Afilias** | `.info` | ~4M | Contact: registry@afilias.info |

### Tier 2: Premium TLDs (Phase 2)

| Registry | TLDs | Fokus |
|----------|------|-------|
| **CentralNIC** | `.io`, `.co` | Startups |
| **Google** | `.app`, `.dev` | Tech |
| **Donuts** | `.xyz`, `.online`, etc. | Volumen |
| **SWITCH** | `.ch` | Schweizer Markt |

---

## Bewerbungsprozess: Verisign (.com/.net)

### 1. Voraussetzungen

- Gültige Firma/Organisation
- Technische Infrastruktur für große Datenmengen (~500GB/Tag)
- Akzeptanz der Nutzungsbedingungen (keine Resale der Rohdaten)

### 2. Online-Bewerbung

1. Gehe zu: https://www.verisign.com/en_US/channel-resources/domain-registry-products/zone-file/index.xhtml
2. Klicke auf "Request Zone File Access"
3. Fülle das Formular aus:
   - **Organization Name:** GenTwo AG
   - **Purpose:** Domain research and analytics platform
   - **Contact:** (technischer Ansprechpartner)

### 3. Wartezeit

- **Review:** 1-4 Wochen
- **Genehmigung:** Per E-Mail mit FTP/HTTPS Zugangsdaten

### 4. Kosten

- **Verisign:** Kostenlos für nicht-kommerzielle/Forschungszwecke
- **Kommerzielle Nutzung:** $10,000/Jahr (verhandelbar)

---

## Technische Integration

### Server-Anforderungen

```yaml
# Minimale Infrastruktur
CPU: 16+ Cores (parallele Verarbeitung)
RAM: 64GB+ (effizientes Set-Diffing)
Storage: 2TB SSD (Zone Files + History)
Network: 1Gbps (schneller Download)

# Geschätzte Kosten
Provider: Hetzner/OVH Dedicated
Preis: ~$300-500/Monat
```

### Processing Pipeline

```
04:00 UTC  │ Zone File Download (FTP/HTTPS)
           │ └─→ ~500GB komprimiert für .com/.net
           │
04:30 UTC  │ Decompression & Parsing
           │ └─→ Extrahiere Domain-Namen
           │
05:00 UTC  │ Diff Analysis
           │ └─→ Vergleiche mit gestern
           │ └─→ NEU: Neue Registrierungen
           │ └─→ WEG: Potentielle Drops
           │
05:30 UTC  │ Quality Scoring (Pounce Algorithm)
           │ └─→ Filtere Spam raus (99%+)
           │ └─→ Nur Premium-Domains durchlassen
           │
06:00 UTC  │ Database Update
           │ └─→ PostgreSQL: pounce_zone_drops
           │
06:15 UTC  │ Alert Matching
           │ └─→ Sniper Alerts triggern
           │
06:30 UTC  │ User Notifications
           │ └─→ E-Mail/SMS für Tycoon-User
```

### Datenbank-Schema (geplant)

```sql
-- Zone File Drops
CREATE TABLE pounce_zone_drops (
    id SERIAL PRIMARY KEY,
    domain VARCHAR(255) NOT NULL,
    tld VARCHAR(20) NOT NULL,
    
    -- Analyse
    pounce_score INT NOT NULL,
    estimated_value DECIMAL(10,2),
    
    -- Status
    detected_at TIMESTAMP DEFAULT NOW(),
    estimated_drop_date TIMESTAMP,
    status VARCHAR(20) DEFAULT 'pending', -- pending, dropped, backordered, registered
    
    -- Tracking
    notified_users INT DEFAULT 0,
    backorder_count INT DEFAULT 0,
    
    UNIQUE(domain)
);

-- Index für schnelle Suche
CREATE INDEX idx_zone_drops_score ON pounce_zone_drops(pounce_score DESC);
CREATE INDEX idx_zone_drops_date ON pounce_zone_drops(estimated_drop_date);
```

---

## Der Pounce Algorithm — Zone File Edition

```python
# backend/app/services/zone_analyzer.py (ZU BAUEN)

class ZoneFileAnalyzer:
    """
    Analysiert Zone Files und findet Premium-Opportunities.
    
    Input: Raw Zone File (Millionen von Domains)
    Output: Gefilterte Premium-Liste (Hunderte)
    """
    
    async def analyze_drops(self, yesterday: set, today: set) -> list:
        """
        Findet Domains die aus der Zone verschwunden sind.
        Diese Domains droppen in 1-5 Tagen (Redemption Period).
        """
        dropped = yesterday - today  # Set-Differenz
        
        premium_drops = []
        for domain in dropped:
            score = self.calculate_pounce_score(domain)
            
            # Nur Premium durchlassen (>70 Score)
            if score >= 70:
                premium_drops.append({
                    "domain": domain,
                    "score": score,
                    "drop_date": self.estimate_drop_date(domain),
                    "estimated_value": self.estimate_value(domain),
                })
        
        return sorted(premium_drops, key=lambda x: x['score'], reverse=True)
    
    def calculate_pounce_score(self, domain: str) -> int:
        """
        Der Pounce Algorithm — Qualitätsfilter für Domains.
        
        Faktoren:
        - Länge (kurz = wertvoll)
        - TLD (com > io > xyz)
        - Keine Zahlen/Bindestriche
        - Dictionary Word Bonus
        """
        name = domain.rsplit('.', 1)[0]
        tld = domain.rsplit('.', 1)[1]
        score = 50  # Baseline
        
        # Längen-Score (exponentiell für kurze Domains)
        length_scores = {1: 50, 2: 45, 3: 40, 4: 30, 5: 20, 6: 15, 7: 10}
        score += length_scores.get(len(name), max(0, 15 - len(name)))
        
        # TLD Premium
        tld_scores = {'com': 20, 'ai': 25, 'io': 18, 'co': 12, 'ch': 15, 'de': 10}
        score += tld_scores.get(tld, 0)
        
        # Penalties
        if '-' in name: score -= 30
        if any(c.isdigit() for c in name): score -= 20
        if len(name) > 12: score -= 15
        
        return max(0, min(100, score))
```

---

## Feature: "Drops Tomorrow" (Tycoon Exclusive)

```
┌─────────────────────────────────────────────────────────────────┐
│ 🔮 DROPS TOMORROW — Tycoon Exclusive ($29/mo)                    │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Diese Domains sind NICHT in Auktionen!                         │
│  Du kannst sie beim Registrar direkt registrieren.              │
│                                                                  │
│  ─────────────────────────────────────────────────────────────  │
│                                                                  │
│  Domain           TLD    Score   Est. Value   Drops In          │
│  ─────────────────────────────────────────────────────────────  │
│  pixel.com        .com   95      $50,000      23h 45m           │
│  swift.io         .io    88      $8,000       23h 12m           │
│  quantum.ai       .ai    92      $25,000      22h 58m           │
│  nexus.dev        .dev   84      $4,500       22h 30m           │
│  fusion.co        .co    81      $3,200       21h 15m           │
│                                                                  │
│  ─────────────────────────────────────────────────────────────  │
│                                                                  │
│  💡 Pro Tip: Setze bei deinem Registrar einen Backorder         │
│              für diese Domains. Wer zuerst kommt...             │
│                                                                  │
│  [🔔 Alert für "pixel.com" setzen]                              │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
```

---

## Roadmap

### Phase 1: Jetzt (Bewerbung)
- [ ] Verisign Zone File Access beantragen
- [ ] PIR (.org) Zone File Access beantragen
- [ ] Server-Infrastruktur planen

### Phase 2: 3-6 Monate (Integration)
- [ ] Download-Pipeline bauen
- [ ] Diff-Analyse implementieren
- [ ] Pounce Algorithm testen
- [ ] "Drops Tomorrow" Feature für Tycoon

### Phase 3: 6-12 Monate (Skalierung)
- [ ] Weitere TLDs (.io, .co, .ch, .de)
- [ ] Historische Trend-Analyse
- [ ] Keyword-Tracking
- [ ] Enterprise Features

---

## Risiken und Mitigierung

| Risiko | Wahrscheinlichkeit | Mitigierung |
|--------|-------------------|-------------|
| Ablehnung durch Registry | Mittel | Klare Business-Case, ggf. Partnerschaften |
| Hohe Serverkosten | Niedrig | Cloud-Skalierung, nur Premium-TLDs |
| Konkurrenz kopiert | Mittel | First-Mover-Vorteil, besserer Algorithmus |
| Datenqualität | Niedrig | Mehrere Quellen, Validierung |

---

## Nächster Schritt

**Aktion für diese Woche:**

1. **Verisign bewerben:** https://www.verisign.com/en_US/channel-resources/domain-registry-products/zone-file/index.xhtml
2. **E-Mail an PIR:** zone-file-access@pir.org
3. **Server bei Hetzner reservieren:** AX101 Dedicated (~€60/Monat)

---

## Zusammenfassung

Zone Files sind der **Schlüssel zur Datenhoheit**. Während die Konkurrenz auf Scraping setzt, werden wir die Rohdaten direkt von der Quelle haben — und mit dem Pounce Algorithm filtern, sodass nur Premium-Opportunities zu unseren Usern gelangen.

**Das ist der Unicorn-Treiber.** 🦄

