Les endpoints du navigateur sont proxifiés sous
/agent/* (vers la console). Mongo = source de vérité ; les actions LinkedIn passent par l'extension (dosées). :id = profileId / jobId / companyId.🎯 Matching
GET
/agent/candidate/:id/offersOffres qui matchent un candidat — score décomposé en 5 axes (poste/séniorité/skills/sémantique/loc) + composite par branche.GET
/agent/offer/:id/matchesCandidats qui matchent une offre (matching inverse).POST
/agent/candidate/:id/offers/rerankRerank LLM (Gemma) du top-K par adéquation réelle. Body { jobIds }.POST
/agent/match/feedback👍/👎 sur une paire candidat↔offre + snapshot des axes (vérité terrain). Body { candidateId, jobId, label, branch, axes }.GET
/agent/match/learningAccumulation du feedback + pouvoir discriminant par axe/branche + poids suggérés.POST
/agent/match/recalibrateApplique les poids appris (branches avec ≥20 feedback).🔁 Réseau & boucle
GET
/agent/network/cockpitEntonnoir : connexions → décideurs détectés → enrichis → à enrichir (par catégorie).POST
/agent/network/decideursEnrichit les décideurs du réseau (public, 40/jour, goutte-à-goutte).GET
/agent/network/warm-offersÉtape 2 : rôles que ton réseau peut remplir, triés par nb de profils tièdes.GET
/agent/network/people-for-roleProfils réseau pour un rôle (drill). Query role, family.GET
/agent/network/gapsÉtape 3 : rôles en tension où le réseau est mince.GET
/agent/connections/statusComptes déjà connectés à des vanities (levier réseau). Query vanities.✨ Enrichissement & file
POST
/agent/enrich-profileMet UN profil en file d'enrichissement extension (priorité haute). Body { profileId }.POST
/agent/queue/enqueue-enrichEnrichissement en masse par filtre. Body { filter, limit }.POST
/agent/enrich-recruiter/runProfils complets (Recruiter) pour tous les lites.POST
/agent/queue/launchLance une campagne (planner). Body { type }.GET
/agent/queue/statsÉtat de la file (par statut/type).GET
/agent/queue/listJobs. Query status, type, limit.🔍 Recherche (Typesense)
GET
/agent/searchRecherche candidats/offres/entreprises/écoles. Query type, q, semantic=1, inNetwork=1, + facettes.POST
/agent/search/backfillRé-indexe depuis Mongo (upsert non destructif).POST
/agent/search/reindexReindex (upsert par défaut ; ?hard=1 = reconstruction from scratch).👥 Candidats & offres
GET
/api/candidatsListe paginée + filtres (app). Query skip, limit, status, family, role, contract, q…GET
/api/candidats/facetsFacettes du vivier (familles, rôles, séniorité, contrat, sources).GET
/agent/candidate/:id/peersSkills probables via les pairs (micro-BI).GET
/agent/jobs/savedOffres stockées. Query companyId, limit.GET
/agent/jobs/searchRecherche publique LinkedIn (extraction).🏢 Entreprises & écoles
GET
/agent/company/:id/insightsProfils sourcés (avec flag actuel/ancien) + répartitions.GET
/agent/company/:id/sourcing« À sourcer » : offres × vivier par rôle.GET
/agent/company/:id/decideursDécideurs de ton vivier chez cette entreprise.POST
/agent/companies/dedupe/planPlan de déduplication (exact + arbitrage LLM). apply pour fusionner.GET
/agent/school/:id/candidatesAlumni sourcés d'une école.📊 Observabilité & admin
GET
/agent/healthSanté (Mongo, Dragonfly, extension, jobs 1h).GET
/agent/telemetryJournaux capés. Query coll (job_history, extension_errors, account_events…).GET
/agent/auditJournal d'audit (qui a fait quoi).GET
/agent/rateDébit par compte (quotas).GET
/agent/admin/settingsRéglages de cadence (POST pour modifier à chaud).GET
/agent/linkedin-actionsCatalogue des actions LinkedIn testables (voir la page Actions).Concepts → Documentation · processus → Workflow.