# Dating-Apps

Astrologische Kompatibilität ist ein entscheidender Faktor für Dating-Apps wie Bumble, Hinge, Tinder, Tantan und astro-first-Apps wie NUiT oder Struck. Die AstroWay API liefert mit einem einzigen Aufruf einen fertigen Synastrie-Score von 0–100 – ohne eigenen Ephemeriden-Engine und ohne teure Lizenz von Solar Fire ($495).

## So funktioniert es

1. Der Nutzer gibt bei der Registrierung Geburtsdatum, -zeit und -ort ein
2. Bei einem Match ruft dein Backend `/v1/synastry` mit den Daten beider Personen auf
3. Die API liefert `compatibility.score` (0–100) und `label` (harmonisch/ausgewogen/misch/konfliktträchtig)
4. Der Score wird als einer der Faktoren für die Ranking-Berechnung verwendet

```
Match-Algorithmus
  ├── Standortnähe           (40%)
  ├── Gemeinsame Interessen   (30%)
  ├── Astrologische Kompatibilität (20%) ← AstroWay API
  └── Andere Signale          (10%)
```

## Wichtige Endpunkte

| Endpunkt | Credits | Rückgabe |
|---|---|---|
| `/v1/synastry` | 50 | Kreuz-Aspekte + Score 0–100 |
| `/v1/human-design/compatibility` | 100 | HD-Kompatibilität (Typ + Strategie) |
| `/v1/horoscope/compatibility` | 50 | Textanalyse der Kompatibilität |

## Integrationsmuster

```ts
// Bei einem Match die Synastrie abrufen
async function getCompatibility(userA: UserProfile, userB: UserProfile) {
  const result = await astrowayClient.synastry({
    chart1: {
      date: userA.birthDate,
      time: userA.birthTime || '12:00:00', // Standard auf Mittag, falls unbekannt
      timezoneOffset: userA.tzOffset,
      latitude: userA.birthLat,
      longitude: userA.birthLng,
    },
    chart2: {
      date: userB.birthDate,
      time: userB.birthTime || '12:00:00',
      timezoneOffset: userB.tzOffset,
      latitude: userB.birthLat,
      longitude: userB.birthLng,
    },
  });

  return {
    score: result.compatibility.score,      // 0-100
    label: result.compatibility.label,      // "harmonisch"
    harmony: result.compatibility.harmony,  // gewichtete Summe
    tension: result.compatibility.tension,
  };
}
```

<Aside type="tip">
Das Ergebnis der Synastrie ist unveränderlich (abhängig nur von den Geburtsdaten). Speichere das Paar `(userA_id, userB_id) → Score` in deiner Datenbank. Ein API-Aufruf reicht – du musst nicht mehr neu berechnen.
</Aside>

## Budgetplanung

### Szenario: 1.000 neue Matches pro Tag

| Kennzahl | Wert |
|---|---|
| Matches/Tag | 1.000 |
| Credits/Match | 50 (Synastrie) |
| Credits/Tag | 50.000 |
| Credits/Monat | ~1.500.000 |
| Tarif | **Business ($199/Monat, 3.500.000 Credits)** |

### Szenario: 50 Matches pro Tag (Startup)

| Kennzahl | Wert |
|---|---|
| Matches/Tag | 50 |
| Credits/Tag | 2.500 |
| Credits/Monat | ~75.000 |
| Tarif | **Starter ($19/Monat, 200.000 Credits)** |

### Optimierung

- **Caching** – Speichere den Score in der Datenbank und berechne nicht neu
- **Lazy Processing** – Berechne die Synastrie erst, wenn der Nutzer den Match öffnet, nicht für alle potenziellen Paare
- **Batch-Berechnung bei der Registrierung** – Berechne die Kompatibilität mit den Top-20 potenziellen Matches direkt

## Ohne Geburtszeit

Falls der Nutzer die Zeit nicht kennt – übergebe `"time": "12:00:00"` (Mittag). Die Häuser werden weniger präzise, aber die Planetenpositionen und Kreuz-Aspekte stimmen. Der Kompatibilitäts-Score bleibt aussagekräftig.

Für HD-Kompatibilität ist die Zeit wichtiger – betrachte `hd/sensitivity` zur Bewertung des Einflusses ungenauer Zeiten.

<CardGrid>
  <LinkCard title="Synastry API →" href="/products/synastry-api/" description="Details zu den Kompatibilitäts-Endpunkten" />
  <LinkCard title="Schnellstart" href="/getting-started/" description="Erster Request in 5 Minuten" />
  <LinkCard title="Preise" href="/pricing/" description="Von kostenlos bis Enterprise" />
</CardGrid>
