# Дейтинг-застосунки

Астрологічна сумісність — retention-driver у дейтинг-застосунках на кшталт Bumble, Hinge, Tinder, Tantan і у astro-first-додатках типу NUiT, Struck. AstroWay API дає готовий synastry-бал 0–100 з одного виклику — без власного движка ефемерид і без ліцензії Solar Fire ($495).

## Як це працює

1. Користувач вводить дату, час і місце народження при реєстрації
2. При метчі — ваш бекенд викликає `/v1/synastry` з даними обох людей
3. API повертає `compatibility.score` (0–100) і `label` (harmonious/balanced/mixed/challenging)
4. Бал використовується як один з факторів ранжування

```
Алгоритм метчингу
  ├── Близкість локації         (40%)
  ├── Спільні інтереси          (30%)
  ├── Астрологічна сумісність   (20%)  ← AstroWay API
  └── Інші сигнали              (10%)
```

## Ключові ендпоінти

| Ендпоінт | Кредити | Що повертає |
|---|---|---|
| `/v1/synastry` | 50 | Крос-аспекти + бал 0–100 |
| `/v1/human-design/compatibility` | 100 | HD-сумісність (тип + стратегія) |
| `/v1/horoscope/compatibility` | 50 | Текстовий аналіз сумісності |

## Інтеграційний паттерн

```ts
// При метчі — викликати синастрію
async function getCompatibility(userA: UserProfile, userB: UserProfile) {
  const result = await astrowayClient.synastry({
    chart1: {
      date: userA.birthDate,
      time: userA.birthTime || '12:00:00', // noon default if unknown
      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,  // weighted sum
    tension: result.compatibility.tension,
  };
}
```

<Aside type="tip">
Результат синастрії — незмінний (залежить тільки від дат народження). Кешуйте пару `(userA_id, userB_id) → бал` у своїй БД. Один виклик API — і більше не потрібно перераховувати.
</Aside>

## Оцінка бюджету

### Сценарій: 1 000 нових метчів на день

| Метрика | Значення |
|---|---|
| Метчів/день | 1 000 |
| Кредитів/метч | 50 (synastry) |
| Кредитів/день | 50 000 |
| Кредитів/місяць | ~1 500 000 |
| Тариф | **Business ($199/міс, 3 500 000 кредитів)** |

### Сценарій: 50 метчів на день (стартап)

| Метрика | Значення |
|---|---|
| Метчів/день | 50 |
| Кредитів/день | 2 500 |
| Кредитів/місяць | ~75 000 |
| Тариф | **Starter ($19/міс, 200 000 кредитів)** |

### Оптимізація

- **Кешування** — зберігайте бал у БД, не перераховуйте
- **Лінива обробка** — рахуйте синастрію тільки коли користувач відкриває метч, а не для всіх потенційних пар
- **Пакетний розрахунок при реєстрації** — порахуйте сумісність з топ-20 потенційних метчів одразу

## Без часу народження

Якщо користувач не знає час — передайте `"time": "12:00:00"` (полудень). Будинки будуть менш точними, але планетарні позиції та крос-аспекти — правильні. Бал сумісності залишається інформативним.

Для HD-сумісності час важливіший — розглядайте `hd/sensitivity` для оцінки впливу неточного часу.

<CardGrid>
  <LinkCard title="Synastry API →" href="/products/synastry-api/" description="Детально про ендпоінти сумісності" />
  <LinkCard title="Швидкий старт" href="/getting-started/" description="Перший запит за 5 хвилин" />
  <LinkCard title="Тарифи" href="/pricing/" description="Від безкоштовного до Enterprise" />
</CardGrid>
