# Aplikasi Kencan

Kecocokan Astrologi adalah faktor pendorong retensi di aplikasi kencan seperti Bumble, Hinge, Tinder, Tantan, dan di aplikasi yang mengutamakan astrologi seperti NUiT, Struck. AstroWay API menyediakan skor sinastri siap pakai 0–100 dalam satu panggilan — tanpa mesin ephemeris kamu sendiri dan tanpa lisensi Solar Fire ($495).

## Bagaimana Cara Kerjanya

1. Pengguna memasukkan tanggal, waktu, dan tempat lahir saat pendaftaran
2. Saat ada kecocokan — backend kamu memanggil `/v1/synastry` dengan data kedua orang
3. API mengembalikan `compatibility.score` (0–100) dan `label` (harmonious/balanced/mixed/challenging)
4. Skor digunakan sebagai salah satu faktor pemeringkatan

```
Algoritma Kecocokan
  ├── Kedekatan lokasi         (40%)
  ├── Minat yang sama          (30%)
  ├── Kecocokan Astrologi      (20%)  ← AstroWay API
  └── Sinyal lainnya           (10%)
```

## Endpoint Utama

| Endpoint | Kredit | Apa yang Dikembalikan |
|---|---|---|
| `/v1/synastry` | 50 | Aspek silang + skor 0–100 |
| `/v1/human-design/compatibility` | 100 | Kecocokan HD (tipe + strategi) |
| `/v1/horoscope/compatibility` | 50 | Analisis teks kecocokan |

## Pola Integrasi

```ts
// Saat ada kecocokan — panggil sinastri
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">
Hasil sinastri tidak berubah (hanya bergantung pada tanggal lahir). Cache pasangan `(userA_id, userB_id) → skor` di DB kamu. Satu panggilan API — dan kamu tidak perlu menghitung ulang lagi.
</Aside>

## Estimasi Anggaran

### Skenario: 1.000 Kecocokan Baru per Hari

| Metrik | Nilai |
|---|---|
| Kecocokan/hari | 1.000 |
| Kredit/kecocokan | 50 (synastry) |
| Kredit/hari | 50.000 |
| Kredit/bulan | ~1.500.000 |
| Paket | **Business ($199/bulan, 3.500.000 kredit)** |

### Skenario: 50 Kecocokan per Hari (Startup)

| Metrik | Nilai |
|---|---|
| Kecocokan/hari | 50 |
| Kredit/hari | 2.500 |
| Kredit/bulan | ~75.000 |
| Paket | **Starter ($19/bulan, 200.000 kredit)** |

### Optimasi

- **Caching** — simpan skor di DB, jangan hitung ulang
- **Pemrosesan malas** — hitung sinastri hanya saat pengguna membuka kecocokan, bukan untuk semua pasangan potensial
- **Perhitungan batch saat pendaftaran** — hitung kecocokan dengan 20 kecocokan potensial teratas sekaligus

## Tanpa Waktu Lahir

Jika pengguna tidak mengetahui waktu — kirimkan `"time": "12:00:00"` (tengah hari). Rumah-rumah akan kurang akurat, tetapi posisi planet dan aspek silang — benar. Skor kecocokan tetap informatif.

Untuk kecocokan HD, waktu lebih penting — pertimbangkan `hd/sensitivity` untuk mengevaluasi dampak waktu yang tidak akurat.

<CardGrid>
  <LinkCard title="Synastry API →" href="/products/synastry-api/" description="Detail tentang endpoint kecocokan" />
  <LinkCard title="Mulai Cepat" href="/getting-started/" description="Permintaan pertama dalam 5 menit" />
  <LinkCard title="Harga" href="/pricing/" description="Dari gratis hingga Enterprise" />
</CardGrid>
