# Applications de rencontre

L'astrologie est un moteur de rétention dans les applications de rencontre comme Bumble, Hinge, Tinder, Tantan, ainsi que dans les applications astro-first comme NUiT ou Struck. L'API AstroWay fournit un score de synastrie clé en main de 0 à 100 en un seul appel — sans avoir à gérer ton propre moteur d'éphémérides ni à payer une licence Solar Fire (495 $).

## Comment ça fonctionne

1. L'utilisateur saisit sa date, heure et lieu de naissance lors de l'inscription
2. Lors d'un match, ton backend appelle `/v1/synastry` avec les données des deux personnes
3. L'API renvoie `compatibility.score` (0–100) et `label` (harmonieux/équilibré/mixte/difficile)
4. Le score est utilisé comme l'un des facteurs de classement

```
Algorithme de matching
  ├── Proximité géographique    (40%)
  ├── Centres d'intérêt communs (30%)
  ├── Compatibilité astrologique (20%) ← API AstroWay
  └── Autres signaux            (10%)
```

## Points de terminaison clés

| Endpoint | Crédits | Retourne |
|---|---|---|
| `/v1/synastry` | 50 | Aspects croisés + score 0–100 |
| `/v1/human-design/compatibility` | 100 | Compatibilité HD (type + stratégie) |
| `/v1/horoscope/compatibility` | 50 | Analyse textuelle de la compatibilité |

## Modèle d'intégration

```ts
// Lors d'un match — appelle la synastrie
async function getCompatibility(userA: UserProfile, userB: UserProfile) {
  const result = await astrowayClient.synastry({
    chart1: {
      date: userA.birthDate,
      time: userA.birthTime || '12:00:00', // midi par défaut si inconnu
      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,      // "harmonious"
    harmony: result.compatibility.harmony,  // somme pondérée
    tension: result.compatibility.tension,
  };
}
```

<Aside type="tip">
Le résultat de la synastrie est immuable (dépend uniquement des dates de naissance). Mets en cache la paire `(userA_id, userB_id) → score` dans ta base de données. Un seul appel API et plus besoin de recalculer.
</Aside>

## Estimation du budget

### Scénario : 1 000 nouveaux matchs par jour

| Métrique | Valeur |
|---|---|
| Matchs/jour | 1 000 |
| Crédits/match | 50 (synastrie) |
| Crédits/jour | 50 000 |
| Crédits/mois | ~1 500 000 |
| Tarif | **Business (199 $/mois, 3 500 000 crédits)** |

### Scénario : 50 matchs par jour (startup)

| Métrique | Valeur |
|---|---|
| Matchs/jour | 50 |
| Crédits/jour | 2 500 |
| Crédits/mois | ~75 000 |
| Tarif | **Starter (19 $/mois, 200 000 crédits)** |

### Optimisation

- **Mise en cache** — stocke le score dans ta base de données, ne recalcule pas
- **Traitement paresseux** — calcule la synastrie uniquement lorsque l'utilisateur ouvre le match, pas pour toutes les paires potentielles
- **Calcul par lots à l'inscription** — calcule la compatibilité avec les 20 meilleurs matchs potentiels dès l'inscription

## Sans heure de naissance

Si l'utilisateur ne connaît pas l'heure — passe `"time": "12:00:00"` (midi). Les maisons seront moins précises, mais les positions planétaires et les aspects croisés seront corrects. Le score de compatibilité reste informatif.

Pour la compatibilité HD, l'heure est plus importante — considère `hd/sensitivity` pour évaluer l'impact d'une heure imprécise.

<CardGrid>
  <LinkCard title="Synastry API →" href="/products/synastry-api/" description="Détails sur les endpoints de compatibilité" />
  <LinkCard title="Démarrage rapide" href="/getting-started/" description="Ta première requête en 5 minutes" />
  <LinkCard title="Tarifs" href="/pricing/" description="De gratuit à Enterprise" />
</CardGrid>
