Index IA partenaire
Le pool provider est conçu pour les partenaires à fort volume qui ne veulent pas transmettre de données personnelles mais acceptent de partager un index allégé et anonymisé. Karaba maintient un index vectorisé haute performance côté serveur.
L'index stocke skills, seniority, country et, optionnellement, un whatsapp_numberpour activer la diffusion. Nom, email et CV ne sont jamais requis. Les résultats retournent les external_id — c'est le partenaire qui fait la jointure avec ses données réelles.
whatsapp_numberAjoutez whatsapp_number lors du sync pour activer la diffusion. Utilisez POST /v1/jobs avec le champ provider_id : Karaba matche sur votre index et inclut le numéro WhatsApp dans chaque match — prêt pour POST /v1/jobs/{id}/broadcast.
Setup en 4 étapes
- 01Enregistrer le provider — POST /v1/providers — choisissez un provider_id stable (ex: "goafrica"). Une seule fois.
- 02Synchroniser l'index — POST /v1/providers/{id}/sync — envoyez vos candidats avec skills, seniority, country et whatsapp_number (optionnel).
- 03Maintenir en temps réel — POST /v1/providers/{id}/webhook — événements candidate.created / updated / deleted au fil de l'eau.
- 04Diffuser sur WhatsApp — POST /v1/jobs avec provider_id, puis POST /v1/jobs/{id}/broadcast — les candidats avec whatsapp_number sont contactés.
Endpoints
/v1/providersmatch:readEnregistrer un provider externe — une seule fois
{
"provider_id": "goafrica",
"name": "GoAfrica Online"
}{
"provider_id": "goafrica",
"name": "GoAfrica Online",
"index_count": 0,
"message": "Provider enregistré. Utilisez POST /v1/providers/{id}/sync pour indexer vos candidats."
}/v1/providers/{provider_id}/syncmatch:readSynchroniser l'index IA — bootstrap ou delta
{
"candidates": [
{
"external_id": "ga_001",
"skills": [
"react",
"typescript",
"graphql"
],
"seniority": "senior",
"country": "Togo",
"whatsapp_number": "+22891000001"
},
{
"external_id": "ga_002",
"skills": [
"python",
"django",
"postgresql"
],
"seniority": "mid",
"country": "Côte d'Ivoire",
"whatsapp_number": "+22507000002"
},
{
"external_id": "ga_003",
"skills": [
"vue",
"node",
"mongodb"
],
"seniority": "junior",
"country": "Sénégal"
}
]
}{
"provider_id": "goafrica",
"upserted": 3,
"index_count": 1247,
"last_sync_at": "2026-06-17T10:30:00Z"
}/v1/providers/{provider_id}/webhookmatch:readMise à jour temps réel — candidat créé, modifié ou supprimé
{
"event": "candidate.created",
"candidate": {
"external_id": "ga_004",
"skills": [
"flutter",
"dart",
"firebase"
],
"seniority": "mid",
"country": "Cameroun"
}
}{
"status": "indexed",
"external_id": "ga_004"
}/v1/match/runmatch:readLancer le matching sur l'index IA du provider
{
"job": {
"title": "Développeur React senior",
"skills_required": [
"react",
"typescript"
]
},
"pool": {
"type": "provider",
"provider_id": "goafrica"
},
"limit": 5
}{
"match_id": "provider_b2c3d4e5f6",
"pool_type": "provider:goafrica",
"total_results": 2,
"results": [
{
"external_id": "ga_001",
"match_score": 0.91,
"trust_score": null,
"location": "Togo",
"skills": [
"react",
"typescript",
"graphql"
]
},
{
"external_id": "ga_002",
"match_score": 0.62,
"trust_score": null,
"location": "Côte d'Ivoire",
"skills": [
"python",
"django"
]
}
],
"cached": false
}/v1/jobsjobs:writePublier une offre avec matching + diffusion WhatsApp sur le pool provider
{
"title": "Développeur React senior",
"description": "Mission 6 mois, stack React/TypeScript.",
"location": "Lomé, Togo",
"provider_id": "goafrica"
}{
"job_id": 14,
"title": "Développeur React senior",
"status": "matched",
"total_matched": 2,
"matches": [
{
"candidate_id": 1,
"external_id": "ga_001",
"full_name": null,
"location": "Togo",
"match_score": 91,
"whatsapp_number": "+22891000001",
"whatsapp_status": "not_sent",
"pool_type": "provider:goafrica"
},
{
"candidate_id": 2,
"external_id": "ga_002",
"full_name": null,
"location": "Côte d'Ivoire",
"match_score": 62,
"whatsapp_number": "+22507000002",
"whatsapp_status": "not_sent",
"pool_type": "provider:goafrica"
}
]
}/v1/providers/{provider_id}match:readStatut du provider — taille de l'index, dernière synchronisation
{
"provider_id": "goafrica",
"name": "GoAfrica Online",
"index_count": 1247,
"last_sync_at": "2026-06-17T10:30:00Z",
"created_at": "2026-06-01T08:00:00Z"
}Événements webhook
| Événement | Description |
|---|---|
candidate.created | Nouveau candidat à indexer — champ candidate requis |
candidate.updated | Candidat modifié — upsert par external_id |
candidate.deleted | Candidat supprimé — champ external_id requis |